@inertiajs/core 1.0.14 → 1.0.16

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 CHANGED
@@ -1,4 +1,4 @@
1
- import{default as B}from"axios";function R(t,e){let i;return function(...n){clearTimeout(i),i=setTimeout(()=>t.apply(this,n),e)}}function f(t,e){return document.dispatchEvent(new CustomEvent(`inertia:${t}`,e))}var M=t=>f("before",{cancelable:!0,detail:{visit:t}}),j=t=>f("error",{detail:{errors:t}}),H=t=>f("exception",{cancelable:!0,detail:{exception:t}}),N=t=>f("finish",{detail:{visit:t}}),$=t=>f("invalid",{cancelable:!0,detail:{response:t}}),S=t=>f("navigate",{detail:{page:t}}),q=t=>f("progress",{detail:{progress:t}}),W=t=>f("start",{detail:{visit:t}}),K=t=>f("success",{detail:{page:t}});function I(t){return t instanceof File||t instanceof Blob||t instanceof FileList&&t.length>0||t instanceof FormData&&Array.from(t.values()).some(e=>I(e))||typeof t=="object"&&t!==null&&Object.values(t).some(e=>I(e))}function A(t,e=new FormData,i=null){t=t||{};for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&J(e,X(i,n),t[n]);return e}function X(t,e){return t?t+"["+e+"]":e}function J(t,e,i){if(Array.isArray(i))return Array.from(i.keys()).forEach(n=>J(t,X(e,n.toString()),i[n]));if(i instanceof Date)return t.append(e,i.toISOString());if(i instanceof File)return t.append(e,i,i.name);if(i instanceof Blob)return t.append(e,i);if(typeof i=="boolean")return t.append(e,i?"1":"0");if(typeof i=="string")return t.append(e,i);if(typeof i=="number")return t.append(e,`${i}`);if(i==null)return t.append(e,"");A(i,t,e)}var z={modal:null,listener:null,show(t){typeof t=="object"&&(t=`All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.<hr>${JSON.stringify(t)}`);let e=document.createElement("html");e.innerHTML=t,e.querySelectorAll("a").forEach(n=>n.setAttribute("target","_top")),this.modal=document.createElement("div"),this.modal.style.position="fixed",this.modal.style.width="100vw",this.modal.style.height="100vh",this.modal.style.padding="50px",this.modal.style.boxSizing="border-box",this.modal.style.backgroundColor="rgba(0, 0, 0, .6)",this.modal.style.zIndex=2e5,this.modal.addEventListener("click",()=>this.hide());let i=document.createElement("iframe");if(i.style.backgroundColor="white",i.style.borderRadius="5px",i.style.width="100%",i.style.height="100%",this.modal.appendChild(i),document.body.prepend(this.modal),document.body.style.overflow="hidden",!i.contentWindow)throw new Error("iframe not yet ready.");i.contentWindow.document.open(),i.contentWindow.document.write(e.outerHTML),i.contentWindow.document.close(),this.listener=this.hideOnEscape.bind(this),document.addEventListener("keydown",this.listener)},hide(){this.modal.outerHTML="",this.modal=null,document.body.style.overflow="visible",document.removeEventListener("keydown",this.listener)},hideOnEscape(t){t.keyCode===27&&this.hide()}};import te from"deepmerge";import*as O from"qs";function v(t){return new URL(t.toString(),window.location.toString())}function k(t,e,i,n="brackets"){let o=/^https?:\/\//.test(e.toString()),c=o||e.toString().startsWith("/"),h=!c&&!e.toString().startsWith("#")&&!e.toString().startsWith("?"),m=e.toString().includes("?")||t==="get"&&Object.keys(i).length,b=e.toString().includes("#"),a=new URL(e.toString(),"http://localhost");return t==="get"&&Object.keys(i).length&&(a.search=O.stringify(te(O.parse(a.search,{ignoreQueryPrefix:!0}),i),{encodeValuesOnly:!0,arrayFormat:n}),i={}),[[o?`${a.protocol}//${a.host}`:"",c?a.pathname:"",h?a.pathname.substring(1):"",m?a.search:"",b?a.hash:""].join(""),i]}function w(t){return t=new URL(t.href),t.hash="",t}var _=typeof window>"u",C=class{constructor(){this.visitId=null}init({initialPage:e,resolveComponent:i,swapComponent:n}){this.page=e,this.resolveComponent=i,this.swapComponent=n,this.setNavigationType(),this.clearRememberedStateOnReload(),this.isBackForwardVisit()?this.handleBackForwardVisit(this.page):this.isLocationVisit()?this.handleLocationVisit(this.page):this.handleInitialPageVisit(this.page),this.setupEventListeners()}setNavigationType(){this.navigationType=window.performance&&window.performance.getEntriesByType("navigation").length>0?window.performance.getEntriesByType("navigation")[0].type:"navigate"}clearRememberedStateOnReload(){this.navigationType==="reload"&&window.history.state?.rememberedState&&delete window.history.state.rememberedState}handleInitialPageVisit(e){this.page.url+=window.location.hash,this.setPage(e,{preserveState:!0}).then(()=>S(e))}setupEventListeners(){window.addEventListener("popstate",this.handlePopstateEvent.bind(this)),document.addEventListener("scroll",R(this.handleScrollEvent.bind(this),100),!0)}scrollRegions(){return document.querySelectorAll("[scroll-region]")}handleScrollEvent(e){typeof e.target.hasAttribute=="function"&&e.target.hasAttribute("scroll-region")&&this.saveScrollPositions()}saveScrollPositions(){this.replaceState({...this.page,scrollRegions:Array.from(this.scrollRegions()).map(e=>({top:e.scrollTop,left:e.scrollLeft}))})}resetScrollPositions(){window.scrollTo(0,0),this.scrollRegions().forEach(e=>{typeof e.scrollTo=="function"?e.scrollTo(0,0):(e.scrollTop=0,e.scrollLeft=0)}),this.saveScrollPositions(),window.location.hash&&setTimeout(()=>document.getElementById(window.location.hash.slice(1))?.scrollIntoView())}restoreScrollPositions(){this.page.scrollRegions&&this.scrollRegions().forEach((e,i)=>{let n=this.page.scrollRegions[i];if(n)typeof e.scrollTo=="function"?e.scrollTo(n.left,n.top):(e.scrollTop=n.top,e.scrollLeft=n.left);else return})}isBackForwardVisit(){return window.history.state&&this.navigationType==="back_forward"}handleBackForwardVisit(e){window.history.state.version=e.version,this.setPage(window.history.state,{preserveScroll:!0,preserveState:!0}).then(()=>{this.restoreScrollPositions(),S(e)})}locationVisit(e,i){try{let n={preserveScroll:i};window.sessionStorage.setItem("inertiaLocationVisit",JSON.stringify(n)),window.location.href=e.href,w(window.location).href===w(e).href&&window.location.reload()}catch{return!1}}isLocationVisit(){try{return window.sessionStorage.getItem("inertiaLocationVisit")!==null}catch{return!1}}handleLocationVisit(e){let i=JSON.parse(window.sessionStorage.getItem("inertiaLocationVisit")||"");window.sessionStorage.removeItem("inertiaLocationVisit"),e.url+=window.location.hash,e.rememberedState=window.history.state?.rememberedState??{},e.scrollRegions=window.history.state?.scrollRegions??[],this.setPage(e,{preserveScroll:i.preserveScroll,preserveState:!0}).then(()=>{i.preserveScroll&&this.restoreScrollPositions(),S(e)})}isLocationVisitResponse(e){return!!(e&&e.status===409&&e.headers["x-inertia-location"])}isInertiaResponse(e){return!!e?.headers["x-inertia"]}createVisitId(){return this.visitId={},this.visitId}cancelVisit(e,{cancelled:i=!1,interrupted:n=!1}){e&&!e.completed&&!e.cancelled&&!e.interrupted&&(e.cancelToken.abort(),e.onCancel(),e.completed=!1,e.cancelled=i,e.interrupted=n,N(e),e.onFinish(e))}finishVisit(e){!e.cancelled&&!e.interrupted&&(e.completed=!0,e.cancelled=!1,e.interrupted=!1,N(e),e.onFinish(e))}resolvePreserveOption(e,i){return typeof e=="function"?e(i):e==="errors"?Object.keys(i.props.errors||{}).length>0:e}cancel(){this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}visit(e,{method:i="get",data:n={},replace:o=!1,preserveScroll:c=!1,preserveState:h=!1,only:m=[],headers:b={},errorBag:a="",forceFormData:l=!1,onCancelToken:g=()=>{},onBefore:L=()=>{},onStart:d=()=>{},onProgress:p=()=>{},onFinish:T=()=>{},onCancel:y=()=>{},onSuccess:D=()=>{},onError:U=()=>{},queryStringArrayFormat:F="brackets"}={}){let x=typeof e=="string"?v(e):e;if((I(n)||l)&&!(n instanceof FormData)&&(n=A(n)),!(n instanceof FormData)){let[r,s]=k(i,x,n,F);x=v(r),n=s}let P={url:x,method:i,data:n,replace:o,preserveScroll:c,preserveState:h,only:m,headers:b,errorBag:a,forceFormData:l,queryStringArrayFormat:F,cancelled:!1,completed:!1,interrupted:!1};if(L(P)===!1||!M(P))return;this.activeVisit&&this.cancelVisit(this.activeVisit,{interrupted:!0}),this.saveScrollPositions();let G=this.createVisitId();this.activeVisit={...P,onCancelToken:g,onBefore:L,onStart:d,onProgress:p,onFinish:T,onCancel:y,onSuccess:D,onError:U,queryStringArrayFormat:F,cancelToken:new AbortController},g({cancel:()=>{this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}}),W(P),d(P),B({method:i,url:w(x).href,data:i==="get"?{}:n,params:i==="get"?n:{},signal:this.activeVisit.cancelToken.signal,headers:{...b,Accept:"text/html, application/xhtml+xml","X-Requested-With":"XMLHttpRequest","X-Inertia":!0,...m.length?{"X-Inertia-Partial-Component":this.page.component,"X-Inertia-Partial-Data":m.join(",")}:{},...a&&a.length?{"X-Inertia-Error-Bag":a}:{},...this.page.version?{"X-Inertia-Version":this.page.version}:{}},onUploadProgress:r=>{n instanceof FormData&&(r.percentage=r.progress?Math.round(r.progress*100):0,q(r),p(r))}}).then(r=>{if(!this.isInertiaResponse(r))return Promise.reject({response:r});let s=r.data;m.length&&s.component===this.page.component&&(s.props={...this.page.props,...s.props}),c=this.resolvePreserveOption(c,s),h=this.resolvePreserveOption(h,s),h&&window.history.state?.rememberedState&&s.component===this.page.component&&(s.rememberedState=window.history.state.rememberedState);let E=x,V=v(s.url);return E.hash&&!V.hash&&w(E).href===V.href&&(V.hash=E.hash,s.url=V.href),this.setPage(s,{visitId:G,replace:o,preserveScroll:c,preserveState:h})}).then(()=>{let r=this.page.props.errors||{};if(Object.keys(r).length>0){let s=a?r[a]?r[a]:{}:r;return j(s),U(s)}return K(this.page),D(this.page)}).catch(r=>{if(this.isInertiaResponse(r.response))return this.setPage(r.response.data,{visitId:G});if(this.isLocationVisitResponse(r.response)){let s=v(r.response.headers["x-inertia-location"]),E=x;E.hash&&!s.hash&&w(E).href===s.href&&(s.hash=E.hash),this.locationVisit(s,c===!0)}else if(r.response)$(r.response)&&z.show(r.response.data);else return Promise.reject(r)}).then(()=>{this.activeVisit&&this.finishVisit(this.activeVisit)}).catch(r=>{if(!B.isCancel(r)){let s=H(r);if(this.activeVisit&&this.finishVisit(this.activeVisit),s)return Promise.reject(r)}})}setPage(e,{visitId:i=this.createVisitId(),replace:n=!1,preserveScroll:o=!1,preserveState:c=!1}={}){return Promise.resolve(this.resolveComponent(e.component)).then(h=>{i===this.visitId&&(e.scrollRegions=e.scrollRegions||[],e.rememberedState=e.rememberedState||{},n=n||v(e.url).href===window.location.href,n?this.replaceState(e):this.pushState(e),this.swapComponent({component:h,page:e,preserveState:c}).then(()=>{o||this.resetScrollPositions(),n||S(e)}))})}pushState(e){this.page=e,window.history.pushState(e,"",e.url)}replaceState(e){this.page=e,window.history.replaceState(e,"",e.url)}handlePopstateEvent(e){if(e.state!==null){let i=e.state,n=this.createVisitId();Promise.resolve(this.resolveComponent(i.component)).then(o=>{n===this.visitId&&(this.page=i,this.swapComponent({component:o,page:i,preserveState:!1}).then(()=>{this.restoreScrollPositions(),S(i)}))})}else{let i=v(this.page.url);i.hash=window.location.hash,this.replaceState({...this.page,url:i.href}),this.resetScrollPositions()}}get(e,i={},n={}){return this.visit(e,{...n,method:"get",data:i})}reload(e={}){return this.visit(window.location.href,{...e,preserveScroll:!0,preserveState:!0})}replace(e,i={}){return console.warn(`Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia.${i.method??"get"}() instead.`),this.visit(e,{preserveState:!0,...i,replace:!0})}post(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"post",data:i})}put(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"put",data:i})}patch(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"patch",data:i})}delete(e,i={}){return this.visit(e,{preserveState:!0,...i,method:"delete"})}remember(e,i="default"){_||this.replaceState({...this.page,rememberedState:{...this.page?.rememberedState,[i]:e}})}restore(e="default"){if(!_)return window.history.state?.rememberedState?.[e]}on(e,i){let n=o=>{let c=i(o);o.cancelable&&!o.defaultPrevented&&c===!1&&o.preventDefault()};return document.addEventListener(`inertia:${e}`,n),()=>document.removeEventListener(`inertia:${e}`,n)}};var ie={buildDOMElement(t){let e=document.createElement("template");e.innerHTML=t;let i=e.content.firstChild;if(!t.startsWith("<script "))return i;let n=document.createElement("script");return n.innerHTML=i.innerHTML,i.getAttributeNames().forEach(o=>{n.setAttribute(o,i.getAttribute(o)||"")}),n},isInertiaManagedElement(t){return t.nodeType===Node.ELEMENT_NODE&&t.getAttribute("inertia")!==null},findMatchingElementIndex(t,e){let i=t.getAttribute("inertia");return i!==null?e.findIndex(n=>n.getAttribute("inertia")===i):-1},update:R(function(t){let e=t.map(n=>this.buildDOMElement(n));Array.from(document.head.childNodes).filter(n=>this.isInertiaManagedElement(n)).forEach(n=>{let o=this.findMatchingElementIndex(n,e);if(o===-1){n?.parentNode?.removeChild(n);return}let c=e.splice(o,1)[0];c&&!n.isEqualNode(c)&&n?.parentNode?.replaceChild(c,n)}),e.forEach(n=>document.head.appendChild(n))},1)};function Q(t,e,i){let n={},o=0;function c(){let l=o+=1;return n[l]=[],l.toString()}function h(l){l===null||Object.keys(n).indexOf(l)===-1||(delete n[l],a())}function m(l,g=[]){l!==null&&Object.keys(n).indexOf(l)>-1&&(n[l]=g),a()}function b(){let l=e(""),g={...l?{title:`<title inertia="">${l}</title>`}:{}},L=Object.values(n).reduce((d,p)=>d.concat(p),[]).reduce((d,p)=>{if(p.indexOf("<")===-1)return d;if(p.indexOf("<title ")===0){let y=p.match(/(<title [^>]+>)(.*?)(<\/title>)/);return d.title=y?`${y[1]}${e(y[2])}${y[3]}`:p,d}let T=p.match(/ inertia="[^"]+"/);return T?d[T[0]]=p:d[Object.keys(d).length]=p,d},g);return Object.values(L)}function a(){t?i(b()):ie.update(b())}return a(),{forceUpdate:a,createProvider:function(){let l=c();return{update:g=>m(l,g),disconnect:()=>h(l)}}}}import u from"nprogress";var Y=null;function ne(t){document.addEventListener("inertia:start",re.bind(null,t)),document.addEventListener("inertia:progress",oe),document.addEventListener("inertia:finish",se)}function re(t){Y=setTimeout(()=>u.start(),t)}function oe(t){u.isStarted()&&t.detail.progress?.percentage&&u.set(Math.max(u.status,t.detail.progress.percentage/100*.9))}function se(t){if(clearTimeout(Y),u.isStarted())t.detail.visit.completed?u.done():t.detail.visit.interrupted?u.set(0):t.detail.visit.cancelled&&(u.done(),u.remove());else return}function ae(t){let e=document.createElement("style");e.type="text/css",e.textContent=`
1
+ import{default as B}from"axios";function R(t,e){let i;return function(...n){clearTimeout(i),i=setTimeout(()=>t.apply(this,n),e)}}function f(t,e){return document.dispatchEvent(new CustomEvent(`inertia:${t}`,e))}var M=t=>f("before",{cancelable:!0,detail:{visit:t}}),j=t=>f("error",{detail:{errors:t}}),H=t=>f("exception",{cancelable:!0,detail:{exception:t}}),N=t=>f("finish",{detail:{visit:t}}),$=t=>f("invalid",{cancelable:!0,detail:{response:t}}),x=t=>f("navigate",{detail:{page:t}}),q=t=>f("progress",{detail:{progress:t}}),W=t=>f("start",{detail:{visit:t}}),K=t=>f("success",{detail:{page:t}});function I(t){return t instanceof File||t instanceof Blob||t instanceof FileList&&t.length>0||t instanceof FormData&&Array.from(t.values()).some(e=>I(e))||typeof t=="object"&&t!==null&&Object.values(t).some(e=>I(e))}function A(t,e=new FormData,i=null){t=t||{};for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&J(e,X(i,n),t[n]);return e}function X(t,e){return t?t+"["+e+"]":e}function J(t,e,i){if(Array.isArray(i))return Array.from(i.keys()).forEach(n=>J(t,X(e,n.toString()),i[n]));if(i instanceof Date)return t.append(e,i.toISOString());if(i instanceof File)return t.append(e,i,i.name);if(i instanceof Blob)return t.append(e,i);if(typeof i=="boolean")return t.append(e,i?"1":"0");if(typeof i=="string")return t.append(e,i);if(typeof i=="number")return t.append(e,`${i}`);if(i==null)return t.append(e,"");A(i,t,e)}var z={modal:null,listener:null,show(t){typeof t=="object"&&(t=`All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.<hr>${JSON.stringify(t)}`);let e=document.createElement("html");e.innerHTML=t,e.querySelectorAll("a").forEach(n=>n.setAttribute("target","_top")),this.modal=document.createElement("div"),this.modal.style.position="fixed",this.modal.style.width="100vw",this.modal.style.height="100vh",this.modal.style.padding="50px",this.modal.style.boxSizing="border-box",this.modal.style.backgroundColor="rgba(0, 0, 0, .6)",this.modal.style.zIndex=2e5,this.modal.addEventListener("click",()=>this.hide());let i=document.createElement("iframe");if(i.style.backgroundColor="white",i.style.borderRadius="5px",i.style.width="100%",i.style.height="100%",this.modal.appendChild(i),document.body.prepend(this.modal),document.body.style.overflow="hidden",!i.contentWindow)throw new Error("iframe not yet ready.");i.contentWindow.document.open(),i.contentWindow.document.write(e.outerHTML),i.contentWindow.document.close(),this.listener=this.hideOnEscape.bind(this),document.addEventListener("keydown",this.listener)},hide(){this.modal.outerHTML="",this.modal=null,document.body.style.overflow="visible",document.removeEventListener("keydown",this.listener)},hideOnEscape(t){t.keyCode===27&&this.hide()}};import te from"deepmerge";import*as O from"qs";function v(t){return new URL(t.toString(),window.location.toString())}function k(t,e,i,n="brackets"){let o=/^https?:\/\//.test(e.toString()),c=o||e.toString().startsWith("/"),h=!c&&!e.toString().startsWith("#")&&!e.toString().startsWith("?"),m=e.toString().includes("?")||t==="get"&&Object.keys(i).length,b=e.toString().includes("#"),a=new URL(e.toString(),"http://localhost");return t==="get"&&Object.keys(i).length&&(a.search=O.stringify(te(O.parse(a.search,{ignoreQueryPrefix:!0}),i),{encodeValuesOnly:!0,arrayFormat:n}),i={}),[[o?`${a.protocol}//${a.host}`:"",c?a.pathname:"",h?a.pathname.substring(1):"",m?a.search:"",b?a.hash:""].join(""),i]}function w(t){return t=new URL(t.href),t.hash="",t}var _=typeof window>"u",C=class{constructor(){this.visitId=null}init({initialPage:e,resolveComponent:i,swapComponent:n}){this.page=e,this.resolveComponent=i,this.swapComponent=n,this.setNavigationType(),this.clearRememberedStateOnReload(),this.isBackForwardVisit()?this.handleBackForwardVisit(this.page):this.isLocationVisit()?this.handleLocationVisit(this.page):this.handleInitialPageVisit(this.page),this.setupEventListeners()}setNavigationType(){this.navigationType=window.performance&&window.performance.getEntriesByType("navigation").length>0?window.performance.getEntriesByType("navigation")[0].type:"navigate"}clearRememberedStateOnReload(){this.navigationType==="reload"&&window.history.state?.rememberedState&&delete window.history.state.rememberedState}handleInitialPageVisit(e){this.page.url+=window.location.hash,this.setPage(e,{preserveState:!0}).then(()=>x(e))}setupEventListeners(){window.addEventListener("popstate",this.handlePopstateEvent.bind(this)),document.addEventListener("scroll",R(this.handleScrollEvent.bind(this),100),!0)}scrollRegions(){return document.querySelectorAll("[scroll-region]")}handleScrollEvent(e){typeof e.target.hasAttribute=="function"&&e.target.hasAttribute("scroll-region")&&this.saveScrollPositions()}saveScrollPositions(){this.replaceState({...this.page,scrollRegions:Array.from(this.scrollRegions()).map(e=>({top:e.scrollTop,left:e.scrollLeft}))})}resetScrollPositions(){window.scrollTo(0,0),this.scrollRegions().forEach(e=>{typeof e.scrollTo=="function"?e.scrollTo(0,0):(e.scrollTop=0,e.scrollLeft=0)}),this.saveScrollPositions(),window.location.hash&&setTimeout(()=>document.getElementById(window.location.hash.slice(1))?.scrollIntoView())}restoreScrollPositions(){this.page.scrollRegions&&this.scrollRegions().forEach((e,i)=>{let n=this.page.scrollRegions[i];if(n)typeof e.scrollTo=="function"?e.scrollTo(n.left,n.top):(e.scrollTop=n.top,e.scrollLeft=n.left);else return})}isBackForwardVisit(){return window.history.state&&this.navigationType==="back_forward"}handleBackForwardVisit(e){window.history.state.version=e.version,this.setPage(window.history.state,{preserveScroll:!0,preserveState:!0}).then(()=>{this.restoreScrollPositions(),x(e)})}locationVisit(e,i){try{let n={preserveScroll:i};window.sessionStorage.setItem("inertiaLocationVisit",JSON.stringify(n)),window.location.href=e.href,w(window.location).href===w(e).href&&window.location.reload()}catch{return!1}}isLocationVisit(){try{return window.sessionStorage.getItem("inertiaLocationVisit")!==null}catch{return!1}}handleLocationVisit(e){let i=JSON.parse(window.sessionStorage.getItem("inertiaLocationVisit")||"");window.sessionStorage.removeItem("inertiaLocationVisit"),e.url+=window.location.hash,e.rememberedState=window.history.state?.rememberedState??{},e.scrollRegions=window.history.state?.scrollRegions??[],this.setPage(e,{preserveScroll:i.preserveScroll,preserveState:!0}).then(()=>{i.preserveScroll&&this.restoreScrollPositions(),x(e)})}isLocationVisitResponse(e){return!!(e&&e.status===409&&e.headers["x-inertia-location"])}isInertiaResponse(e){return!!e?.headers["x-inertia"]}createVisitId(){return this.visitId={},this.visitId}cancelVisit(e,{cancelled:i=!1,interrupted:n=!1}){e&&!e.completed&&!e.cancelled&&!e.interrupted&&(e.cancelToken.abort(),e.onCancel(),e.completed=!1,e.cancelled=i,e.interrupted=n,N(e),e.onFinish(e))}finishVisit(e){!e.cancelled&&!e.interrupted&&(e.completed=!0,e.cancelled=!1,e.interrupted=!1,N(e),e.onFinish(e))}resolvePreserveOption(e,i){return typeof e=="function"?e(i):e==="errors"?Object.keys(i.props.errors||{}).length>0:e}cancel(){this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}visit(e,{method:i="get",data:n={},replace:o=!1,preserveScroll:c=!1,preserveState:h=!1,only:m=[],headers:b={},errorBag:a="",forceFormData:l=!1,onCancelToken:g=()=>{},onBefore:L=()=>{},onStart:d=()=>{},onProgress:p=()=>{},onFinish:T=()=>{},onCancel:y=()=>{},onSuccess:D=()=>{},onError:U=()=>{},queryStringArrayFormat:F="brackets"}={}){let S=typeof e=="string"?v(e):e;if((I(n)||l)&&!(n instanceof FormData)&&(n=A(n)),!(n instanceof FormData)){let[r,s]=k(i,S,n,F);S=v(r),n=s}let P={url:S,method:i,data:n,replace:o,preserveScroll:c,preserveState:h,only:m,headers:b,errorBag:a,forceFormData:l,queryStringArrayFormat:F,cancelled:!1,completed:!1,interrupted:!1};if(L(P)===!1||!M(P))return;this.activeVisit&&this.cancelVisit(this.activeVisit,{interrupted:!0}),this.saveScrollPositions();let G=this.createVisitId();this.activeVisit={...P,onCancelToken:g,onBefore:L,onStart:d,onProgress:p,onFinish:T,onCancel:y,onSuccess:D,onError:U,queryStringArrayFormat:F,cancelToken:new AbortController},g({cancel:()=>{this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}}),W(P),d(P),B({method:i,url:w(S).href,data:i==="get"?{}:n,params:i==="get"?n:{},signal:this.activeVisit.cancelToken.signal,headers:{...b,Accept:"text/html, application/xhtml+xml","X-Requested-With":"XMLHttpRequest","X-Inertia":!0,...m.length?{"X-Inertia-Partial-Component":this.page.component,"X-Inertia-Partial-Data":m.join(",")}:{},...a&&a.length?{"X-Inertia-Error-Bag":a}:{},...this.page.version?{"X-Inertia-Version":this.page.version}:{}},onUploadProgress:r=>{n instanceof FormData&&(r.percentage=r.progress?Math.round(r.progress*100):0,q(r),p(r))}}).then(r=>{if(!this.isInertiaResponse(r))return Promise.reject({response:r});let s=r.data;m.length&&s.component===this.page.component&&(s.props={...this.page.props,...s.props}),c=this.resolvePreserveOption(c,s),h=this.resolvePreserveOption(h,s),h&&window.history.state?.rememberedState&&s.component===this.page.component&&(s.rememberedState=window.history.state.rememberedState);let E=S,V=v(s.url);return E.hash&&!V.hash&&w(E).href===V.href&&(V.hash=E.hash,s.url=V.href),this.setPage(s,{visitId:G,replace:o,preserveScroll:c,preserveState:h})}).then(()=>{let r=this.page.props.errors||{};if(Object.keys(r).length>0){let s=a?r[a]?r[a]:{}:r;return j(s),U(s)}return K(this.page),D(this.page)}).catch(r=>{if(this.isInertiaResponse(r.response))return this.setPage(r.response.data,{visitId:G});if(this.isLocationVisitResponse(r.response)){let s=v(r.response.headers["x-inertia-location"]),E=S;E.hash&&!s.hash&&w(E).href===s.href&&(s.hash=E.hash),this.locationVisit(s,c===!0)}else if(r.response)$(r.response)&&z.show(r.response.data);else return Promise.reject(r)}).then(()=>{this.activeVisit&&this.finishVisit(this.activeVisit)}).catch(r=>{if(!B.isCancel(r)){let s=H(r);if(this.activeVisit&&this.finishVisit(this.activeVisit),s)return Promise.reject(r)}})}setPage(e,{visitId:i=this.createVisitId(),replace:n=!1,preserveScroll:o=!1,preserveState:c=!1}={}){return Promise.resolve(this.resolveComponent(e.component)).then(h=>{i===this.visitId&&(e.scrollRegions=e.scrollRegions||[],e.rememberedState=e.rememberedState||{},n=n||v(e.url).href===window.location.href,n?this.replaceState(e):this.pushState(e),this.swapComponent({component:h,page:e,preserveState:c}).then(()=>{o||this.resetScrollPositions(),n||x(e)}))})}pushState(e){this.page=e,window.history.pushState(e,"",e.url)}replaceState(e){this.page=e,window.history.replaceState(e,"",e.url)}handlePopstateEvent(e){if(e.state!==null){let i=e.state,n=this.createVisitId();Promise.resolve(this.resolveComponent(i.component)).then(o=>{n===this.visitId&&(this.page=i,this.swapComponent({component:o,page:i,preserveState:!1}).then(()=>{this.restoreScrollPositions(),x(i)}))})}else{let i=v(this.page.url);i.hash=window.location.hash,this.replaceState({...this.page,url:i.href}),this.resetScrollPositions()}}get(e,i={},n={}){return this.visit(e,{...n,method:"get",data:i})}reload(e={}){return this.visit(window.location.href,{...e,preserveScroll:!0,preserveState:!0})}replace(e,i={}){return console.warn(`Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia.${i.method??"get"}() instead.`),this.visit(e,{preserveState:!0,...i,replace:!0})}post(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"post",data:i})}put(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"put",data:i})}patch(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"patch",data:i})}delete(e,i={}){return this.visit(e,{preserveState:!0,...i,method:"delete"})}remember(e,i="default"){_||this.replaceState({...this.page,rememberedState:{...this.page?.rememberedState,[i]:e}})}restore(e="default"){if(!_)return window.history.state?.rememberedState?.[e]}on(e,i){let n=o=>{let c=i(o);o.cancelable&&!o.defaultPrevented&&c===!1&&o.preventDefault()};return document.addEventListener(`inertia:${e}`,n),()=>document.removeEventListener(`inertia:${e}`,n)}};var ie={buildDOMElement(t){let e=document.createElement("template");e.innerHTML=t;let i=e.content.firstChild;if(!t.startsWith("<script "))return i;let n=document.createElement("script");return n.innerHTML=i.innerHTML,i.getAttributeNames().forEach(o=>{n.setAttribute(o,i.getAttribute(o)||"")}),n},isInertiaManagedElement(t){return t.nodeType===Node.ELEMENT_NODE&&t.getAttribute("inertia")!==null},findMatchingElementIndex(t,e){let i=t.getAttribute("inertia");return i!==null?e.findIndex(n=>n.getAttribute("inertia")===i):-1},update:R(function(t){let e=t.map(n=>this.buildDOMElement(n));Array.from(document.head.childNodes).filter(n=>this.isInertiaManagedElement(n)).forEach(n=>{let o=this.findMatchingElementIndex(n,e);if(o===-1){n?.parentNode?.removeChild(n);return}let c=e.splice(o,1)[0];c&&!n.isEqualNode(c)&&n?.parentNode?.replaceChild(c,n)}),e.forEach(n=>document.head.appendChild(n))},1)};function Q(t,e,i){let n={},o=0;function c(){let l=o+=1;return n[l]=[],l.toString()}function h(l){l===null||Object.keys(n).indexOf(l)===-1||(delete n[l],a())}function m(l,g=[]){l!==null&&Object.keys(n).indexOf(l)>-1&&(n[l]=g),a()}function b(){let l=e(""),g={...l?{title:`<title inertia="">${l}</title>`}:{}},L=Object.values(n).reduce((d,p)=>d.concat(p),[]).reduce((d,p)=>{if(p.indexOf("<")===-1)return d;if(p.indexOf("<title ")===0){let y=p.match(/(<title [^>]+>)(.*?)(<\/title>)/);return d.title=y?`${y[1]}${e(y[2])}${y[3]}`:p,d}let T=p.match(/ inertia="[^"]+"/);return T?d[T[0]]=p:d[Object.keys(d).length]=p,d},g);return Object.values(L)}function a(){t?i(b()):ie.update(b())}return a(),{forceUpdate:a,createProvider:function(){let l=c();return{update:g=>m(l,g),disconnect:()=>h(l)}}}}import u from"nprogress";var Y=null;function ne(t){document.addEventListener("inertia:start",re.bind(null,t)),document.addEventListener("inertia:progress",oe),document.addEventListener("inertia:finish",se)}function re(t){Y=setTimeout(()=>u.start(),t)}function oe(t){u.isStarted()&&t.detail.progress?.percentage&&u.set(Math.max(u.status,t.detail.progress.percentage/100*.9))}function se(t){if(clearTimeout(Y),u.isStarted())t.detail.visit.completed?u.done():t.detail.visit.interrupted?u.set(0):t.detail.visit.cancelled&&(u.done(),u.remove());else return}function ae(t){let e=document.createElement("style");e.type="text/css",e.textContent=`
2
2
  #nprogress {
3
3
  pointer-events: none;
4
4
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/router.ts", "../src/debounce.ts", "../src/events.ts", "../src/files.ts", "../src/formData.ts", "../src/modal.ts", "../src/url.ts", "../src/head.ts", "../src/progress.ts", "../src/shouldIntercept.ts", "../src/index.ts"],
4
- "sourcesContent": ["import { AxiosResponse, default as Axios } from 'axios'\nimport debounce from './debounce'\nimport {\n fireBeforeEvent,\n fireErrorEvent,\n fireExceptionEvent,\n fireFinishEvent,\n fireInvalidEvent,\n fireNavigateEvent,\n fireProgressEvent,\n fireStartEvent,\n fireSuccessEvent,\n} from './events'\nimport { hasFiles } from './files'\nimport { objectToFormData } from './formData'\nimport modal from './modal'\nimport {\n ActiveVisit,\n GlobalEvent,\n GlobalEventNames,\n GlobalEventResult,\n LocationVisit,\n Page,\n PageHandler,\n PageResolver,\n PendingVisit,\n PreserveStateOption,\n RequestPayload,\n VisitId,\n VisitOptions,\n} from './types'\nimport { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash } from './url'\n\nconst isServer = typeof window === 'undefined'\n\nexport class Router {\n protected page!: Page\n protected resolveComponent!: PageResolver\n protected swapComponent!: PageHandler\n protected navigationType?: string\n protected activeVisit?: ActiveVisit\n protected visitId: VisitId = null\n\n public init({\n initialPage,\n resolveComponent,\n swapComponent,\n }: {\n initialPage: Page\n resolveComponent: PageResolver\n swapComponent: PageHandler\n }): void {\n this.page = initialPage\n this.resolveComponent = resolveComponent\n this.swapComponent = swapComponent\n\n this.setNavigationType()\n this.clearRememberedStateOnReload()\n\n if (this.isBackForwardVisit()) {\n this.handleBackForwardVisit(this.page)\n } else if (this.isLocationVisit()) {\n this.handleLocationVisit(this.page)\n } else {\n this.handleInitialPageVisit(this.page)\n }\n\n this.setupEventListeners()\n }\n\n protected setNavigationType(): void {\n this.navigationType =\n window.performance && window.performance.getEntriesByType('navigation').length > 0\n ? (window.performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming).type\n : 'navigate'\n }\n\n protected clearRememberedStateOnReload(): void {\n if (this.navigationType === 'reload' && window.history.state?.rememberedState) {\n delete window.history.state.rememberedState\n }\n }\n\n protected handleInitialPageVisit(page: Page): void {\n this.page.url += window.location.hash\n this.setPage(page, { preserveState: true }).then(() => fireNavigateEvent(page))\n }\n\n protected setupEventListeners(): void {\n window.addEventListener('popstate', this.handlePopstateEvent.bind(this))\n document.addEventListener('scroll', debounce(this.handleScrollEvent.bind(this), 100), true)\n }\n\n protected scrollRegions(): NodeListOf<Element> {\n return document.querySelectorAll('[scroll-region]')\n }\n\n protected handleScrollEvent(event: Event): void {\n if (\n typeof (event.target as Element).hasAttribute === 'function' &&\n (event.target as Element).hasAttribute('scroll-region')\n ) {\n this.saveScrollPositions()\n }\n }\n\n protected saveScrollPositions(): void {\n this.replaceState({\n ...this.page,\n scrollRegions: Array.from(this.scrollRegions()).map((region) => {\n return {\n top: region.scrollTop,\n left: region.scrollLeft,\n }\n }),\n })\n }\n\n protected resetScrollPositions(): void {\n window.scrollTo(0, 0)\n this.scrollRegions().forEach((region) => {\n if (typeof region.scrollTo === 'function') {\n region.scrollTo(0, 0)\n } else {\n region.scrollTop = 0\n region.scrollLeft = 0\n }\n })\n this.saveScrollPositions()\n if (window.location.hash) {\n // We're using a setTimeout() here as a workaround for a bug in the React adapter where the\n // rendering isn't completing fast enough, causing the anchor link to not be scrolled to.\n setTimeout(() => document.getElementById(window.location.hash.slice(1))?.scrollIntoView())\n }\n }\n\n protected restoreScrollPositions(): void {\n if (this.page.scrollRegions) {\n this.scrollRegions().forEach((region: Element, index: number) => {\n const scrollPosition = this.page.scrollRegions[index]\n if (!scrollPosition) {\n return\n } else if (typeof region.scrollTo === 'function') {\n region.scrollTo(scrollPosition.left, scrollPosition.top)\n } else {\n region.scrollTop = scrollPosition.top\n region.scrollLeft = scrollPosition.left\n }\n })\n }\n }\n\n protected isBackForwardVisit(): boolean {\n return window.history.state && this.navigationType === 'back_forward'\n }\n\n protected handleBackForwardVisit(page: Page): void {\n window.history.state.version = page.version\n this.setPage(window.history.state, { preserveScroll: true, preserveState: true }).then(() => {\n this.restoreScrollPositions()\n fireNavigateEvent(page)\n })\n }\n\n protected locationVisit(url: URL, preserveScroll: LocationVisit['preserveScroll']): boolean | void {\n try {\n const locationVisit: LocationVisit = { preserveScroll }\n window.sessionStorage.setItem('inertiaLocationVisit', JSON.stringify(locationVisit))\n window.location.href = url.href\n if (urlWithoutHash(window.location).href === urlWithoutHash(url).href) {\n window.location.reload()\n }\n } catch (error) {\n return false\n }\n }\n\n protected isLocationVisit(): boolean {\n try {\n return window.sessionStorage.getItem('inertiaLocationVisit') !== null\n } catch (error) {\n return false\n }\n }\n\n protected handleLocationVisit(page: Page): void {\n const locationVisit: LocationVisit = JSON.parse(window.sessionStorage.getItem('inertiaLocationVisit') || '')\n window.sessionStorage.removeItem('inertiaLocationVisit')\n page.url += window.location.hash\n page.rememberedState = window.history.state?.rememberedState ?? {}\n page.scrollRegions = window.history.state?.scrollRegions ?? []\n this.setPage(page, { preserveScroll: locationVisit.preserveScroll, preserveState: true }).then(() => {\n if (locationVisit.preserveScroll) {\n this.restoreScrollPositions()\n }\n fireNavigateEvent(page)\n })\n }\n\n protected isLocationVisitResponse(response: AxiosResponse): boolean {\n return !!(response && response.status === 409 && response.headers['x-inertia-location'])\n }\n\n protected isInertiaResponse(response: AxiosResponse): boolean {\n return !!response?.headers['x-inertia']\n }\n\n protected createVisitId(): VisitId {\n this.visitId = {}\n return this.visitId\n }\n\n protected cancelVisit(\n activeVisit: ActiveVisit,\n { cancelled = false, interrupted = false }: { cancelled?: boolean; interrupted?: boolean },\n ): void {\n if (activeVisit && !activeVisit.completed && !activeVisit.cancelled && !activeVisit.interrupted) {\n activeVisit.cancelToken.abort()\n activeVisit.onCancel()\n activeVisit.completed = false\n activeVisit.cancelled = cancelled\n activeVisit.interrupted = interrupted\n fireFinishEvent(activeVisit)\n activeVisit.onFinish(activeVisit)\n }\n }\n\n protected finishVisit(visit: ActiveVisit): void {\n if (!visit.cancelled && !visit.interrupted) {\n visit.completed = true\n visit.cancelled = false\n visit.interrupted = false\n fireFinishEvent(visit)\n visit.onFinish(visit)\n }\n }\n\n protected resolvePreserveOption(value: PreserveStateOption, page: Page): boolean | string {\n if (typeof value === 'function') {\n return value(page)\n } else if (value === 'errors') {\n return Object.keys(page.props.errors || {}).length > 0\n } else {\n return value\n }\n }\n\n public cancel(): void {\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { cancelled: true })\n }\n }\n\n public visit(\n href: string | URL,\n {\n method = 'get',\n data = {},\n replace = false,\n preserveScroll = false,\n preserveState = false,\n only = [],\n headers = {},\n errorBag = '',\n forceFormData = false,\n onCancelToken = () => {},\n onBefore = () => {},\n onStart = () => {},\n onProgress = () => {},\n onFinish = () => {},\n onCancel = () => {},\n onSuccess = () => {},\n onError = () => {},\n queryStringArrayFormat = 'brackets',\n }: VisitOptions = {},\n ): void {\n let url = typeof href === 'string' ? hrefToUrl(href) : href\n\n if ((hasFiles(data) || forceFormData) && !(data instanceof FormData)) {\n data = objectToFormData(data)\n }\n\n if (!(data instanceof FormData)) {\n const [_href, _data] = mergeDataIntoQueryString(method, url, data, queryStringArrayFormat)\n url = hrefToUrl(_href)\n data = _data\n }\n\n const visit: PendingVisit = {\n url,\n method,\n data,\n replace,\n preserveScroll,\n preserveState,\n only,\n headers,\n errorBag,\n forceFormData,\n queryStringArrayFormat,\n cancelled: false,\n completed: false,\n interrupted: false,\n }\n\n if (onBefore(visit) === false || !fireBeforeEvent(visit)) {\n return\n }\n\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { interrupted: true })\n }\n\n this.saveScrollPositions()\n\n const visitId = this.createVisitId()\n this.activeVisit = {\n ...visit,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n queryStringArrayFormat,\n cancelToken: new AbortController(),\n }\n\n onCancelToken({\n cancel: () => {\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { cancelled: true })\n }\n },\n })\n\n fireStartEvent(visit)\n onStart(visit)\n\n Axios({\n method,\n url: urlWithoutHash(url).href,\n data: method === 'get' ? {} : data,\n params: method === 'get' ? data : {},\n signal: this.activeVisit.cancelToken.signal,\n headers: {\n ...headers,\n Accept: 'text/html, application/xhtml+xml',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-Inertia': true,\n ...(only.length\n ? {\n 'X-Inertia-Partial-Component': this.page.component,\n 'X-Inertia-Partial-Data': only.join(','),\n }\n : {}),\n ...(errorBag && errorBag.length ? { 'X-Inertia-Error-Bag': errorBag } : {}),\n ...(this.page.version ? { 'X-Inertia-Version': this.page.version } : {}),\n },\n onUploadProgress: (progress) => {\n if (data instanceof FormData) {\n progress.percentage = progress.progress ? Math.round(progress.progress * 100) : 0\n fireProgressEvent(progress)\n onProgress(progress)\n }\n },\n })\n .then((response) => {\n if (!this.isInertiaResponse(response)) {\n return Promise.reject({ response })\n }\n\n const pageResponse: Page = response.data\n if (only.length && pageResponse.component === this.page.component) {\n pageResponse.props = { ...this.page.props, ...pageResponse.props }\n }\n preserveScroll = this.resolvePreserveOption(preserveScroll, pageResponse) as boolean\n preserveState = this.resolvePreserveOption(preserveState, pageResponse)\n if (preserveState && window.history.state?.rememberedState && pageResponse.component === this.page.component) {\n pageResponse.rememberedState = window.history.state.rememberedState\n }\n const requestUrl = url\n const responseUrl = hrefToUrl(pageResponse.url)\n if (requestUrl.hash && !responseUrl.hash && urlWithoutHash(requestUrl).href === responseUrl.href) {\n responseUrl.hash = requestUrl.hash\n pageResponse.url = responseUrl.href\n }\n return this.setPage(pageResponse, { visitId, replace, preserveScroll, preserveState })\n })\n .then(() => {\n const errors = this.page.props.errors || {}\n if (Object.keys(errors).length > 0) {\n const scopedErrors = errorBag ? (errors[errorBag] ? errors[errorBag] : {}) : errors\n fireErrorEvent(scopedErrors)\n return onError(scopedErrors)\n }\n fireSuccessEvent(this.page)\n return onSuccess(this.page)\n })\n .catch((error) => {\n if (this.isInertiaResponse(error.response)) {\n return this.setPage(error.response.data, { visitId })\n } else if (this.isLocationVisitResponse(error.response)) {\n const locationUrl = hrefToUrl(error.response.headers['x-inertia-location'])\n const requestUrl = url\n if (requestUrl.hash && !locationUrl.hash && urlWithoutHash(requestUrl).href === locationUrl.href) {\n locationUrl.hash = requestUrl.hash\n }\n this.locationVisit(locationUrl, preserveScroll === true)\n } else if (error.response) {\n if (fireInvalidEvent(error.response)) {\n modal.show(error.response.data)\n }\n } else {\n return Promise.reject(error)\n }\n })\n .then(() => {\n if (this.activeVisit) {\n this.finishVisit(this.activeVisit)\n }\n })\n .catch((error) => {\n if (!Axios.isCancel(error)) {\n const throwException = fireExceptionEvent(error)\n if (this.activeVisit) {\n this.finishVisit(this.activeVisit)\n }\n if (throwException) {\n return Promise.reject(error)\n }\n }\n })\n }\n\n protected setPage(\n page: Page,\n {\n visitId = this.createVisitId(),\n replace = false,\n preserveScroll = false,\n preserveState = false,\n }: {\n visitId?: VisitId\n replace?: boolean\n preserveScroll?: PreserveStateOption\n preserveState?: PreserveStateOption\n } = {},\n ): Promise<void> {\n return Promise.resolve(this.resolveComponent(page.component)).then((component) => {\n if (visitId === this.visitId) {\n page.scrollRegions = page.scrollRegions || []\n page.rememberedState = page.rememberedState || {}\n replace = replace || hrefToUrl(page.url).href === window.location.href\n replace ? this.replaceState(page) : this.pushState(page)\n this.swapComponent({ component, page, preserveState }).then(() => {\n if (!preserveScroll) {\n this.resetScrollPositions()\n }\n if (!replace) {\n fireNavigateEvent(page)\n }\n })\n }\n })\n }\n\n protected pushState(page: Page): void {\n this.page = page\n window.history.pushState(page, '', page.url)\n }\n\n protected replaceState(page: Page): void {\n this.page = page\n window.history.replaceState(page, '', page.url)\n }\n\n protected handlePopstateEvent(event: PopStateEvent): void {\n if (event.state !== null) {\n const page = event.state\n const visitId = this.createVisitId()\n Promise.resolve(this.resolveComponent(page.component)).then((component) => {\n if (visitId === this.visitId) {\n this.page = page\n this.swapComponent({ component, page, preserveState: false }).then(() => {\n this.restoreScrollPositions()\n fireNavigateEvent(page)\n })\n }\n })\n } else {\n const url = hrefToUrl(this.page.url)\n url.hash = window.location.hash\n this.replaceState({ ...this.page, url: url.href })\n this.resetScrollPositions()\n }\n }\n\n public get(\n url: URL | string,\n data: RequestPayload = {},\n options: Exclude<VisitOptions, 'method' | 'data'> = {},\n ): void {\n return this.visit(url, { ...options, method: 'get', data })\n }\n\n public reload(options: Exclude<VisitOptions, 'preserveScroll' | 'preserveState'> = {}): void {\n return this.visit(window.location.href, { ...options, preserveScroll: true, preserveState: true })\n }\n\n public replace(url: URL | string, options: Exclude<VisitOptions, 'replace'> = {}): void {\n console.warn(\n `Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia.${\n options.method ?? 'get'\n }() instead.`,\n )\n return this.visit(url, { preserveState: true, ...options, replace: true })\n }\n\n public post(\n url: URL | string,\n data: RequestPayload = {},\n options: Exclude<VisitOptions, 'method' | 'data'> = {},\n ): void {\n return this.visit(url, { preserveState: true, ...options, method: 'post', data })\n }\n\n public put(\n url: URL | string,\n data: RequestPayload = {},\n options: Exclude<VisitOptions, 'method' | 'data'> = {},\n ): void {\n return this.visit(url, { preserveState: true, ...options, method: 'put', data })\n }\n\n public patch(\n url: URL | string,\n data: RequestPayload = {},\n options: Exclude<VisitOptions, 'method' | 'data'> = {},\n ): void {\n return this.visit(url, { preserveState: true, ...options, method: 'patch', data })\n }\n\n public delete(url: URL | string, options: Exclude<VisitOptions, 'method'> = {}): void {\n return this.visit(url, { preserveState: true, ...options, method: 'delete' })\n }\n\n public remember(data: unknown, key = 'default'): void {\n if (isServer) {\n return\n }\n\n this.replaceState({\n ...this.page,\n rememberedState: {\n ...this.page?.rememberedState,\n [key]: data,\n },\n })\n }\n\n public restore(key = 'default'): unknown {\n if (isServer) {\n return\n }\n\n return window.history.state?.rememberedState?.[key]\n }\n\n public on<TEventName extends GlobalEventNames>(\n type: TEventName,\n callback: (event: GlobalEvent<TEventName>) => GlobalEventResult<TEventName>,\n ): VoidFunction {\n const listener = ((event: GlobalEvent<TEventName>) => {\n const response = callback(event)\n if (event.cancelable && !event.defaultPrevented && response === false) {\n event.preventDefault()\n }\n }) as EventListener\n\n document.addEventListener(`inertia:${type}`, listener)\n return () => document.removeEventListener(`inertia:${type}`, listener)\n }\n}\n", "export default function debounce<F extends (...params: any[]) => ReturnType<F>>(fn: F, delay: number): F {\n let timeoutID: NodeJS.Timeout\n return function (...args: unknown[]) {\n clearTimeout(timeoutID)\n timeoutID = setTimeout(() => fn.apply(this, args), delay)\n } as F\n}\n", "import { GlobalEventDetails, GlobalEventNames, GlobalEventTrigger } from './types'\n\nfunction fireEvent<TEventName extends GlobalEventNames>(\n name: TEventName,\n options: CustomEventInit<GlobalEventDetails<TEventName>>,\n): boolean {\n return document.dispatchEvent(new CustomEvent(`inertia:${name}`, options))\n}\n\nexport const fireBeforeEvent: GlobalEventTrigger<'before'> = (visit) => {\n return fireEvent('before', { cancelable: true, detail: { visit } })\n}\n\nexport const fireErrorEvent: GlobalEventTrigger<'error'> = (errors) => {\n return fireEvent('error', { detail: { errors } })\n}\n\nexport const fireExceptionEvent: GlobalEventTrigger<'exception'> = (exception) => {\n return fireEvent('exception', { cancelable: true, detail: { exception } })\n}\n\nexport const fireFinishEvent: GlobalEventTrigger<'finish'> = (visit) => {\n return fireEvent('finish', { detail: { visit } })\n}\n\nexport const fireInvalidEvent: GlobalEventTrigger<'invalid'> = (response) => {\n return fireEvent('invalid', { cancelable: true, detail: { response } })\n}\n\nexport const fireNavigateEvent: GlobalEventTrigger<'navigate'> = (page) => {\n return fireEvent('navigate', { detail: { page } })\n}\n\nexport const fireProgressEvent: GlobalEventTrigger<'progress'> = (progress) => {\n return fireEvent('progress', { detail: { progress } })\n}\n\nexport const fireStartEvent: GlobalEventTrigger<'start'> = (visit) => {\n return fireEvent('start', { detail: { visit } })\n}\n\nexport const fireSuccessEvent: GlobalEventTrigger<'success'> = (page) => {\n return fireEvent('success', { detail: { page } })\n}\n", "import { FormDataConvertible, RequestPayload } from './types'\n\nexport function hasFiles(data: RequestPayload | FormDataConvertible): boolean {\n return (\n data instanceof File ||\n data instanceof Blob ||\n (data instanceof FileList && data.length > 0) ||\n (data instanceof FormData && Array.from(data.values()).some((value) => hasFiles(value))) ||\n (typeof data === 'object' && data !== null && Object.values(data).some((value) => hasFiles(value)))\n )\n}\n", "import { FormDataConvertible } from './types'\n\nexport function objectToFormData(\n source: Record<string, FormDataConvertible>,\n form: FormData = new FormData(),\n parentKey: string | null = null,\n): FormData {\n source = source || {}\n\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n append(form, composeKey(parentKey, key), source[key])\n }\n }\n\n return form\n}\n\nfunction composeKey(parent: string | null, key: string): string {\n return parent ? parent + '[' + key + ']' : key\n}\n\nfunction append(form: FormData, key: string, value: FormDataConvertible): void {\n if (Array.isArray(value)) {\n return Array.from(value.keys()).forEach((index) => append(form, composeKey(key, index.toString()), value[index]))\n } else if (value instanceof Date) {\n return form.append(key, value.toISOString())\n } else if (value instanceof File) {\n return form.append(key, value, value.name)\n } else if (value instanceof Blob) {\n return form.append(key, value)\n } else if (typeof value === 'boolean') {\n return form.append(key, value ? '1' : '0')\n } else if (typeof value === 'string') {\n return form.append(key, value)\n } else if (typeof value === 'number') {\n return form.append(key, `${value}`)\n } else if (value === null || value === undefined) {\n return form.append(key, '')\n }\n\n objectToFormData(value, form, key)\n}\n", "export default {\n modal: null,\n listener: null,\n\n show(html: Record<string, unknown> | string): void {\n if (typeof html === 'object') {\n html = `All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.<hr>${JSON.stringify(\n html,\n )}`\n }\n\n const page = document.createElement('html')\n page.innerHTML = html\n page.querySelectorAll('a').forEach((a) => a.setAttribute('target', '_top'))\n\n this.modal = document.createElement('div')\n this.modal.style.position = 'fixed'\n this.modal.style.width = '100vw'\n this.modal.style.height = '100vh'\n this.modal.style.padding = '50px'\n this.modal.style.boxSizing = 'border-box'\n this.modal.style.backgroundColor = 'rgba(0, 0, 0, .6)'\n this.modal.style.zIndex = 200000\n this.modal.addEventListener('click', () => this.hide())\n\n const iframe = document.createElement('iframe')\n iframe.style.backgroundColor = 'white'\n iframe.style.borderRadius = '5px'\n iframe.style.width = '100%'\n iframe.style.height = '100%'\n this.modal.appendChild(iframe)\n\n document.body.prepend(this.modal)\n document.body.style.overflow = 'hidden'\n if (!iframe.contentWindow) {\n throw new Error('iframe not yet ready.')\n }\n iframe.contentWindow.document.open()\n iframe.contentWindow.document.write(page.outerHTML)\n iframe.contentWindow.document.close()\n\n this.listener = this.hideOnEscape.bind(this)\n document.addEventListener('keydown', this.listener)\n },\n\n hide(): void {\n this.modal.outerHTML = ''\n this.modal = null\n document.body.style.overflow = 'visible'\n document.removeEventListener('keydown', this.listener)\n },\n\n hideOnEscape(event: KeyboardEvent): void {\n if (event.keyCode === 27) {\n this.hide()\n }\n },\n}\n", "import deepmerge from 'deepmerge'\nimport * as qs from 'qs'\nimport { FormDataConvertible, Method } from './types'\n\nexport function hrefToUrl(href: string | URL): URL {\n return new URL(href.toString(), window.location.toString())\n}\n\nexport function mergeDataIntoQueryString(\n method: Method,\n href: URL | string,\n data: Record<string, FormDataConvertible>,\n qsArrayFormat: 'indices' | 'brackets' = 'brackets',\n): [string, Record<string, FormDataConvertible>] {\n const hasHost = /^https?:\\/\\//.test(href.toString())\n const hasAbsolutePath = hasHost || href.toString().startsWith('/')\n const hasRelativePath = !hasAbsolutePath && !href.toString().startsWith('#') && !href.toString().startsWith('?')\n const hasSearch = href.toString().includes('?') || (method === 'get' && Object.keys(data).length)\n const hasHash = href.toString().includes('#')\n\n const url = new URL(href.toString(), 'http://localhost')\n\n if (method === 'get' && Object.keys(data).length) {\n url.search = qs.stringify(deepmerge(qs.parse(url.search, { ignoreQueryPrefix: true }), data), {\n encodeValuesOnly: true,\n arrayFormat: qsArrayFormat,\n })\n data = {}\n }\n\n return [\n [\n hasHost ? `${url.protocol}//${url.host}` : '',\n hasAbsolutePath ? url.pathname : '',\n hasRelativePath ? url.pathname.substring(1) : '',\n hasSearch ? url.search : '',\n hasHash ? url.hash : '',\n ].join(''),\n data,\n ]\n}\n\nexport function urlWithoutHash(url: URL | Location): URL {\n url = new URL(url.href)\n url.hash = ''\n return url\n}\n", "import debounce from './debounce'\n\nconst Renderer = {\n buildDOMElement(tag: string): ChildNode {\n const template = document.createElement('template')\n template.innerHTML = tag\n const node = template.content.firstChild as Element\n\n if (!tag.startsWith('<script ')) {\n return node\n }\n\n const script = document.createElement('script')\n script.innerHTML = node.innerHTML\n node.getAttributeNames().forEach((name) => {\n script.setAttribute(name, node.getAttribute(name) || '')\n })\n\n return script\n },\n\n isInertiaManagedElement(element: Element): boolean {\n return element.nodeType === Node.ELEMENT_NODE && element.getAttribute('inertia') !== null\n },\n\n findMatchingElementIndex(element: Element, elements: Array<Element>): number {\n const key = element.getAttribute('inertia')\n if (key !== null) {\n return elements.findIndex((element) => element.getAttribute('inertia') === key)\n }\n\n return -1\n },\n\n update: debounce(function (elements: Array<string>) {\n const sourceElements = elements.map((element) => this.buildDOMElement(element))\n const targetElements = Array.from(document.head.childNodes).filter((element) =>\n this.isInertiaManagedElement(element as Element),\n )\n\n targetElements.forEach((targetElement) => {\n const index = this.findMatchingElementIndex(targetElement as Element, sourceElements)\n if (index === -1) {\n targetElement?.parentNode?.removeChild(targetElement)\n return\n }\n\n const sourceElement = sourceElements.splice(index, 1)[0]\n if (sourceElement && !targetElement.isEqualNode(sourceElement)) {\n targetElement?.parentNode?.replaceChild(sourceElement, targetElement)\n }\n })\n\n sourceElements.forEach((element) => document.head.appendChild(element))\n }, 1),\n}\n\nexport default function createHeadManager(\n isServer: boolean,\n titleCallback: (title: string) => string,\n onUpdate: (elements: string[]) => void,\n): {\n forceUpdate: () => void\n createProvider: () => {\n update: (elements: string[]) => void\n disconnect: () => void\n }\n} {\n const states: Record<string, Array<string>> = {}\n let lastProviderId = 0\n\n function connect(): string {\n const id = (lastProviderId += 1)\n states[id] = []\n return id.toString()\n }\n\n function disconnect(id: string): void {\n if (id === null || Object.keys(states).indexOf(id) === -1) {\n return\n }\n\n delete states[id]\n commit()\n }\n\n function update(id: string, elements: Array<string> = []): void {\n if (id !== null && Object.keys(states).indexOf(id) > -1) {\n states[id] = elements\n }\n\n commit()\n }\n\n function collect(): Array<string> {\n const title = titleCallback('')\n\n const defaults: Record<string, string> = {\n ...(title ? { title: `<title inertia=\"\">${title}</title>` } : {}),\n }\n\n const elements = Object.values(states)\n .reduce((carry, elements) => carry.concat(elements), [])\n .reduce((carry, element) => {\n if (element.indexOf('<') === -1) {\n return carry\n }\n\n if (element.indexOf('<title ') === 0) {\n const title = element.match(/(<title [^>]+>)(.*?)(<\\/title>)/)\n carry.title = title ? `${title[1]}${titleCallback(title[2])}${title[3]}` : element\n return carry\n }\n\n const match = element.match(/ inertia=\"[^\"]+\"/)\n if (match) {\n carry[match[0]] = element\n } else {\n carry[Object.keys(carry).length] = element\n }\n\n return carry\n }, defaults)\n\n return Object.values(elements)\n }\n\n function commit(): void {\n isServer ? onUpdate(collect()) : Renderer.update(collect())\n }\n\n // By committing during initialization, we can guarantee that the default\n // tags are set, as well as that they exist during SSR itself.\n commit()\n\n return {\n forceUpdate: commit,\n createProvider: function () {\n const id = connect()\n\n return {\n update: (elements) => update(id, elements),\n disconnect: () => disconnect(id),\n }\n },\n }\n}\n", "import NProgress from 'nprogress'\nimport { GlobalEvent } from './types'\n\nlet timeout: NodeJS.Timeout | null = null\n\nfunction addEventListeners(delay: number): void {\n document.addEventListener('inertia:start', start.bind(null, delay))\n document.addEventListener('inertia:progress', progress)\n document.addEventListener('inertia:finish', finish)\n}\n\nfunction start(delay: number): void {\n timeout = setTimeout(() => NProgress.start(), delay)\n}\n\nfunction progress(event: GlobalEvent<'progress'>) {\n if (NProgress.isStarted() && event.detail.progress?.percentage) {\n NProgress.set(Math.max(NProgress.status!, (event.detail.progress.percentage / 100) * 0.9))\n }\n}\n\nfunction finish(event: GlobalEvent<'finish'>) {\n clearTimeout(timeout!)\n if (!NProgress.isStarted()) {\n return\n } else if (event.detail.visit.completed) {\n NProgress.done()\n } else if (event.detail.visit.interrupted) {\n NProgress.set(0)\n } else if (event.detail.visit.cancelled) {\n NProgress.done()\n NProgress.remove()\n }\n}\n\nfunction injectCSS(color: string): void {\n const element = document.createElement('style')\n element.type = 'text/css'\n element.textContent = `\n #nprogress {\n pointer-events: none;\n }\n\n #nprogress .bar {\n background: ${color};\n\n position: fixed;\n z-index: 1031;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 2px;\n }\n\n #nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n box-shadow: 0 0 10px ${color}, 0 0 5px ${color};\n opacity: 1.0;\n\n -webkit-transform: rotate(3deg) translate(0px, -4px);\n -ms-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n }\n\n #nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n }\n\n #nprogress .spinner-icon {\n width: 18px;\n height: 18px;\n box-sizing: border-box;\n\n border: solid 2px transparent;\n border-top-color: ${color};\n border-left-color: ${color};\n border-radius: 50%;\n\n -webkit-animation: nprogress-spinner 400ms linear infinite;\n animation: nprogress-spinner 400ms linear infinite;\n }\n\n .nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n }\n\n .nprogress-custom-parent #nprogress .spinner,\n .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n }\n\n @-webkit-keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n }\n @keyframes nprogress-spinner {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `\n document.head.appendChild(element)\n}\n\nexport default function setupProgress({\n delay = 250,\n color = '#29d',\n includeCSS = true,\n showSpinner = false,\n} = {}): void {\n addEventListeners(delay)\n NProgress.configure({ showSpinner })\n if (includeCSS) {\n injectCSS(color)\n }\n}\n", "export default function shouldIntercept(event: KeyboardEvent): boolean {\n const isLink = (event.currentTarget as HTMLElement).tagName.toLowerCase() === 'a'\n return !(\n (event.target && (event?.target as HTMLElement).isContentEditable) ||\n event.defaultPrevented ||\n (isLink && event.which > 1) ||\n (isLink && event.altKey) ||\n (isLink && event.ctrlKey) ||\n (isLink && event.metaKey) ||\n (isLink && event.shiftKey)\n )\n}\n", "import { Router } from './router'\n\nexport { default as createHeadManager } from './head'\nexport { default as setupProgress } from './progress'\nexport { default as shouldIntercept } from './shouldIntercept'\nexport * from './types'\nexport { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash } from './url'\nexport { type Router }\n\nexport const router = new Router()\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { default as Axios, AxiosResponse } from 'axios'\nimport debounce from './debounce'\nimport {\n fireBeforeEvent,\n fireErrorEvent,\n fireExceptionEvent,\n fireFinishEvent,\n fireInvalidEvent,\n fireNavigateEvent,\n fireProgressEvent,\n fireStartEvent,\n fireSuccessEvent,\n} from './events'\nimport { hasFiles } from './files'\nimport { objectToFormData } from './formData'\nimport modal from './modal'\nimport {\n ActiveVisit,\n GlobalEvent,\n GlobalEventNames,\n GlobalEventResult,\n LocationVisit,\n Page,\n PageHandler,\n PageResolver,\n PendingVisit,\n PreserveStateOption,\n RequestPayload,\n VisitId,\n VisitOptions,\n} from './types'\nimport { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash } from './url'\n\nconst isServer = typeof window === 'undefined'\n\nexport class Router {\n protected page!: Page\n protected resolveComponent!: PageResolver\n protected swapComponent!: PageHandler\n protected navigationType?: string\n protected activeVisit?: ActiveVisit\n protected visitId: VisitId = null\n\n public init({\n initialPage,\n resolveComponent,\n swapComponent,\n }: {\n initialPage: Page\n resolveComponent: PageResolver\n swapComponent: PageHandler\n }): void {\n this.page = initialPage\n this.resolveComponent = resolveComponent\n this.swapComponent = swapComponent\n\n this.setNavigationType()\n this.clearRememberedStateOnReload()\n\n if (this.isBackForwardVisit()) {\n this.handleBackForwardVisit(this.page)\n } else if (this.isLocationVisit()) {\n this.handleLocationVisit(this.page)\n } else {\n this.handleInitialPageVisit(this.page)\n }\n\n this.setupEventListeners()\n }\n\n protected setNavigationType(): void {\n this.navigationType =\n window.performance && window.performance.getEntriesByType('navigation').length > 0\n ? (window.performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming).type\n : 'navigate'\n }\n\n protected clearRememberedStateOnReload(): void {\n if (this.navigationType === 'reload' && window.history.state?.rememberedState) {\n delete window.history.state.rememberedState\n }\n }\n\n protected handleInitialPageVisit(page: Page): void {\n this.page.url += window.location.hash\n this.setPage(page, { preserveState: true }).then(() => fireNavigateEvent(page))\n }\n\n protected setupEventListeners(): void {\n window.addEventListener('popstate', this.handlePopstateEvent.bind(this))\n document.addEventListener('scroll', debounce(this.handleScrollEvent.bind(this), 100), true)\n }\n\n protected scrollRegions(): NodeListOf<Element> {\n return document.querySelectorAll('[scroll-region]')\n }\n\n protected handleScrollEvent(event: Event): void {\n if (\n typeof (event.target as Element).hasAttribute === 'function' &&\n (event.target as Element).hasAttribute('scroll-region')\n ) {\n this.saveScrollPositions()\n }\n }\n\n protected saveScrollPositions(): void {\n this.replaceState({\n ...this.page,\n scrollRegions: Array.from(this.scrollRegions()).map((region) => {\n return {\n top: region.scrollTop,\n left: region.scrollLeft,\n }\n }),\n })\n }\n\n protected resetScrollPositions(): void {\n window.scrollTo(0, 0)\n this.scrollRegions().forEach((region) => {\n if (typeof region.scrollTo === 'function') {\n region.scrollTo(0, 0)\n } else {\n region.scrollTop = 0\n region.scrollLeft = 0\n }\n })\n this.saveScrollPositions()\n if (window.location.hash) {\n // We're using a setTimeout() here as a workaround for a bug in the React adapter where the\n // rendering isn't completing fast enough, causing the anchor link to not be scrolled to.\n setTimeout(() => document.getElementById(window.location.hash.slice(1))?.scrollIntoView())\n }\n }\n\n protected restoreScrollPositions(): void {\n if (this.page.scrollRegions) {\n this.scrollRegions().forEach((region: Element, index: number) => {\n const scrollPosition = this.page.scrollRegions[index]\n if (!scrollPosition) {\n return\n } else if (typeof region.scrollTo === 'function') {\n region.scrollTo(scrollPosition.left, scrollPosition.top)\n } else {\n region.scrollTop = scrollPosition.top\n region.scrollLeft = scrollPosition.left\n }\n })\n }\n }\n\n protected isBackForwardVisit(): boolean {\n return window.history.state && this.navigationType === 'back_forward'\n }\n\n protected handleBackForwardVisit(page: Page): void {\n window.history.state.version = page.version\n this.setPage(window.history.state, { preserveScroll: true, preserveState: true }).then(() => {\n this.restoreScrollPositions()\n fireNavigateEvent(page)\n })\n }\n\n protected locationVisit(url: URL, preserveScroll: LocationVisit['preserveScroll']): boolean | void {\n try {\n const locationVisit: LocationVisit = { preserveScroll }\n window.sessionStorage.setItem('inertiaLocationVisit', JSON.stringify(locationVisit))\n window.location.href = url.href\n if (urlWithoutHash(window.location).href === urlWithoutHash(url).href) {\n window.location.reload()\n }\n } catch (error) {\n return false\n }\n }\n\n protected isLocationVisit(): boolean {\n try {\n return window.sessionStorage.getItem('inertiaLocationVisit') !== null\n } catch (error) {\n return false\n }\n }\n\n protected handleLocationVisit(page: Page): void {\n const locationVisit: LocationVisit = JSON.parse(window.sessionStorage.getItem('inertiaLocationVisit') || '')\n window.sessionStorage.removeItem('inertiaLocationVisit')\n page.url += window.location.hash\n page.rememberedState = window.history.state?.rememberedState ?? {}\n page.scrollRegions = window.history.state?.scrollRegions ?? []\n this.setPage(page, { preserveScroll: locationVisit.preserveScroll, preserveState: true }).then(() => {\n if (locationVisit.preserveScroll) {\n this.restoreScrollPositions()\n }\n fireNavigateEvent(page)\n })\n }\n\n protected isLocationVisitResponse(response: AxiosResponse): boolean {\n return !!(response && response.status === 409 && response.headers['x-inertia-location'])\n }\n\n protected isInertiaResponse(response: AxiosResponse): boolean {\n return !!response?.headers['x-inertia']\n }\n\n protected createVisitId(): VisitId {\n this.visitId = {}\n return this.visitId\n }\n\n protected cancelVisit(\n activeVisit: ActiveVisit,\n { cancelled = false, interrupted = false }: { cancelled?: boolean; interrupted?: boolean },\n ): void {\n if (activeVisit && !activeVisit.completed && !activeVisit.cancelled && !activeVisit.interrupted) {\n activeVisit.cancelToken.abort()\n activeVisit.onCancel()\n activeVisit.completed = false\n activeVisit.cancelled = cancelled\n activeVisit.interrupted = interrupted\n fireFinishEvent(activeVisit)\n activeVisit.onFinish(activeVisit)\n }\n }\n\n protected finishVisit(visit: ActiveVisit): void {\n if (!visit.cancelled && !visit.interrupted) {\n visit.completed = true\n visit.cancelled = false\n visit.interrupted = false\n fireFinishEvent(visit)\n visit.onFinish(visit)\n }\n }\n\n protected resolvePreserveOption(value: PreserveStateOption, page: Page): boolean | string {\n if (typeof value === 'function') {\n return value(page)\n } else if (value === 'errors') {\n return Object.keys(page.props.errors || {}).length > 0\n } else {\n return value\n }\n }\n\n public cancel(): void {\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { cancelled: true })\n }\n }\n\n public visit(\n href: string | URL,\n {\n method = 'get',\n data = {},\n replace = false,\n preserveScroll = false,\n preserveState = false,\n only = [],\n headers = {},\n errorBag = '',\n forceFormData = false,\n onCancelToken = () => {},\n onBefore = () => {},\n onStart = () => {},\n onProgress = () => {},\n onFinish = () => {},\n onCancel = () => {},\n onSuccess = () => {},\n onError = () => {},\n queryStringArrayFormat = 'brackets',\n }: VisitOptions = {},\n ): void {\n let url = typeof href === 'string' ? hrefToUrl(href) : href\n\n if ((hasFiles(data) || forceFormData) && !(data instanceof FormData)) {\n data = objectToFormData(data)\n }\n\n if (!(data instanceof FormData)) {\n const [_href, _data] = mergeDataIntoQueryString(method, url, data, queryStringArrayFormat)\n url = hrefToUrl(_href)\n data = _data\n }\n\n const visit: PendingVisit = {\n url,\n method,\n data,\n replace,\n preserveScroll,\n preserveState,\n only,\n headers,\n errorBag,\n forceFormData,\n queryStringArrayFormat,\n cancelled: false,\n completed: false,\n interrupted: false,\n }\n\n if (onBefore(visit) === false || !fireBeforeEvent(visit)) {\n return\n }\n\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { interrupted: true })\n }\n\n this.saveScrollPositions()\n\n const visitId = this.createVisitId()\n this.activeVisit = {\n ...visit,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n queryStringArrayFormat,\n cancelToken: new AbortController(),\n }\n\n onCancelToken({\n cancel: () => {\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { cancelled: true })\n }\n },\n })\n\n fireStartEvent(visit)\n onStart(visit)\n\n Axios({\n method,\n url: urlWithoutHash(url).href,\n data: method === 'get' ? {} : data,\n params: method === 'get' ? data : {},\n signal: this.activeVisit.cancelToken.signal,\n headers: {\n ...headers,\n Accept: 'text/html, application/xhtml+xml',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-Inertia': true,\n ...(only.length\n ? {\n 'X-Inertia-Partial-Component': this.page.component,\n 'X-Inertia-Partial-Data': only.join(','),\n }\n : {}),\n ...(errorBag && errorBag.length ? { 'X-Inertia-Error-Bag': errorBag } : {}),\n ...(this.page.version ? { 'X-Inertia-Version': this.page.version } : {}),\n },\n onUploadProgress: (progress) => {\n if (data instanceof FormData) {\n progress.percentage = progress.progress ? Math.round(progress.progress * 100) : 0\n fireProgressEvent(progress)\n onProgress(progress)\n }\n },\n })\n .then((response) => {\n if (!this.isInertiaResponse(response)) {\n return Promise.reject({ response })\n }\n\n const pageResponse: Page = response.data\n if (only.length && pageResponse.component === this.page.component) {\n pageResponse.props = { ...this.page.props, ...pageResponse.props }\n }\n preserveScroll = this.resolvePreserveOption(preserveScroll, pageResponse) as boolean\n preserveState = this.resolvePreserveOption(preserveState, pageResponse)\n if (preserveState && window.history.state?.rememberedState && pageResponse.component === this.page.component) {\n pageResponse.rememberedState = window.history.state.rememberedState\n }\n const requestUrl = url\n const responseUrl = hrefToUrl(pageResponse.url)\n if (requestUrl.hash && !responseUrl.hash && urlWithoutHash(requestUrl).href === responseUrl.href) {\n responseUrl.hash = requestUrl.hash\n pageResponse.url = responseUrl.href\n }\n return this.setPage(pageResponse, { visitId, replace, preserveScroll, preserveState })\n })\n .then(() => {\n const errors = this.page.props.errors || {}\n if (Object.keys(errors).length > 0) {\n const scopedErrors = errorBag ? (errors[errorBag] ? errors[errorBag] : {}) : errors\n fireErrorEvent(scopedErrors)\n return onError(scopedErrors)\n }\n fireSuccessEvent(this.page)\n return onSuccess(this.page)\n })\n .catch((error) => {\n if (this.isInertiaResponse(error.response)) {\n return this.setPage(error.response.data, { visitId })\n } else if (this.isLocationVisitResponse(error.response)) {\n const locationUrl = hrefToUrl(error.response.headers['x-inertia-location'])\n const requestUrl = url\n if (requestUrl.hash && !locationUrl.hash && urlWithoutHash(requestUrl).href === locationUrl.href) {\n locationUrl.hash = requestUrl.hash\n }\n this.locationVisit(locationUrl, preserveScroll === true)\n } else if (error.response) {\n if (fireInvalidEvent(error.response)) {\n modal.show(error.response.data)\n }\n } else {\n return Promise.reject(error)\n }\n })\n .then(() => {\n if (this.activeVisit) {\n this.finishVisit(this.activeVisit)\n }\n })\n .catch((error) => {\n if (!Axios.isCancel(error)) {\n const throwException = fireExceptionEvent(error)\n if (this.activeVisit) {\n this.finishVisit(this.activeVisit)\n }\n if (throwException) {\n return Promise.reject(error)\n }\n }\n })\n }\n\n protected setPage(\n page: Page,\n {\n visitId = this.createVisitId(),\n replace = false,\n preserveScroll = false,\n preserveState = false,\n }: {\n visitId?: VisitId\n replace?: boolean\n preserveScroll?: PreserveStateOption\n preserveState?: PreserveStateOption\n } = {},\n ): Promise<void> {\n return Promise.resolve(this.resolveComponent(page.component)).then((component) => {\n if (visitId === this.visitId) {\n page.scrollRegions = page.scrollRegions || []\n page.rememberedState = page.rememberedState || {}\n replace = replace || hrefToUrl(page.url).href === window.location.href\n replace ? this.replaceState(page) : this.pushState(page)\n this.swapComponent({ component, page, preserveState }).then(() => {\n if (!preserveScroll) {\n this.resetScrollPositions()\n }\n if (!replace) {\n fireNavigateEvent(page)\n }\n })\n }\n })\n }\n\n protected pushState(page: Page): void {\n this.page = page\n window.history.pushState(page, '', page.url)\n }\n\n protected replaceState(page: Page): void {\n this.page = page\n window.history.replaceState(page, '', page.url)\n }\n\n protected handlePopstateEvent(event: PopStateEvent): void {\n if (event.state !== null) {\n const page = event.state\n const visitId = this.createVisitId()\n Promise.resolve(this.resolveComponent(page.component)).then((component) => {\n if (visitId === this.visitId) {\n this.page = page\n this.swapComponent({ component, page, preserveState: false }).then(() => {\n this.restoreScrollPositions()\n fireNavigateEvent(page)\n })\n }\n })\n } else {\n const url = hrefToUrl(this.page.url)\n url.hash = window.location.hash\n this.replaceState({ ...this.page, url: url.href })\n this.resetScrollPositions()\n }\n }\n\n public get(url: URL | string, data: RequestPayload = {}, options: Omit<VisitOptions, 'method' | 'data'> = {}): void {\n return this.visit(url, { ...options, method: 'get', data })\n }\n\n public reload(options: Omit<VisitOptions, 'preserveScroll' | 'preserveState'> = {}): void {\n return this.visit(window.location.href, { ...options, preserveScroll: true, preserveState: true })\n }\n\n public replace(url: URL | string, options: Omit<VisitOptions, 'replace'> = {}): void {\n console.warn(\n `Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia.${\n options.method ?? 'get'\n }() instead.`,\n )\n return this.visit(url, { preserveState: true, ...options, replace: true })\n }\n\n public post(url: URL | string, data: RequestPayload = {}, options: Omit<VisitOptions, 'method' | 'data'> = {}): void {\n return this.visit(url, { preserveState: true, ...options, method: 'post', data })\n }\n\n public put(url: URL | string, data: RequestPayload = {}, options: Omit<VisitOptions, 'method' | 'data'> = {}): void {\n return this.visit(url, { preserveState: true, ...options, method: 'put', data })\n }\n\n public patch(\n url: URL | string,\n data: RequestPayload = {},\n options: Omit<VisitOptions, 'method' | 'data'> = {},\n ): void {\n return this.visit(url, { preserveState: true, ...options, method: 'patch', data })\n }\n\n public delete(url: URL | string, options: Omit<VisitOptions, 'method'> = {}): void {\n return this.visit(url, { preserveState: true, ...options, method: 'delete' })\n }\n\n public remember(data: unknown, key = 'default'): void {\n if (isServer) {\n return\n }\n\n this.replaceState({\n ...this.page,\n rememberedState: {\n ...this.page?.rememberedState,\n [key]: data,\n },\n })\n }\n\n public restore(key = 'default'): unknown {\n if (isServer) {\n return\n }\n\n return window.history.state?.rememberedState?.[key]\n }\n\n public on<TEventName extends GlobalEventNames>(\n type: TEventName,\n callback: (event: GlobalEvent<TEventName>) => GlobalEventResult<TEventName>,\n ): VoidFunction {\n const listener = ((event: GlobalEvent<TEventName>) => {\n const response = callback(event)\n if (event.cancelable && !event.defaultPrevented && response === false) {\n event.preventDefault()\n }\n }) as EventListener\n\n document.addEventListener(`inertia:${type}`, listener)\n return () => document.removeEventListener(`inertia:${type}`, listener)\n }\n}\n", "export default function debounce<F extends (...params: any[]) => ReturnType<F>>(fn: F, delay: number): F {\n let timeoutID: NodeJS.Timeout\n return function (...args: unknown[]) {\n clearTimeout(timeoutID)\n timeoutID = setTimeout(() => fn.apply(this, args), delay)\n } as F\n}\n", "import { GlobalEventDetails, GlobalEventNames, GlobalEventTrigger } from './types'\n\nfunction fireEvent<TEventName extends GlobalEventNames>(\n name: TEventName,\n options: CustomEventInit<GlobalEventDetails<TEventName>>,\n): boolean {\n return document.dispatchEvent(new CustomEvent(`inertia:${name}`, options))\n}\n\nexport const fireBeforeEvent: GlobalEventTrigger<'before'> = (visit) => {\n return fireEvent('before', { cancelable: true, detail: { visit } })\n}\n\nexport const fireErrorEvent: GlobalEventTrigger<'error'> = (errors) => {\n return fireEvent('error', { detail: { errors } })\n}\n\nexport const fireExceptionEvent: GlobalEventTrigger<'exception'> = (exception) => {\n return fireEvent('exception', { cancelable: true, detail: { exception } })\n}\n\nexport const fireFinishEvent: GlobalEventTrigger<'finish'> = (visit) => {\n return fireEvent('finish', { detail: { visit } })\n}\n\nexport const fireInvalidEvent: GlobalEventTrigger<'invalid'> = (response) => {\n return fireEvent('invalid', { cancelable: true, detail: { response } })\n}\n\nexport const fireNavigateEvent: GlobalEventTrigger<'navigate'> = (page) => {\n return fireEvent('navigate', { detail: { page } })\n}\n\nexport const fireProgressEvent: GlobalEventTrigger<'progress'> = (progress) => {\n return fireEvent('progress', { detail: { progress } })\n}\n\nexport const fireStartEvent: GlobalEventTrigger<'start'> = (visit) => {\n return fireEvent('start', { detail: { visit } })\n}\n\nexport const fireSuccessEvent: GlobalEventTrigger<'success'> = (page) => {\n return fireEvent('success', { detail: { page } })\n}\n", "import { FormDataConvertible, RequestPayload } from './types'\n\nexport function hasFiles(data: RequestPayload | FormDataConvertible): boolean {\n return (\n data instanceof File ||\n data instanceof Blob ||\n (data instanceof FileList && data.length > 0) ||\n (data instanceof FormData && Array.from(data.values()).some((value) => hasFiles(value))) ||\n (typeof data === 'object' && data !== null && Object.values(data).some((value) => hasFiles(value)))\n )\n}\n", "import { FormDataConvertible } from './types'\n\nexport function objectToFormData(\n source: Record<string, FormDataConvertible>,\n form: FormData = new FormData(),\n parentKey: string | null = null,\n): FormData {\n source = source || {}\n\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n append(form, composeKey(parentKey, key), source[key])\n }\n }\n\n return form\n}\n\nfunction composeKey(parent: string | null, key: string): string {\n return parent ? parent + '[' + key + ']' : key\n}\n\nfunction append(form: FormData, key: string, value: FormDataConvertible): void {\n if (Array.isArray(value)) {\n return Array.from(value.keys()).forEach((index) => append(form, composeKey(key, index.toString()), value[index]))\n } else if (value instanceof Date) {\n return form.append(key, value.toISOString())\n } else if (value instanceof File) {\n return form.append(key, value, value.name)\n } else if (value instanceof Blob) {\n return form.append(key, value)\n } else if (typeof value === 'boolean') {\n return form.append(key, value ? '1' : '0')\n } else if (typeof value === 'string') {\n return form.append(key, value)\n } else if (typeof value === 'number') {\n return form.append(key, `${value}`)\n } else if (value === null || value === undefined) {\n return form.append(key, '')\n }\n\n objectToFormData(value, form, key)\n}\n", "export default {\n modal: null,\n listener: null,\n\n show(html: Record<string, unknown> | string): void {\n if (typeof html === 'object') {\n html = `All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.<hr>${JSON.stringify(\n html,\n )}`\n }\n\n const page = document.createElement('html')\n page.innerHTML = html\n page.querySelectorAll('a').forEach((a) => a.setAttribute('target', '_top'))\n\n this.modal = document.createElement('div')\n this.modal.style.position = 'fixed'\n this.modal.style.width = '100vw'\n this.modal.style.height = '100vh'\n this.modal.style.padding = '50px'\n this.modal.style.boxSizing = 'border-box'\n this.modal.style.backgroundColor = 'rgba(0, 0, 0, .6)'\n this.modal.style.zIndex = 200000\n this.modal.addEventListener('click', () => this.hide())\n\n const iframe = document.createElement('iframe')\n iframe.style.backgroundColor = 'white'\n iframe.style.borderRadius = '5px'\n iframe.style.width = '100%'\n iframe.style.height = '100%'\n this.modal.appendChild(iframe)\n\n document.body.prepend(this.modal)\n document.body.style.overflow = 'hidden'\n if (!iframe.contentWindow) {\n throw new Error('iframe not yet ready.')\n }\n iframe.contentWindow.document.open()\n iframe.contentWindow.document.write(page.outerHTML)\n iframe.contentWindow.document.close()\n\n this.listener = this.hideOnEscape.bind(this)\n document.addEventListener('keydown', this.listener)\n },\n\n hide(): void {\n this.modal.outerHTML = ''\n this.modal = null\n document.body.style.overflow = 'visible'\n document.removeEventListener('keydown', this.listener)\n },\n\n hideOnEscape(event: KeyboardEvent): void {\n if (event.keyCode === 27) {\n this.hide()\n }\n },\n}\n", "import deepmerge from 'deepmerge'\nimport * as qs from 'qs'\nimport { FormDataConvertible, Method } from './types'\n\nexport function hrefToUrl(href: string | URL): URL {\n return new URL(href.toString(), window.location.toString())\n}\n\nexport function mergeDataIntoQueryString(\n method: Method,\n href: URL | string,\n data: Record<string, FormDataConvertible>,\n qsArrayFormat: 'indices' | 'brackets' = 'brackets',\n): [string, Record<string, FormDataConvertible>] {\n const hasHost = /^https?:\\/\\//.test(href.toString())\n const hasAbsolutePath = hasHost || href.toString().startsWith('/')\n const hasRelativePath = !hasAbsolutePath && !href.toString().startsWith('#') && !href.toString().startsWith('?')\n const hasSearch = href.toString().includes('?') || (method === 'get' && Object.keys(data).length)\n const hasHash = href.toString().includes('#')\n\n const url = new URL(href.toString(), 'http://localhost')\n\n if (method === 'get' && Object.keys(data).length) {\n url.search = qs.stringify(deepmerge(qs.parse(url.search, { ignoreQueryPrefix: true }), data), {\n encodeValuesOnly: true,\n arrayFormat: qsArrayFormat,\n })\n data = {}\n }\n\n return [\n [\n hasHost ? `${url.protocol}//${url.host}` : '',\n hasAbsolutePath ? url.pathname : '',\n hasRelativePath ? url.pathname.substring(1) : '',\n hasSearch ? url.search : '',\n hasHash ? url.hash : '',\n ].join(''),\n data,\n ]\n}\n\nexport function urlWithoutHash(url: URL | Location): URL {\n url = new URL(url.href)\n url.hash = ''\n return url\n}\n", "import debounce from './debounce'\n\nconst Renderer = {\n buildDOMElement(tag: string): ChildNode {\n const template = document.createElement('template')\n template.innerHTML = tag\n const node = template.content.firstChild as Element\n\n if (!tag.startsWith('<script ')) {\n return node\n }\n\n const script = document.createElement('script')\n script.innerHTML = node.innerHTML\n node.getAttributeNames().forEach((name) => {\n script.setAttribute(name, node.getAttribute(name) || '')\n })\n\n return script\n },\n\n isInertiaManagedElement(element: Element): boolean {\n return element.nodeType === Node.ELEMENT_NODE && element.getAttribute('inertia') !== null\n },\n\n findMatchingElementIndex(element: Element, elements: Array<Element>): number {\n const key = element.getAttribute('inertia')\n if (key !== null) {\n return elements.findIndex((element) => element.getAttribute('inertia') === key)\n }\n\n return -1\n },\n\n update: debounce(function (elements: Array<string>) {\n const sourceElements = elements.map((element) => this.buildDOMElement(element))\n const targetElements = Array.from(document.head.childNodes).filter((element) =>\n this.isInertiaManagedElement(element as Element),\n )\n\n targetElements.forEach((targetElement) => {\n const index = this.findMatchingElementIndex(targetElement as Element, sourceElements)\n if (index === -1) {\n targetElement?.parentNode?.removeChild(targetElement)\n return\n }\n\n const sourceElement = sourceElements.splice(index, 1)[0]\n if (sourceElement && !targetElement.isEqualNode(sourceElement)) {\n targetElement?.parentNode?.replaceChild(sourceElement, targetElement)\n }\n })\n\n sourceElements.forEach((element) => document.head.appendChild(element))\n }, 1),\n}\n\nexport default function createHeadManager(\n isServer: boolean,\n titleCallback: (title: string) => string,\n onUpdate: (elements: string[]) => void,\n): {\n forceUpdate: () => void\n createProvider: () => {\n update: (elements: string[]) => void\n disconnect: () => void\n }\n} {\n const states: Record<string, Array<string>> = {}\n let lastProviderId = 0\n\n function connect(): string {\n const id = (lastProviderId += 1)\n states[id] = []\n return id.toString()\n }\n\n function disconnect(id: string): void {\n if (id === null || Object.keys(states).indexOf(id) === -1) {\n return\n }\n\n delete states[id]\n commit()\n }\n\n function update(id: string, elements: Array<string> = []): void {\n if (id !== null && Object.keys(states).indexOf(id) > -1) {\n states[id] = elements\n }\n\n commit()\n }\n\n function collect(): Array<string> {\n const title = titleCallback('')\n\n const defaults: Record<string, string> = {\n ...(title ? { title: `<title inertia=\"\">${title}</title>` } : {}),\n }\n\n const elements = Object.values(states)\n .reduce((carry, elements) => carry.concat(elements), [])\n .reduce((carry, element) => {\n if (element.indexOf('<') === -1) {\n return carry\n }\n\n if (element.indexOf('<title ') === 0) {\n const title = element.match(/(<title [^>]+>)(.*?)(<\\/title>)/)\n carry.title = title ? `${title[1]}${titleCallback(title[2])}${title[3]}` : element\n return carry\n }\n\n const match = element.match(/ inertia=\"[^\"]+\"/)\n if (match) {\n carry[match[0]] = element\n } else {\n carry[Object.keys(carry).length] = element\n }\n\n return carry\n }, defaults)\n\n return Object.values(elements)\n }\n\n function commit(): void {\n isServer ? onUpdate(collect()) : Renderer.update(collect())\n }\n\n // By committing during initialization, we can guarantee that the default\n // tags are set, as well as that they exist during SSR itself.\n commit()\n\n return {\n forceUpdate: commit,\n createProvider: function () {\n const id = connect()\n\n return {\n update: (elements) => update(id, elements),\n disconnect: () => disconnect(id),\n }\n },\n }\n}\n", "import NProgress from 'nprogress'\nimport { GlobalEvent } from './types'\n\nlet timeout: NodeJS.Timeout | null = null\n\nfunction addEventListeners(delay: number): void {\n document.addEventListener('inertia:start', start.bind(null, delay))\n document.addEventListener('inertia:progress', progress)\n document.addEventListener('inertia:finish', finish)\n}\n\nfunction start(delay: number): void {\n timeout = setTimeout(() => NProgress.start(), delay)\n}\n\nfunction progress(event: GlobalEvent<'progress'>) {\n if (NProgress.isStarted() && event.detail.progress?.percentage) {\n NProgress.set(Math.max(NProgress.status!, (event.detail.progress.percentage / 100) * 0.9))\n }\n}\n\nfunction finish(event: GlobalEvent<'finish'>) {\n clearTimeout(timeout!)\n if (!NProgress.isStarted()) {\n return\n } else if (event.detail.visit.completed) {\n NProgress.done()\n } else if (event.detail.visit.interrupted) {\n NProgress.set(0)\n } else if (event.detail.visit.cancelled) {\n NProgress.done()\n NProgress.remove()\n }\n}\n\nfunction injectCSS(color: string): void {\n const element = document.createElement('style')\n element.type = 'text/css'\n element.textContent = `\n #nprogress {\n pointer-events: none;\n }\n\n #nprogress .bar {\n background: ${color};\n\n position: fixed;\n z-index: 1031;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 2px;\n }\n\n #nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n box-shadow: 0 0 10px ${color}, 0 0 5px ${color};\n opacity: 1.0;\n\n -webkit-transform: rotate(3deg) translate(0px, -4px);\n -ms-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n }\n\n #nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n }\n\n #nprogress .spinner-icon {\n width: 18px;\n height: 18px;\n box-sizing: border-box;\n\n border: solid 2px transparent;\n border-top-color: ${color};\n border-left-color: ${color};\n border-radius: 50%;\n\n -webkit-animation: nprogress-spinner 400ms linear infinite;\n animation: nprogress-spinner 400ms linear infinite;\n }\n\n .nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n }\n\n .nprogress-custom-parent #nprogress .spinner,\n .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n }\n\n @-webkit-keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n }\n @keyframes nprogress-spinner {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `\n document.head.appendChild(element)\n}\n\nexport default function setupProgress({\n delay = 250,\n color = '#29d',\n includeCSS = true,\n showSpinner = false,\n} = {}): void {\n addEventListeners(delay)\n NProgress.configure({ showSpinner })\n if (includeCSS) {\n injectCSS(color)\n }\n}\n", "export default function shouldIntercept(event: KeyboardEvent): boolean {\n const isLink = (event.currentTarget as HTMLElement).tagName.toLowerCase() === 'a'\n return !(\n (event.target && (event?.target as HTMLElement).isContentEditable) ||\n event.defaultPrevented ||\n (isLink && event.which > 1) ||\n (isLink && event.altKey) ||\n (isLink && event.ctrlKey) ||\n (isLink && event.metaKey) ||\n (isLink && event.shiftKey)\n )\n}\n", "import { Router } from './router'\n\nexport { default as createHeadManager } from './head'\nexport { default as setupProgress } from './progress'\nexport { default as shouldIntercept } from './shouldIntercept'\nexport * from './types'\nexport { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash } from './url'\nexport { type Router }\n\nexport const router = new Router()\n"],
5
+ "mappings": "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",
6
6
  "names": ["Axios", "debounce", "fn", "delay", "timeoutID", "args", "fireEvent", "name", "options", "fireBeforeEvent", "visit", "fireErrorEvent", "errors", "fireExceptionEvent", "exception", "fireFinishEvent", "fireInvalidEvent", "response", "fireNavigateEvent", "page", "fireProgressEvent", "progress", "fireStartEvent", "fireSuccessEvent", "hasFiles", "data", "value", "objectToFormData", "source", "form", "parentKey", "key", "append", "composeKey", "parent", "value", "index", "modal_default", "html", "page", "a", "iframe", "event", "deepmerge", "qs", "hrefToUrl", "href", "mergeDataIntoQueryString", "method", "data", "qsArrayFormat", "hasHost", "hasAbsolutePath", "hasRelativePath", "hasSearch", "hasHash", "url", "urlWithoutHash", "isServer", "Router", "initialPage", "resolveComponent", "swapComponent", "page", "fireNavigateEvent", "debounce", "event", "region", "index", "scrollPosition", "url", "preserveScroll", "locationVisit", "urlWithoutHash", "response", "activeVisit", "cancelled", "interrupted", "fireFinishEvent", "visit", "value", "href", "method", "data", "replace", "preserveState", "only", "headers", "errorBag", "forceFormData", "onCancelToken", "onBefore", "onStart", "onProgress", "onFinish", "onCancel", "onSuccess", "onError", "queryStringArrayFormat", "hrefToUrl", "hasFiles", "objectToFormData", "_href", "_data", "mergeDataIntoQueryString", "fireBeforeEvent", "visitId", "fireStartEvent", "Axios", "progress", "fireProgressEvent", "pageResponse", "requestUrl", "responseUrl", "errors", "scopedErrors", "fireErrorEvent", "fireSuccessEvent", "error", "locationUrl", "fireInvalidEvent", "modal_default", "throwException", "fireExceptionEvent", "component", "options", "key", "type", "callback", "listener", "Renderer", "tag", "template", "node", "script", "name", "element", "elements", "key", "debounce", "sourceElements", "targetElement", "index", "sourceElement", "createHeadManager", "isServer", "titleCallback", "onUpdate", "states", "lastProviderId", "connect", "id", "disconnect", "commit", "update", "collect", "title", "defaults", "carry", "match", "NProgress", "timeout", "addEventListeners", "delay", "start", "progress", "finish", "event", "injectCSS", "color", "element", "setupProgress", "includeCSS", "showSpinner", "shouldIntercept", "event", "isLink", "router", "Router"]
7
7
  }
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var oe=Object.create;var I=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var le=Object.getPrototypeOf,ce=Object.prototype.hasOwnProperty;var de=(t,e)=>{for(var i in e)I(t,i,{get:e[i],enumerable:!0})},K=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ae(e))!ce.call(t,o)&&o!==i&&I(t,o,{get:()=>e[o],enumerable:!(n=se(e,o))||n.enumerable});return t};var O=(t,e,i)=>(i=t!=null?oe(le(t)):{},K(e||!t||!t.__esModule?I(i,"default",{value:t,enumerable:!0}):i,t)),pe=t=>K(I({},"__esModule",{value:!0}),t);var Ee={};de(Ee,{createHeadManager:()=>M,hrefToUrl:()=>m,mergeDataIntoQueryString:()=>N,router:()=>be,setupProgress:()=>j,shouldIntercept:()=>H,urlWithoutHash:()=>b});module.exports=pe(Ee);var G=O(require("axios"),1);function R(t,e){let i;return function(...n){clearTimeout(i),i=setTimeout(()=>t.apply(this,n),e)}}function f(t,e){return document.dispatchEvent(new CustomEvent(`inertia:${t}`,e))}var X=t=>f("before",{cancelable:!0,detail:{visit:t}}),J=t=>f("error",{detail:{errors:t}}),z=t=>f("exception",{cancelable:!0,detail:{exception:t}}),D=t=>f("finish",{detail:{visit:t}}),B=t=>f("invalid",{cancelable:!0,detail:{response:t}}),S=t=>f("navigate",{detail:{page:t}}),_=t=>f("progress",{detail:{progress:t}}),Q=t=>f("start",{detail:{visit:t}}),Y=t=>f("success",{detail:{page:t}});function C(t){return t instanceof File||t instanceof Blob||t instanceof FileList&&t.length>0||t instanceof FormData&&Array.from(t.values()).some(e=>C(e))||typeof t=="object"&&t!==null&&Object.values(t).some(e=>C(e))}function U(t,e=new FormData,i=null){t=t||{};for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&ee(e,Z(i,n),t[n]);return e}function Z(t,e){return t?t+"["+e+"]":e}function ee(t,e,i){if(Array.isArray(i))return Array.from(i.keys()).forEach(n=>ee(t,Z(e,n.toString()),i[n]));if(i instanceof Date)return t.append(e,i.toISOString());if(i instanceof File)return t.append(e,i,i.name);if(i instanceof Blob)return t.append(e,i);if(typeof i=="boolean")return t.append(e,i?"1":"0");if(typeof i=="string")return t.append(e,i);if(typeof i=="number")return t.append(e,`${i}`);if(i==null)return t.append(e,"");U(i,t,e)}var te={modal:null,listener:null,show(t){typeof t=="object"&&(t=`All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.<hr>${JSON.stringify(t)}`);let e=document.createElement("html");e.innerHTML=t,e.querySelectorAll("a").forEach(n=>n.setAttribute("target","_top")),this.modal=document.createElement("div"),this.modal.style.position="fixed",this.modal.style.width="100vw",this.modal.style.height="100vh",this.modal.style.padding="50px",this.modal.style.boxSizing="border-box",this.modal.style.backgroundColor="rgba(0, 0, 0, .6)",this.modal.style.zIndex=2e5,this.modal.addEventListener("click",()=>this.hide());let i=document.createElement("iframe");if(i.style.backgroundColor="white",i.style.borderRadius="5px",i.style.width="100%",i.style.height="100%",this.modal.appendChild(i),document.body.prepend(this.modal),document.body.style.overflow="hidden",!i.contentWindow)throw new Error("iframe not yet ready.");i.contentWindow.document.open(),i.contentWindow.document.write(e.outerHTML),i.contentWindow.document.close(),this.listener=this.hideOnEscape.bind(this),document.addEventListener("keydown",this.listener)},hide(){this.modal.outerHTML="",this.modal=null,document.body.style.overflow="visible",document.removeEventListener("keydown",this.listener)},hideOnEscape(t){t.keyCode===27&&this.hide()}};var ie=O(require("deepmerge"),1),F=O(require("qs"),1);function m(t){return new URL(t.toString(),window.location.toString())}function N(t,e,i,n="brackets"){let o=/^https?:\/\//.test(e.toString()),c=o||e.toString().startsWith("/"),h=!c&&!e.toString().startsWith("#")&&!e.toString().startsWith("?"),g=e.toString().includes("?")||t==="get"&&Object.keys(i).length,E=e.toString().includes("#"),a=new URL(e.toString(),"http://localhost");return t==="get"&&Object.keys(i).length&&(a.search=F.stringify((0,ie.default)(F.parse(a.search,{ignoreQueryPrefix:!0}),i),{encodeValuesOnly:!0,arrayFormat:n}),i={}),[[o?`${a.protocol}//${a.host}`:"",c?a.pathname:"",h?a.pathname.substring(1):"",g?a.search:"",E?a.hash:""].join(""),i]}function b(t){return t=new URL(t.href),t.hash="",t}var ne=typeof window>"u",A=class{constructor(){this.visitId=null}init({initialPage:e,resolveComponent:i,swapComponent:n}){this.page=e,this.resolveComponent=i,this.swapComponent=n,this.setNavigationType(),this.clearRememberedStateOnReload(),this.isBackForwardVisit()?this.handleBackForwardVisit(this.page):this.isLocationVisit()?this.handleLocationVisit(this.page):this.handleInitialPageVisit(this.page),this.setupEventListeners()}setNavigationType(){this.navigationType=window.performance&&window.performance.getEntriesByType("navigation").length>0?window.performance.getEntriesByType("navigation")[0].type:"navigate"}clearRememberedStateOnReload(){this.navigationType==="reload"&&window.history.state?.rememberedState&&delete window.history.state.rememberedState}handleInitialPageVisit(e){this.page.url+=window.location.hash,this.setPage(e,{preserveState:!0}).then(()=>S(e))}setupEventListeners(){window.addEventListener("popstate",this.handlePopstateEvent.bind(this)),document.addEventListener("scroll",R(this.handleScrollEvent.bind(this),100),!0)}scrollRegions(){return document.querySelectorAll("[scroll-region]")}handleScrollEvent(e){typeof e.target.hasAttribute=="function"&&e.target.hasAttribute("scroll-region")&&this.saveScrollPositions()}saveScrollPositions(){this.replaceState({...this.page,scrollRegions:Array.from(this.scrollRegions()).map(e=>({top:e.scrollTop,left:e.scrollLeft}))})}resetScrollPositions(){window.scrollTo(0,0),this.scrollRegions().forEach(e=>{typeof e.scrollTo=="function"?e.scrollTo(0,0):(e.scrollTop=0,e.scrollLeft=0)}),this.saveScrollPositions(),window.location.hash&&setTimeout(()=>document.getElementById(window.location.hash.slice(1))?.scrollIntoView())}restoreScrollPositions(){this.page.scrollRegions&&this.scrollRegions().forEach((e,i)=>{let n=this.page.scrollRegions[i];if(n)typeof e.scrollTo=="function"?e.scrollTo(n.left,n.top):(e.scrollTop=n.top,e.scrollLeft=n.left);else return})}isBackForwardVisit(){return window.history.state&&this.navigationType==="back_forward"}handleBackForwardVisit(e){window.history.state.version=e.version,this.setPage(window.history.state,{preserveScroll:!0,preserveState:!0}).then(()=>{this.restoreScrollPositions(),S(e)})}locationVisit(e,i){try{let n={preserveScroll:i};window.sessionStorage.setItem("inertiaLocationVisit",JSON.stringify(n)),window.location.href=e.href,b(window.location).href===b(e).href&&window.location.reload()}catch{return!1}}isLocationVisit(){try{return window.sessionStorage.getItem("inertiaLocationVisit")!==null}catch{return!1}}handleLocationVisit(e){let i=JSON.parse(window.sessionStorage.getItem("inertiaLocationVisit")||"");window.sessionStorage.removeItem("inertiaLocationVisit"),e.url+=window.location.hash,e.rememberedState=window.history.state?.rememberedState??{},e.scrollRegions=window.history.state?.scrollRegions??[],this.setPage(e,{preserveScroll:i.preserveScroll,preserveState:!0}).then(()=>{i.preserveScroll&&this.restoreScrollPositions(),S(e)})}isLocationVisitResponse(e){return!!(e&&e.status===409&&e.headers["x-inertia-location"])}isInertiaResponse(e){return!!e?.headers["x-inertia"]}createVisitId(){return this.visitId={},this.visitId}cancelVisit(e,{cancelled:i=!1,interrupted:n=!1}){e&&!e.completed&&!e.cancelled&&!e.interrupted&&(e.cancelToken.abort(),e.onCancel(),e.completed=!1,e.cancelled=i,e.interrupted=n,D(e),e.onFinish(e))}finishVisit(e){!e.cancelled&&!e.interrupted&&(e.completed=!0,e.cancelled=!1,e.interrupted=!1,D(e),e.onFinish(e))}resolvePreserveOption(e,i){return typeof e=="function"?e(i):e==="errors"?Object.keys(i.props.errors||{}).length>0:e}cancel(){this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}visit(e,{method:i="get",data:n={},replace:o=!1,preserveScroll:c=!1,preserveState:h=!1,only:g=[],headers:E={},errorBag:a="",forceFormData:l=!1,onCancelToken:v=()=>{},onBefore:L=()=>{},onStart:d=()=>{},onProgress:p=()=>{},onFinish:T=()=>{},onCancel:y=()=>{},onSuccess:$=()=>{},onError:q=()=>{},queryStringArrayFormat:k="brackets"}={}){let x=typeof e=="string"?m(e):e;if((C(n)||l)&&!(n instanceof FormData)&&(n=U(n)),!(n instanceof FormData)){let[r,s]=N(i,x,n,k);x=m(r),n=s}let P={url:x,method:i,data:n,replace:o,preserveScroll:c,preserveState:h,only:g,headers:E,errorBag:a,forceFormData:l,queryStringArrayFormat:k,cancelled:!1,completed:!1,interrupted:!1};if(L(P)===!1||!X(P))return;this.activeVisit&&this.cancelVisit(this.activeVisit,{interrupted:!0}),this.saveScrollPositions();let W=this.createVisitId();this.activeVisit={...P,onCancelToken:v,onBefore:L,onStart:d,onProgress:p,onFinish:T,onCancel:y,onSuccess:$,onError:q,queryStringArrayFormat:k,cancelToken:new AbortController},v({cancel:()=>{this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}}),Q(P),d(P),(0,G.default)({method:i,url:b(x).href,data:i==="get"?{}:n,params:i==="get"?n:{},signal:this.activeVisit.cancelToken.signal,headers:{...E,Accept:"text/html, application/xhtml+xml","X-Requested-With":"XMLHttpRequest","X-Inertia":!0,...g.length?{"X-Inertia-Partial-Component":this.page.component,"X-Inertia-Partial-Data":g.join(",")}:{},...a&&a.length?{"X-Inertia-Error-Bag":a}:{},...this.page.version?{"X-Inertia-Version":this.page.version}:{}},onUploadProgress:r=>{n instanceof FormData&&(r.percentage=r.progress?Math.round(r.progress*100):0,_(r),p(r))}}).then(r=>{if(!this.isInertiaResponse(r))return Promise.reject({response:r});let s=r.data;g.length&&s.component===this.page.component&&(s.props={...this.page.props,...s.props}),c=this.resolvePreserveOption(c,s),h=this.resolvePreserveOption(h,s),h&&window.history.state?.rememberedState&&s.component===this.page.component&&(s.rememberedState=window.history.state.rememberedState);let w=x,V=m(s.url);return w.hash&&!V.hash&&b(w).href===V.href&&(V.hash=w.hash,s.url=V.href),this.setPage(s,{visitId:W,replace:o,preserveScroll:c,preserveState:h})}).then(()=>{let r=this.page.props.errors||{};if(Object.keys(r).length>0){let s=a?r[a]?r[a]:{}:r;return J(s),q(s)}return Y(this.page),$(this.page)}).catch(r=>{if(this.isInertiaResponse(r.response))return this.setPage(r.response.data,{visitId:W});if(this.isLocationVisitResponse(r.response)){let s=m(r.response.headers["x-inertia-location"]),w=x;w.hash&&!s.hash&&b(w).href===s.href&&(s.hash=w.hash),this.locationVisit(s,c===!0)}else if(r.response)B(r.response)&&te.show(r.response.data);else return Promise.reject(r)}).then(()=>{this.activeVisit&&this.finishVisit(this.activeVisit)}).catch(r=>{if(!G.default.isCancel(r)){let s=z(r);if(this.activeVisit&&this.finishVisit(this.activeVisit),s)return Promise.reject(r)}})}setPage(e,{visitId:i=this.createVisitId(),replace:n=!1,preserveScroll:o=!1,preserveState:c=!1}={}){return Promise.resolve(this.resolveComponent(e.component)).then(h=>{i===this.visitId&&(e.scrollRegions=e.scrollRegions||[],e.rememberedState=e.rememberedState||{},n=n||m(e.url).href===window.location.href,n?this.replaceState(e):this.pushState(e),this.swapComponent({component:h,page:e,preserveState:c}).then(()=>{o||this.resetScrollPositions(),n||S(e)}))})}pushState(e){this.page=e,window.history.pushState(e,"",e.url)}replaceState(e){this.page=e,window.history.replaceState(e,"",e.url)}handlePopstateEvent(e){if(e.state!==null){let i=e.state,n=this.createVisitId();Promise.resolve(this.resolveComponent(i.component)).then(o=>{n===this.visitId&&(this.page=i,this.swapComponent({component:o,page:i,preserveState:!1}).then(()=>{this.restoreScrollPositions(),S(i)}))})}else{let i=m(this.page.url);i.hash=window.location.hash,this.replaceState({...this.page,url:i.href}),this.resetScrollPositions()}}get(e,i={},n={}){return this.visit(e,{...n,method:"get",data:i})}reload(e={}){return this.visit(window.location.href,{...e,preserveScroll:!0,preserveState:!0})}replace(e,i={}){return console.warn(`Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia.${i.method??"get"}() instead.`),this.visit(e,{preserveState:!0,...i,replace:!0})}post(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"post",data:i})}put(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"put",data:i})}patch(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"patch",data:i})}delete(e,i={}){return this.visit(e,{preserveState:!0,...i,method:"delete"})}remember(e,i="default"){ne||this.replaceState({...this.page,rememberedState:{...this.page?.rememberedState,[i]:e}})}restore(e="default"){if(!ne)return window.history.state?.rememberedState?.[e]}on(e,i){let n=o=>{let c=i(o);o.cancelable&&!o.defaultPrevented&&c===!1&&o.preventDefault()};return document.addEventListener(`inertia:${e}`,n),()=>document.removeEventListener(`inertia:${e}`,n)}};var he={buildDOMElement(t){let e=document.createElement("template");e.innerHTML=t;let i=e.content.firstChild;if(!t.startsWith("<script "))return i;let n=document.createElement("script");return n.innerHTML=i.innerHTML,i.getAttributeNames().forEach(o=>{n.setAttribute(o,i.getAttribute(o)||"")}),n},isInertiaManagedElement(t){return t.nodeType===Node.ELEMENT_NODE&&t.getAttribute("inertia")!==null},findMatchingElementIndex(t,e){let i=t.getAttribute("inertia");return i!==null?e.findIndex(n=>n.getAttribute("inertia")===i):-1},update:R(function(t){let e=t.map(n=>this.buildDOMElement(n));Array.from(document.head.childNodes).filter(n=>this.isInertiaManagedElement(n)).forEach(n=>{let o=this.findMatchingElementIndex(n,e);if(o===-1){n?.parentNode?.removeChild(n);return}let c=e.splice(o,1)[0];c&&!n.isEqualNode(c)&&n?.parentNode?.replaceChild(c,n)}),e.forEach(n=>document.head.appendChild(n))},1)};function M(t,e,i){let n={},o=0;function c(){let l=o+=1;return n[l]=[],l.toString()}function h(l){l===null||Object.keys(n).indexOf(l)===-1||(delete n[l],a())}function g(l,v=[]){l!==null&&Object.keys(n).indexOf(l)>-1&&(n[l]=v),a()}function E(){let l=e(""),v={...l?{title:`<title inertia="">${l}</title>`}:{}},L=Object.values(n).reduce((d,p)=>d.concat(p),[]).reduce((d,p)=>{if(p.indexOf("<")===-1)return d;if(p.indexOf("<title ")===0){let y=p.match(/(<title [^>]+>)(.*?)(<\/title>)/);return d.title=y?`${y[1]}${e(y[2])}${y[3]}`:p,d}let T=p.match(/ inertia="[^"]+"/);return T?d[T[0]]=p:d[Object.keys(d).length]=p,d},v);return Object.values(L)}function a(){t?i(E()):he.update(E())}return a(),{forceUpdate:a,createProvider:function(){let l=c();return{update:v=>g(l,v),disconnect:()=>h(l)}}}}var u=O(require("nprogress"),1),re=null;function ue(t){document.addEventListener("inertia:start",fe.bind(null,t)),document.addEventListener("inertia:progress",me),document.addEventListener("inertia:finish",ge)}function fe(t){re=setTimeout(()=>u.default.start(),t)}function me(t){u.default.isStarted()&&t.detail.progress?.percentage&&u.default.set(Math.max(u.default.status,t.detail.progress.percentage/100*.9))}function ge(t){if(clearTimeout(re),u.default.isStarted())t.detail.visit.completed?u.default.done():t.detail.visit.interrupted?u.default.set(0):t.detail.visit.cancelled&&(u.default.done(),u.default.remove());else return}function ve(t){let e=document.createElement("style");e.type="text/css",e.textContent=`
1
+ "use strict";var oe=Object.create;var I=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var le=Object.getPrototypeOf,ce=Object.prototype.hasOwnProperty;var de=(t,e)=>{for(var i in e)I(t,i,{get:e[i],enumerable:!0})},K=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ae(e))!ce.call(t,o)&&o!==i&&I(t,o,{get:()=>e[o],enumerable:!(n=se(e,o))||n.enumerable});return t};var O=(t,e,i)=>(i=t!=null?oe(le(t)):{},K(e||!t||!t.__esModule?I(i,"default",{value:t,enumerable:!0}):i,t)),pe=t=>K(I({},"__esModule",{value:!0}),t);var Ee={};de(Ee,{createHeadManager:()=>M,hrefToUrl:()=>m,mergeDataIntoQueryString:()=>N,router:()=>be,setupProgress:()=>j,shouldIntercept:()=>H,urlWithoutHash:()=>b});module.exports=pe(Ee);var G=O(require("axios"),1);function R(t,e){let i;return function(...n){clearTimeout(i),i=setTimeout(()=>t.apply(this,n),e)}}function f(t,e){return document.dispatchEvent(new CustomEvent(`inertia:${t}`,e))}var X=t=>f("before",{cancelable:!0,detail:{visit:t}}),J=t=>f("error",{detail:{errors:t}}),z=t=>f("exception",{cancelable:!0,detail:{exception:t}}),D=t=>f("finish",{detail:{visit:t}}),B=t=>f("invalid",{cancelable:!0,detail:{response:t}}),x=t=>f("navigate",{detail:{page:t}}),_=t=>f("progress",{detail:{progress:t}}),Q=t=>f("start",{detail:{visit:t}}),Y=t=>f("success",{detail:{page:t}});function C(t){return t instanceof File||t instanceof Blob||t instanceof FileList&&t.length>0||t instanceof FormData&&Array.from(t.values()).some(e=>C(e))||typeof t=="object"&&t!==null&&Object.values(t).some(e=>C(e))}function U(t,e=new FormData,i=null){t=t||{};for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&ee(e,Z(i,n),t[n]);return e}function Z(t,e){return t?t+"["+e+"]":e}function ee(t,e,i){if(Array.isArray(i))return Array.from(i.keys()).forEach(n=>ee(t,Z(e,n.toString()),i[n]));if(i instanceof Date)return t.append(e,i.toISOString());if(i instanceof File)return t.append(e,i,i.name);if(i instanceof Blob)return t.append(e,i);if(typeof i=="boolean")return t.append(e,i?"1":"0");if(typeof i=="string")return t.append(e,i);if(typeof i=="number")return t.append(e,`${i}`);if(i==null)return t.append(e,"");U(i,t,e)}var te={modal:null,listener:null,show(t){typeof t=="object"&&(t=`All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.<hr>${JSON.stringify(t)}`);let e=document.createElement("html");e.innerHTML=t,e.querySelectorAll("a").forEach(n=>n.setAttribute("target","_top")),this.modal=document.createElement("div"),this.modal.style.position="fixed",this.modal.style.width="100vw",this.modal.style.height="100vh",this.modal.style.padding="50px",this.modal.style.boxSizing="border-box",this.modal.style.backgroundColor="rgba(0, 0, 0, .6)",this.modal.style.zIndex=2e5,this.modal.addEventListener("click",()=>this.hide());let i=document.createElement("iframe");if(i.style.backgroundColor="white",i.style.borderRadius="5px",i.style.width="100%",i.style.height="100%",this.modal.appendChild(i),document.body.prepend(this.modal),document.body.style.overflow="hidden",!i.contentWindow)throw new Error("iframe not yet ready.");i.contentWindow.document.open(),i.contentWindow.document.write(e.outerHTML),i.contentWindow.document.close(),this.listener=this.hideOnEscape.bind(this),document.addEventListener("keydown",this.listener)},hide(){this.modal.outerHTML="",this.modal=null,document.body.style.overflow="visible",document.removeEventListener("keydown",this.listener)},hideOnEscape(t){t.keyCode===27&&this.hide()}};var ie=O(require("deepmerge"),1),F=O(require("qs"),1);function m(t){return new URL(t.toString(),window.location.toString())}function N(t,e,i,n="brackets"){let o=/^https?:\/\//.test(e.toString()),c=o||e.toString().startsWith("/"),h=!c&&!e.toString().startsWith("#")&&!e.toString().startsWith("?"),g=e.toString().includes("?")||t==="get"&&Object.keys(i).length,E=e.toString().includes("#"),a=new URL(e.toString(),"http://localhost");return t==="get"&&Object.keys(i).length&&(a.search=F.stringify((0,ie.default)(F.parse(a.search,{ignoreQueryPrefix:!0}),i),{encodeValuesOnly:!0,arrayFormat:n}),i={}),[[o?`${a.protocol}//${a.host}`:"",c?a.pathname:"",h?a.pathname.substring(1):"",g?a.search:"",E?a.hash:""].join(""),i]}function b(t){return t=new URL(t.href),t.hash="",t}var ne=typeof window>"u",A=class{constructor(){this.visitId=null}init({initialPage:e,resolveComponent:i,swapComponent:n}){this.page=e,this.resolveComponent=i,this.swapComponent=n,this.setNavigationType(),this.clearRememberedStateOnReload(),this.isBackForwardVisit()?this.handleBackForwardVisit(this.page):this.isLocationVisit()?this.handleLocationVisit(this.page):this.handleInitialPageVisit(this.page),this.setupEventListeners()}setNavigationType(){this.navigationType=window.performance&&window.performance.getEntriesByType("navigation").length>0?window.performance.getEntriesByType("navigation")[0].type:"navigate"}clearRememberedStateOnReload(){this.navigationType==="reload"&&window.history.state?.rememberedState&&delete window.history.state.rememberedState}handleInitialPageVisit(e){this.page.url+=window.location.hash,this.setPage(e,{preserveState:!0}).then(()=>x(e))}setupEventListeners(){window.addEventListener("popstate",this.handlePopstateEvent.bind(this)),document.addEventListener("scroll",R(this.handleScrollEvent.bind(this),100),!0)}scrollRegions(){return document.querySelectorAll("[scroll-region]")}handleScrollEvent(e){typeof e.target.hasAttribute=="function"&&e.target.hasAttribute("scroll-region")&&this.saveScrollPositions()}saveScrollPositions(){this.replaceState({...this.page,scrollRegions:Array.from(this.scrollRegions()).map(e=>({top:e.scrollTop,left:e.scrollLeft}))})}resetScrollPositions(){window.scrollTo(0,0),this.scrollRegions().forEach(e=>{typeof e.scrollTo=="function"?e.scrollTo(0,0):(e.scrollTop=0,e.scrollLeft=0)}),this.saveScrollPositions(),window.location.hash&&setTimeout(()=>document.getElementById(window.location.hash.slice(1))?.scrollIntoView())}restoreScrollPositions(){this.page.scrollRegions&&this.scrollRegions().forEach((e,i)=>{let n=this.page.scrollRegions[i];if(n)typeof e.scrollTo=="function"?e.scrollTo(n.left,n.top):(e.scrollTop=n.top,e.scrollLeft=n.left);else return})}isBackForwardVisit(){return window.history.state&&this.navigationType==="back_forward"}handleBackForwardVisit(e){window.history.state.version=e.version,this.setPage(window.history.state,{preserveScroll:!0,preserveState:!0}).then(()=>{this.restoreScrollPositions(),x(e)})}locationVisit(e,i){try{let n={preserveScroll:i};window.sessionStorage.setItem("inertiaLocationVisit",JSON.stringify(n)),window.location.href=e.href,b(window.location).href===b(e).href&&window.location.reload()}catch{return!1}}isLocationVisit(){try{return window.sessionStorage.getItem("inertiaLocationVisit")!==null}catch{return!1}}handleLocationVisit(e){let i=JSON.parse(window.sessionStorage.getItem("inertiaLocationVisit")||"");window.sessionStorage.removeItem("inertiaLocationVisit"),e.url+=window.location.hash,e.rememberedState=window.history.state?.rememberedState??{},e.scrollRegions=window.history.state?.scrollRegions??[],this.setPage(e,{preserveScroll:i.preserveScroll,preserveState:!0}).then(()=>{i.preserveScroll&&this.restoreScrollPositions(),x(e)})}isLocationVisitResponse(e){return!!(e&&e.status===409&&e.headers["x-inertia-location"])}isInertiaResponse(e){return!!e?.headers["x-inertia"]}createVisitId(){return this.visitId={},this.visitId}cancelVisit(e,{cancelled:i=!1,interrupted:n=!1}){e&&!e.completed&&!e.cancelled&&!e.interrupted&&(e.cancelToken.abort(),e.onCancel(),e.completed=!1,e.cancelled=i,e.interrupted=n,D(e),e.onFinish(e))}finishVisit(e){!e.cancelled&&!e.interrupted&&(e.completed=!0,e.cancelled=!1,e.interrupted=!1,D(e),e.onFinish(e))}resolvePreserveOption(e,i){return typeof e=="function"?e(i):e==="errors"?Object.keys(i.props.errors||{}).length>0:e}cancel(){this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}visit(e,{method:i="get",data:n={},replace:o=!1,preserveScroll:c=!1,preserveState:h=!1,only:g=[],headers:E={},errorBag:a="",forceFormData:l=!1,onCancelToken:v=()=>{},onBefore:L=()=>{},onStart:d=()=>{},onProgress:p=()=>{},onFinish:T=()=>{},onCancel:y=()=>{},onSuccess:$=()=>{},onError:q=()=>{},queryStringArrayFormat:k="brackets"}={}){let S=typeof e=="string"?m(e):e;if((C(n)||l)&&!(n instanceof FormData)&&(n=U(n)),!(n instanceof FormData)){let[r,s]=N(i,S,n,k);S=m(r),n=s}let P={url:S,method:i,data:n,replace:o,preserveScroll:c,preserveState:h,only:g,headers:E,errorBag:a,forceFormData:l,queryStringArrayFormat:k,cancelled:!1,completed:!1,interrupted:!1};if(L(P)===!1||!X(P))return;this.activeVisit&&this.cancelVisit(this.activeVisit,{interrupted:!0}),this.saveScrollPositions();let W=this.createVisitId();this.activeVisit={...P,onCancelToken:v,onBefore:L,onStart:d,onProgress:p,onFinish:T,onCancel:y,onSuccess:$,onError:q,queryStringArrayFormat:k,cancelToken:new AbortController},v({cancel:()=>{this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}}),Q(P),d(P),(0,G.default)({method:i,url:b(S).href,data:i==="get"?{}:n,params:i==="get"?n:{},signal:this.activeVisit.cancelToken.signal,headers:{...E,Accept:"text/html, application/xhtml+xml","X-Requested-With":"XMLHttpRequest","X-Inertia":!0,...g.length?{"X-Inertia-Partial-Component":this.page.component,"X-Inertia-Partial-Data":g.join(",")}:{},...a&&a.length?{"X-Inertia-Error-Bag":a}:{},...this.page.version?{"X-Inertia-Version":this.page.version}:{}},onUploadProgress:r=>{n instanceof FormData&&(r.percentage=r.progress?Math.round(r.progress*100):0,_(r),p(r))}}).then(r=>{if(!this.isInertiaResponse(r))return Promise.reject({response:r});let s=r.data;g.length&&s.component===this.page.component&&(s.props={...this.page.props,...s.props}),c=this.resolvePreserveOption(c,s),h=this.resolvePreserveOption(h,s),h&&window.history.state?.rememberedState&&s.component===this.page.component&&(s.rememberedState=window.history.state.rememberedState);let w=S,V=m(s.url);return w.hash&&!V.hash&&b(w).href===V.href&&(V.hash=w.hash,s.url=V.href),this.setPage(s,{visitId:W,replace:o,preserveScroll:c,preserveState:h})}).then(()=>{let r=this.page.props.errors||{};if(Object.keys(r).length>0){let s=a?r[a]?r[a]:{}:r;return J(s),q(s)}return Y(this.page),$(this.page)}).catch(r=>{if(this.isInertiaResponse(r.response))return this.setPage(r.response.data,{visitId:W});if(this.isLocationVisitResponse(r.response)){let s=m(r.response.headers["x-inertia-location"]),w=S;w.hash&&!s.hash&&b(w).href===s.href&&(s.hash=w.hash),this.locationVisit(s,c===!0)}else if(r.response)B(r.response)&&te.show(r.response.data);else return Promise.reject(r)}).then(()=>{this.activeVisit&&this.finishVisit(this.activeVisit)}).catch(r=>{if(!G.default.isCancel(r)){let s=z(r);if(this.activeVisit&&this.finishVisit(this.activeVisit),s)return Promise.reject(r)}})}setPage(e,{visitId:i=this.createVisitId(),replace:n=!1,preserveScroll:o=!1,preserveState:c=!1}={}){return Promise.resolve(this.resolveComponent(e.component)).then(h=>{i===this.visitId&&(e.scrollRegions=e.scrollRegions||[],e.rememberedState=e.rememberedState||{},n=n||m(e.url).href===window.location.href,n?this.replaceState(e):this.pushState(e),this.swapComponent({component:h,page:e,preserveState:c}).then(()=>{o||this.resetScrollPositions(),n||x(e)}))})}pushState(e){this.page=e,window.history.pushState(e,"",e.url)}replaceState(e){this.page=e,window.history.replaceState(e,"",e.url)}handlePopstateEvent(e){if(e.state!==null){let i=e.state,n=this.createVisitId();Promise.resolve(this.resolveComponent(i.component)).then(o=>{n===this.visitId&&(this.page=i,this.swapComponent({component:o,page:i,preserveState:!1}).then(()=>{this.restoreScrollPositions(),x(i)}))})}else{let i=m(this.page.url);i.hash=window.location.hash,this.replaceState({...this.page,url:i.href}),this.resetScrollPositions()}}get(e,i={},n={}){return this.visit(e,{...n,method:"get",data:i})}reload(e={}){return this.visit(window.location.href,{...e,preserveScroll:!0,preserveState:!0})}replace(e,i={}){return console.warn(`Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia.${i.method??"get"}() instead.`),this.visit(e,{preserveState:!0,...i,replace:!0})}post(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"post",data:i})}put(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"put",data:i})}patch(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:"patch",data:i})}delete(e,i={}){return this.visit(e,{preserveState:!0,...i,method:"delete"})}remember(e,i="default"){ne||this.replaceState({...this.page,rememberedState:{...this.page?.rememberedState,[i]:e}})}restore(e="default"){if(!ne)return window.history.state?.rememberedState?.[e]}on(e,i){let n=o=>{let c=i(o);o.cancelable&&!o.defaultPrevented&&c===!1&&o.preventDefault()};return document.addEventListener(`inertia:${e}`,n),()=>document.removeEventListener(`inertia:${e}`,n)}};var he={buildDOMElement(t){let e=document.createElement("template");e.innerHTML=t;let i=e.content.firstChild;if(!t.startsWith("<script "))return i;let n=document.createElement("script");return n.innerHTML=i.innerHTML,i.getAttributeNames().forEach(o=>{n.setAttribute(o,i.getAttribute(o)||"")}),n},isInertiaManagedElement(t){return t.nodeType===Node.ELEMENT_NODE&&t.getAttribute("inertia")!==null},findMatchingElementIndex(t,e){let i=t.getAttribute("inertia");return i!==null?e.findIndex(n=>n.getAttribute("inertia")===i):-1},update:R(function(t){let e=t.map(n=>this.buildDOMElement(n));Array.from(document.head.childNodes).filter(n=>this.isInertiaManagedElement(n)).forEach(n=>{let o=this.findMatchingElementIndex(n,e);if(o===-1){n?.parentNode?.removeChild(n);return}let c=e.splice(o,1)[0];c&&!n.isEqualNode(c)&&n?.parentNode?.replaceChild(c,n)}),e.forEach(n=>document.head.appendChild(n))},1)};function M(t,e,i){let n={},o=0;function c(){let l=o+=1;return n[l]=[],l.toString()}function h(l){l===null||Object.keys(n).indexOf(l)===-1||(delete n[l],a())}function g(l,v=[]){l!==null&&Object.keys(n).indexOf(l)>-1&&(n[l]=v),a()}function E(){let l=e(""),v={...l?{title:`<title inertia="">${l}</title>`}:{}},L=Object.values(n).reduce((d,p)=>d.concat(p),[]).reduce((d,p)=>{if(p.indexOf("<")===-1)return d;if(p.indexOf("<title ")===0){let y=p.match(/(<title [^>]+>)(.*?)(<\/title>)/);return d.title=y?`${y[1]}${e(y[2])}${y[3]}`:p,d}let T=p.match(/ inertia="[^"]+"/);return T?d[T[0]]=p:d[Object.keys(d).length]=p,d},v);return Object.values(L)}function a(){t?i(E()):he.update(E())}return a(),{forceUpdate:a,createProvider:function(){let l=c();return{update:v=>g(l,v),disconnect:()=>h(l)}}}}var u=O(require("nprogress"),1),re=null;function ue(t){document.addEventListener("inertia:start",fe.bind(null,t)),document.addEventListener("inertia:progress",me),document.addEventListener("inertia:finish",ge)}function fe(t){re=setTimeout(()=>u.default.start(),t)}function me(t){u.default.isStarted()&&t.detail.progress?.percentage&&u.default.set(Math.max(u.default.status,t.detail.progress.percentage/100*.9))}function ge(t){if(clearTimeout(re),u.default.isStarted())t.detail.visit.completed?u.default.done():t.detail.visit.interrupted?u.default.set(0):t.detail.visit.cancelled&&(u.default.done(),u.default.remove());else return}function ve(t){let e=document.createElement("style");e.type="text/css",e.textContent=`
2
2
  #nprogress {
3
3
  pointer-events: none;
4
4
  }
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/router.ts", "../src/debounce.ts", "../src/events.ts", "../src/files.ts", "../src/formData.ts", "../src/modal.ts", "../src/url.ts", "../src/head.ts", "../src/progress.ts", "../src/shouldIntercept.ts"],
4
- "sourcesContent": ["import { Router } from './router'\n\nexport { default as createHeadManager } from './head'\nexport { default as setupProgress } from './progress'\nexport { default as shouldIntercept } from './shouldIntercept'\nexport * from './types'\nexport { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash } from './url'\nexport { type Router }\n\nexport const router = new Router()\n", "import { AxiosResponse, default as Axios } from 'axios'\nimport debounce from './debounce'\nimport {\n fireBeforeEvent,\n fireErrorEvent,\n fireExceptionEvent,\n fireFinishEvent,\n fireInvalidEvent,\n fireNavigateEvent,\n fireProgressEvent,\n fireStartEvent,\n fireSuccessEvent,\n} from './events'\nimport { hasFiles } from './files'\nimport { objectToFormData } from './formData'\nimport modal from './modal'\nimport {\n ActiveVisit,\n GlobalEvent,\n GlobalEventNames,\n GlobalEventResult,\n LocationVisit,\n Page,\n PageHandler,\n PageResolver,\n PendingVisit,\n PreserveStateOption,\n RequestPayload,\n VisitId,\n VisitOptions,\n} from './types'\nimport { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash } from './url'\n\nconst isServer = typeof window === 'undefined'\n\nexport class Router {\n protected page!: Page\n protected resolveComponent!: PageResolver\n protected swapComponent!: PageHandler\n protected navigationType?: string\n protected activeVisit?: ActiveVisit\n protected visitId: VisitId = null\n\n public init({\n initialPage,\n resolveComponent,\n swapComponent,\n }: {\n initialPage: Page\n resolveComponent: PageResolver\n swapComponent: PageHandler\n }): void {\n this.page = initialPage\n this.resolveComponent = resolveComponent\n this.swapComponent = swapComponent\n\n this.setNavigationType()\n this.clearRememberedStateOnReload()\n\n if (this.isBackForwardVisit()) {\n this.handleBackForwardVisit(this.page)\n } else if (this.isLocationVisit()) {\n this.handleLocationVisit(this.page)\n } else {\n this.handleInitialPageVisit(this.page)\n }\n\n this.setupEventListeners()\n }\n\n protected setNavigationType(): void {\n this.navigationType =\n window.performance && window.performance.getEntriesByType('navigation').length > 0\n ? (window.performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming).type\n : 'navigate'\n }\n\n protected clearRememberedStateOnReload(): void {\n if (this.navigationType === 'reload' && window.history.state?.rememberedState) {\n delete window.history.state.rememberedState\n }\n }\n\n protected handleInitialPageVisit(page: Page): void {\n this.page.url += window.location.hash\n this.setPage(page, { preserveState: true }).then(() => fireNavigateEvent(page))\n }\n\n protected setupEventListeners(): void {\n window.addEventListener('popstate', this.handlePopstateEvent.bind(this))\n document.addEventListener('scroll', debounce(this.handleScrollEvent.bind(this), 100), true)\n }\n\n protected scrollRegions(): NodeListOf<Element> {\n return document.querySelectorAll('[scroll-region]')\n }\n\n protected handleScrollEvent(event: Event): void {\n if (\n typeof (event.target as Element).hasAttribute === 'function' &&\n (event.target as Element).hasAttribute('scroll-region')\n ) {\n this.saveScrollPositions()\n }\n }\n\n protected saveScrollPositions(): void {\n this.replaceState({\n ...this.page,\n scrollRegions: Array.from(this.scrollRegions()).map((region) => {\n return {\n top: region.scrollTop,\n left: region.scrollLeft,\n }\n }),\n })\n }\n\n protected resetScrollPositions(): void {\n window.scrollTo(0, 0)\n this.scrollRegions().forEach((region) => {\n if (typeof region.scrollTo === 'function') {\n region.scrollTo(0, 0)\n } else {\n region.scrollTop = 0\n region.scrollLeft = 0\n }\n })\n this.saveScrollPositions()\n if (window.location.hash) {\n // We're using a setTimeout() here as a workaround for a bug in the React adapter where the\n // rendering isn't completing fast enough, causing the anchor link to not be scrolled to.\n setTimeout(() => document.getElementById(window.location.hash.slice(1))?.scrollIntoView())\n }\n }\n\n protected restoreScrollPositions(): void {\n if (this.page.scrollRegions) {\n this.scrollRegions().forEach((region: Element, index: number) => {\n const scrollPosition = this.page.scrollRegions[index]\n if (!scrollPosition) {\n return\n } else if (typeof region.scrollTo === 'function') {\n region.scrollTo(scrollPosition.left, scrollPosition.top)\n } else {\n region.scrollTop = scrollPosition.top\n region.scrollLeft = scrollPosition.left\n }\n })\n }\n }\n\n protected isBackForwardVisit(): boolean {\n return window.history.state && this.navigationType === 'back_forward'\n }\n\n protected handleBackForwardVisit(page: Page): void {\n window.history.state.version = page.version\n this.setPage(window.history.state, { preserveScroll: true, preserveState: true }).then(() => {\n this.restoreScrollPositions()\n fireNavigateEvent(page)\n })\n }\n\n protected locationVisit(url: URL, preserveScroll: LocationVisit['preserveScroll']): boolean | void {\n try {\n const locationVisit: LocationVisit = { preserveScroll }\n window.sessionStorage.setItem('inertiaLocationVisit', JSON.stringify(locationVisit))\n window.location.href = url.href\n if (urlWithoutHash(window.location).href === urlWithoutHash(url).href) {\n window.location.reload()\n }\n } catch (error) {\n return false\n }\n }\n\n protected isLocationVisit(): boolean {\n try {\n return window.sessionStorage.getItem('inertiaLocationVisit') !== null\n } catch (error) {\n return false\n }\n }\n\n protected handleLocationVisit(page: Page): void {\n const locationVisit: LocationVisit = JSON.parse(window.sessionStorage.getItem('inertiaLocationVisit') || '')\n window.sessionStorage.removeItem('inertiaLocationVisit')\n page.url += window.location.hash\n page.rememberedState = window.history.state?.rememberedState ?? {}\n page.scrollRegions = window.history.state?.scrollRegions ?? []\n this.setPage(page, { preserveScroll: locationVisit.preserveScroll, preserveState: true }).then(() => {\n if (locationVisit.preserveScroll) {\n this.restoreScrollPositions()\n }\n fireNavigateEvent(page)\n })\n }\n\n protected isLocationVisitResponse(response: AxiosResponse): boolean {\n return !!(response && response.status === 409 && response.headers['x-inertia-location'])\n }\n\n protected isInertiaResponse(response: AxiosResponse): boolean {\n return !!response?.headers['x-inertia']\n }\n\n protected createVisitId(): VisitId {\n this.visitId = {}\n return this.visitId\n }\n\n protected cancelVisit(\n activeVisit: ActiveVisit,\n { cancelled = false, interrupted = false }: { cancelled?: boolean; interrupted?: boolean },\n ): void {\n if (activeVisit && !activeVisit.completed && !activeVisit.cancelled && !activeVisit.interrupted) {\n activeVisit.cancelToken.abort()\n activeVisit.onCancel()\n activeVisit.completed = false\n activeVisit.cancelled = cancelled\n activeVisit.interrupted = interrupted\n fireFinishEvent(activeVisit)\n activeVisit.onFinish(activeVisit)\n }\n }\n\n protected finishVisit(visit: ActiveVisit): void {\n if (!visit.cancelled && !visit.interrupted) {\n visit.completed = true\n visit.cancelled = false\n visit.interrupted = false\n fireFinishEvent(visit)\n visit.onFinish(visit)\n }\n }\n\n protected resolvePreserveOption(value: PreserveStateOption, page: Page): boolean | string {\n if (typeof value === 'function') {\n return value(page)\n } else if (value === 'errors') {\n return Object.keys(page.props.errors || {}).length > 0\n } else {\n return value\n }\n }\n\n public cancel(): void {\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { cancelled: true })\n }\n }\n\n public visit(\n href: string | URL,\n {\n method = 'get',\n data = {},\n replace = false,\n preserveScroll = false,\n preserveState = false,\n only = [],\n headers = {},\n errorBag = '',\n forceFormData = false,\n onCancelToken = () => {},\n onBefore = () => {},\n onStart = () => {},\n onProgress = () => {},\n onFinish = () => {},\n onCancel = () => {},\n onSuccess = () => {},\n onError = () => {},\n queryStringArrayFormat = 'brackets',\n }: VisitOptions = {},\n ): void {\n let url = typeof href === 'string' ? hrefToUrl(href) : href\n\n if ((hasFiles(data) || forceFormData) && !(data instanceof FormData)) {\n data = objectToFormData(data)\n }\n\n if (!(data instanceof FormData)) {\n const [_href, _data] = mergeDataIntoQueryString(method, url, data, queryStringArrayFormat)\n url = hrefToUrl(_href)\n data = _data\n }\n\n const visit: PendingVisit = {\n url,\n method,\n data,\n replace,\n preserveScroll,\n preserveState,\n only,\n headers,\n errorBag,\n forceFormData,\n queryStringArrayFormat,\n cancelled: false,\n completed: false,\n interrupted: false,\n }\n\n if (onBefore(visit) === false || !fireBeforeEvent(visit)) {\n return\n }\n\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { interrupted: true })\n }\n\n this.saveScrollPositions()\n\n const visitId = this.createVisitId()\n this.activeVisit = {\n ...visit,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n queryStringArrayFormat,\n cancelToken: new AbortController(),\n }\n\n onCancelToken({\n cancel: () => {\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { cancelled: true })\n }\n },\n })\n\n fireStartEvent(visit)\n onStart(visit)\n\n Axios({\n method,\n url: urlWithoutHash(url).href,\n data: method === 'get' ? {} : data,\n params: method === 'get' ? data : {},\n signal: this.activeVisit.cancelToken.signal,\n headers: {\n ...headers,\n Accept: 'text/html, application/xhtml+xml',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-Inertia': true,\n ...(only.length\n ? {\n 'X-Inertia-Partial-Component': this.page.component,\n 'X-Inertia-Partial-Data': only.join(','),\n }\n : {}),\n ...(errorBag && errorBag.length ? { 'X-Inertia-Error-Bag': errorBag } : {}),\n ...(this.page.version ? { 'X-Inertia-Version': this.page.version } : {}),\n },\n onUploadProgress: (progress) => {\n if (data instanceof FormData) {\n progress.percentage = progress.progress ? Math.round(progress.progress * 100) : 0\n fireProgressEvent(progress)\n onProgress(progress)\n }\n },\n })\n .then((response) => {\n if (!this.isInertiaResponse(response)) {\n return Promise.reject({ response })\n }\n\n const pageResponse: Page = response.data\n if (only.length && pageResponse.component === this.page.component) {\n pageResponse.props = { ...this.page.props, ...pageResponse.props }\n }\n preserveScroll = this.resolvePreserveOption(preserveScroll, pageResponse) as boolean\n preserveState = this.resolvePreserveOption(preserveState, pageResponse)\n if (preserveState && window.history.state?.rememberedState && pageResponse.component === this.page.component) {\n pageResponse.rememberedState = window.history.state.rememberedState\n }\n const requestUrl = url\n const responseUrl = hrefToUrl(pageResponse.url)\n if (requestUrl.hash && !responseUrl.hash && urlWithoutHash(requestUrl).href === responseUrl.href) {\n responseUrl.hash = requestUrl.hash\n pageResponse.url = responseUrl.href\n }\n return this.setPage(pageResponse, { visitId, replace, preserveScroll, preserveState })\n })\n .then(() => {\n const errors = this.page.props.errors || {}\n if (Object.keys(errors).length > 0) {\n const scopedErrors = errorBag ? (errors[errorBag] ? errors[errorBag] : {}) : errors\n fireErrorEvent(scopedErrors)\n return onError(scopedErrors)\n }\n fireSuccessEvent(this.page)\n return onSuccess(this.page)\n })\n .catch((error) => {\n if (this.isInertiaResponse(error.response)) {\n return this.setPage(error.response.data, { visitId })\n } else if (this.isLocationVisitResponse(error.response)) {\n const locationUrl = hrefToUrl(error.response.headers['x-inertia-location'])\n const requestUrl = url\n if (requestUrl.hash && !locationUrl.hash && urlWithoutHash(requestUrl).href === locationUrl.href) {\n locationUrl.hash = requestUrl.hash\n }\n this.locationVisit(locationUrl, preserveScroll === true)\n } else if (error.response) {\n if (fireInvalidEvent(error.response)) {\n modal.show(error.response.data)\n }\n } else {\n return Promise.reject(error)\n }\n })\n .then(() => {\n if (this.activeVisit) {\n this.finishVisit(this.activeVisit)\n }\n })\n .catch((error) => {\n if (!Axios.isCancel(error)) {\n const throwException = fireExceptionEvent(error)\n if (this.activeVisit) {\n this.finishVisit(this.activeVisit)\n }\n if (throwException) {\n return Promise.reject(error)\n }\n }\n })\n }\n\n protected setPage(\n page: Page,\n {\n visitId = this.createVisitId(),\n replace = false,\n preserveScroll = false,\n preserveState = false,\n }: {\n visitId?: VisitId\n replace?: boolean\n preserveScroll?: PreserveStateOption\n preserveState?: PreserveStateOption\n } = {},\n ): Promise<void> {\n return Promise.resolve(this.resolveComponent(page.component)).then((component) => {\n if (visitId === this.visitId) {\n page.scrollRegions = page.scrollRegions || []\n page.rememberedState = page.rememberedState || {}\n replace = replace || hrefToUrl(page.url).href === window.location.href\n replace ? this.replaceState(page) : this.pushState(page)\n this.swapComponent({ component, page, preserveState }).then(() => {\n if (!preserveScroll) {\n this.resetScrollPositions()\n }\n if (!replace) {\n fireNavigateEvent(page)\n }\n })\n }\n })\n }\n\n protected pushState(page: Page): void {\n this.page = page\n window.history.pushState(page, '', page.url)\n }\n\n protected replaceState(page: Page): void {\n this.page = page\n window.history.replaceState(page, '', page.url)\n }\n\n protected handlePopstateEvent(event: PopStateEvent): void {\n if (event.state !== null) {\n const page = event.state\n const visitId = this.createVisitId()\n Promise.resolve(this.resolveComponent(page.component)).then((component) => {\n if (visitId === this.visitId) {\n this.page = page\n this.swapComponent({ component, page, preserveState: false }).then(() => {\n this.restoreScrollPositions()\n fireNavigateEvent(page)\n })\n }\n })\n } else {\n const url = hrefToUrl(this.page.url)\n url.hash = window.location.hash\n this.replaceState({ ...this.page, url: url.href })\n this.resetScrollPositions()\n }\n }\n\n public get(\n url: URL | string,\n data: RequestPayload = {},\n options: Exclude<VisitOptions, 'method' | 'data'> = {},\n ): void {\n return this.visit(url, { ...options, method: 'get', data })\n }\n\n public reload(options: Exclude<VisitOptions, 'preserveScroll' | 'preserveState'> = {}): void {\n return this.visit(window.location.href, { ...options, preserveScroll: true, preserveState: true })\n }\n\n public replace(url: URL | string, options: Exclude<VisitOptions, 'replace'> = {}): void {\n console.warn(\n `Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia.${\n options.method ?? 'get'\n }() instead.`,\n )\n return this.visit(url, { preserveState: true, ...options, replace: true })\n }\n\n public post(\n url: URL | string,\n data: RequestPayload = {},\n options: Exclude<VisitOptions, 'method' | 'data'> = {},\n ): void {\n return this.visit(url, { preserveState: true, ...options, method: 'post', data })\n }\n\n public put(\n url: URL | string,\n data: RequestPayload = {},\n options: Exclude<VisitOptions, 'method' | 'data'> = {},\n ): void {\n return this.visit(url, { preserveState: true, ...options, method: 'put', data })\n }\n\n public patch(\n url: URL | string,\n data: RequestPayload = {},\n options: Exclude<VisitOptions, 'method' | 'data'> = {},\n ): void {\n return this.visit(url, { preserveState: true, ...options, method: 'patch', data })\n }\n\n public delete(url: URL | string, options: Exclude<VisitOptions, 'method'> = {}): void {\n return this.visit(url, { preserveState: true, ...options, method: 'delete' })\n }\n\n public remember(data: unknown, key = 'default'): void {\n if (isServer) {\n return\n }\n\n this.replaceState({\n ...this.page,\n rememberedState: {\n ...this.page?.rememberedState,\n [key]: data,\n },\n })\n }\n\n public restore(key = 'default'): unknown {\n if (isServer) {\n return\n }\n\n return window.history.state?.rememberedState?.[key]\n }\n\n public on<TEventName extends GlobalEventNames>(\n type: TEventName,\n callback: (event: GlobalEvent<TEventName>) => GlobalEventResult<TEventName>,\n ): VoidFunction {\n const listener = ((event: GlobalEvent<TEventName>) => {\n const response = callback(event)\n if (event.cancelable && !event.defaultPrevented && response === false) {\n event.preventDefault()\n }\n }) as EventListener\n\n document.addEventListener(`inertia:${type}`, listener)\n return () => document.removeEventListener(`inertia:${type}`, listener)\n }\n}\n", "export default function debounce<F extends (...params: any[]) => ReturnType<F>>(fn: F, delay: number): F {\n let timeoutID: NodeJS.Timeout\n return function (...args: unknown[]) {\n clearTimeout(timeoutID)\n timeoutID = setTimeout(() => fn.apply(this, args), delay)\n } as F\n}\n", "import { GlobalEventDetails, GlobalEventNames, GlobalEventTrigger } from './types'\n\nfunction fireEvent<TEventName extends GlobalEventNames>(\n name: TEventName,\n options: CustomEventInit<GlobalEventDetails<TEventName>>,\n): boolean {\n return document.dispatchEvent(new CustomEvent(`inertia:${name}`, options))\n}\n\nexport const fireBeforeEvent: GlobalEventTrigger<'before'> = (visit) => {\n return fireEvent('before', { cancelable: true, detail: { visit } })\n}\n\nexport const fireErrorEvent: GlobalEventTrigger<'error'> = (errors) => {\n return fireEvent('error', { detail: { errors } })\n}\n\nexport const fireExceptionEvent: GlobalEventTrigger<'exception'> = (exception) => {\n return fireEvent('exception', { cancelable: true, detail: { exception } })\n}\n\nexport const fireFinishEvent: GlobalEventTrigger<'finish'> = (visit) => {\n return fireEvent('finish', { detail: { visit } })\n}\n\nexport const fireInvalidEvent: GlobalEventTrigger<'invalid'> = (response) => {\n return fireEvent('invalid', { cancelable: true, detail: { response } })\n}\n\nexport const fireNavigateEvent: GlobalEventTrigger<'navigate'> = (page) => {\n return fireEvent('navigate', { detail: { page } })\n}\n\nexport const fireProgressEvent: GlobalEventTrigger<'progress'> = (progress) => {\n return fireEvent('progress', { detail: { progress } })\n}\n\nexport const fireStartEvent: GlobalEventTrigger<'start'> = (visit) => {\n return fireEvent('start', { detail: { visit } })\n}\n\nexport const fireSuccessEvent: GlobalEventTrigger<'success'> = (page) => {\n return fireEvent('success', { detail: { page } })\n}\n", "import { FormDataConvertible, RequestPayload } from './types'\n\nexport function hasFiles(data: RequestPayload | FormDataConvertible): boolean {\n return (\n data instanceof File ||\n data instanceof Blob ||\n (data instanceof FileList && data.length > 0) ||\n (data instanceof FormData && Array.from(data.values()).some((value) => hasFiles(value))) ||\n (typeof data === 'object' && data !== null && Object.values(data).some((value) => hasFiles(value)))\n )\n}\n", "import { FormDataConvertible } from './types'\n\nexport function objectToFormData(\n source: Record<string, FormDataConvertible>,\n form: FormData = new FormData(),\n parentKey: string | null = null,\n): FormData {\n source = source || {}\n\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n append(form, composeKey(parentKey, key), source[key])\n }\n }\n\n return form\n}\n\nfunction composeKey(parent: string | null, key: string): string {\n return parent ? parent + '[' + key + ']' : key\n}\n\nfunction append(form: FormData, key: string, value: FormDataConvertible): void {\n if (Array.isArray(value)) {\n return Array.from(value.keys()).forEach((index) => append(form, composeKey(key, index.toString()), value[index]))\n } else if (value instanceof Date) {\n return form.append(key, value.toISOString())\n } else if (value instanceof File) {\n return form.append(key, value, value.name)\n } else if (value instanceof Blob) {\n return form.append(key, value)\n } else if (typeof value === 'boolean') {\n return form.append(key, value ? '1' : '0')\n } else if (typeof value === 'string') {\n return form.append(key, value)\n } else if (typeof value === 'number') {\n return form.append(key, `${value}`)\n } else if (value === null || value === undefined) {\n return form.append(key, '')\n }\n\n objectToFormData(value, form, key)\n}\n", "export default {\n modal: null,\n listener: null,\n\n show(html: Record<string, unknown> | string): void {\n if (typeof html === 'object') {\n html = `All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.<hr>${JSON.stringify(\n html,\n )}`\n }\n\n const page = document.createElement('html')\n page.innerHTML = html\n page.querySelectorAll('a').forEach((a) => a.setAttribute('target', '_top'))\n\n this.modal = document.createElement('div')\n this.modal.style.position = 'fixed'\n this.modal.style.width = '100vw'\n this.modal.style.height = '100vh'\n this.modal.style.padding = '50px'\n this.modal.style.boxSizing = 'border-box'\n this.modal.style.backgroundColor = 'rgba(0, 0, 0, .6)'\n this.modal.style.zIndex = 200000\n this.modal.addEventListener('click', () => this.hide())\n\n const iframe = document.createElement('iframe')\n iframe.style.backgroundColor = 'white'\n iframe.style.borderRadius = '5px'\n iframe.style.width = '100%'\n iframe.style.height = '100%'\n this.modal.appendChild(iframe)\n\n document.body.prepend(this.modal)\n document.body.style.overflow = 'hidden'\n if (!iframe.contentWindow) {\n throw new Error('iframe not yet ready.')\n }\n iframe.contentWindow.document.open()\n iframe.contentWindow.document.write(page.outerHTML)\n iframe.contentWindow.document.close()\n\n this.listener = this.hideOnEscape.bind(this)\n document.addEventListener('keydown', this.listener)\n },\n\n hide(): void {\n this.modal.outerHTML = ''\n this.modal = null\n document.body.style.overflow = 'visible'\n document.removeEventListener('keydown', this.listener)\n },\n\n hideOnEscape(event: KeyboardEvent): void {\n if (event.keyCode === 27) {\n this.hide()\n }\n },\n}\n", "import deepmerge from 'deepmerge'\nimport * as qs from 'qs'\nimport { FormDataConvertible, Method } from './types'\n\nexport function hrefToUrl(href: string | URL): URL {\n return new URL(href.toString(), window.location.toString())\n}\n\nexport function mergeDataIntoQueryString(\n method: Method,\n href: URL | string,\n data: Record<string, FormDataConvertible>,\n qsArrayFormat: 'indices' | 'brackets' = 'brackets',\n): [string, Record<string, FormDataConvertible>] {\n const hasHost = /^https?:\\/\\//.test(href.toString())\n const hasAbsolutePath = hasHost || href.toString().startsWith('/')\n const hasRelativePath = !hasAbsolutePath && !href.toString().startsWith('#') && !href.toString().startsWith('?')\n const hasSearch = href.toString().includes('?') || (method === 'get' && Object.keys(data).length)\n const hasHash = href.toString().includes('#')\n\n const url = new URL(href.toString(), 'http://localhost')\n\n if (method === 'get' && Object.keys(data).length) {\n url.search = qs.stringify(deepmerge(qs.parse(url.search, { ignoreQueryPrefix: true }), data), {\n encodeValuesOnly: true,\n arrayFormat: qsArrayFormat,\n })\n data = {}\n }\n\n return [\n [\n hasHost ? `${url.protocol}//${url.host}` : '',\n hasAbsolutePath ? url.pathname : '',\n hasRelativePath ? url.pathname.substring(1) : '',\n hasSearch ? url.search : '',\n hasHash ? url.hash : '',\n ].join(''),\n data,\n ]\n}\n\nexport function urlWithoutHash(url: URL | Location): URL {\n url = new URL(url.href)\n url.hash = ''\n return url\n}\n", "import debounce from './debounce'\n\nconst Renderer = {\n buildDOMElement(tag: string): ChildNode {\n const template = document.createElement('template')\n template.innerHTML = tag\n const node = template.content.firstChild as Element\n\n if (!tag.startsWith('<script ')) {\n return node\n }\n\n const script = document.createElement('script')\n script.innerHTML = node.innerHTML\n node.getAttributeNames().forEach((name) => {\n script.setAttribute(name, node.getAttribute(name) || '')\n })\n\n return script\n },\n\n isInertiaManagedElement(element: Element): boolean {\n return element.nodeType === Node.ELEMENT_NODE && element.getAttribute('inertia') !== null\n },\n\n findMatchingElementIndex(element: Element, elements: Array<Element>): number {\n const key = element.getAttribute('inertia')\n if (key !== null) {\n return elements.findIndex((element) => element.getAttribute('inertia') === key)\n }\n\n return -1\n },\n\n update: debounce(function (elements: Array<string>) {\n const sourceElements = elements.map((element) => this.buildDOMElement(element))\n const targetElements = Array.from(document.head.childNodes).filter((element) =>\n this.isInertiaManagedElement(element as Element),\n )\n\n targetElements.forEach((targetElement) => {\n const index = this.findMatchingElementIndex(targetElement as Element, sourceElements)\n if (index === -1) {\n targetElement?.parentNode?.removeChild(targetElement)\n return\n }\n\n const sourceElement = sourceElements.splice(index, 1)[0]\n if (sourceElement && !targetElement.isEqualNode(sourceElement)) {\n targetElement?.parentNode?.replaceChild(sourceElement, targetElement)\n }\n })\n\n sourceElements.forEach((element) => document.head.appendChild(element))\n }, 1),\n}\n\nexport default function createHeadManager(\n isServer: boolean,\n titleCallback: (title: string) => string,\n onUpdate: (elements: string[]) => void,\n): {\n forceUpdate: () => void\n createProvider: () => {\n update: (elements: string[]) => void\n disconnect: () => void\n }\n} {\n const states: Record<string, Array<string>> = {}\n let lastProviderId = 0\n\n function connect(): string {\n const id = (lastProviderId += 1)\n states[id] = []\n return id.toString()\n }\n\n function disconnect(id: string): void {\n if (id === null || Object.keys(states).indexOf(id) === -1) {\n return\n }\n\n delete states[id]\n commit()\n }\n\n function update(id: string, elements: Array<string> = []): void {\n if (id !== null && Object.keys(states).indexOf(id) > -1) {\n states[id] = elements\n }\n\n commit()\n }\n\n function collect(): Array<string> {\n const title = titleCallback('')\n\n const defaults: Record<string, string> = {\n ...(title ? { title: `<title inertia=\"\">${title}</title>` } : {}),\n }\n\n const elements = Object.values(states)\n .reduce((carry, elements) => carry.concat(elements), [])\n .reduce((carry, element) => {\n if (element.indexOf('<') === -1) {\n return carry\n }\n\n if (element.indexOf('<title ') === 0) {\n const title = element.match(/(<title [^>]+>)(.*?)(<\\/title>)/)\n carry.title = title ? `${title[1]}${titleCallback(title[2])}${title[3]}` : element\n return carry\n }\n\n const match = element.match(/ inertia=\"[^\"]+\"/)\n if (match) {\n carry[match[0]] = element\n } else {\n carry[Object.keys(carry).length] = element\n }\n\n return carry\n }, defaults)\n\n return Object.values(elements)\n }\n\n function commit(): void {\n isServer ? onUpdate(collect()) : Renderer.update(collect())\n }\n\n // By committing during initialization, we can guarantee that the default\n // tags are set, as well as that they exist during SSR itself.\n commit()\n\n return {\n forceUpdate: commit,\n createProvider: function () {\n const id = connect()\n\n return {\n update: (elements) => update(id, elements),\n disconnect: () => disconnect(id),\n }\n },\n }\n}\n", "import NProgress from 'nprogress'\nimport { GlobalEvent } from './types'\n\nlet timeout: NodeJS.Timeout | null = null\n\nfunction addEventListeners(delay: number): void {\n document.addEventListener('inertia:start', start.bind(null, delay))\n document.addEventListener('inertia:progress', progress)\n document.addEventListener('inertia:finish', finish)\n}\n\nfunction start(delay: number): void {\n timeout = setTimeout(() => NProgress.start(), delay)\n}\n\nfunction progress(event: GlobalEvent<'progress'>) {\n if (NProgress.isStarted() && event.detail.progress?.percentage) {\n NProgress.set(Math.max(NProgress.status!, (event.detail.progress.percentage / 100) * 0.9))\n }\n}\n\nfunction finish(event: GlobalEvent<'finish'>) {\n clearTimeout(timeout!)\n if (!NProgress.isStarted()) {\n return\n } else if (event.detail.visit.completed) {\n NProgress.done()\n } else if (event.detail.visit.interrupted) {\n NProgress.set(0)\n } else if (event.detail.visit.cancelled) {\n NProgress.done()\n NProgress.remove()\n }\n}\n\nfunction injectCSS(color: string): void {\n const element = document.createElement('style')\n element.type = 'text/css'\n element.textContent = `\n #nprogress {\n pointer-events: none;\n }\n\n #nprogress .bar {\n background: ${color};\n\n position: fixed;\n z-index: 1031;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 2px;\n }\n\n #nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n box-shadow: 0 0 10px ${color}, 0 0 5px ${color};\n opacity: 1.0;\n\n -webkit-transform: rotate(3deg) translate(0px, -4px);\n -ms-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n }\n\n #nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n }\n\n #nprogress .spinner-icon {\n width: 18px;\n height: 18px;\n box-sizing: border-box;\n\n border: solid 2px transparent;\n border-top-color: ${color};\n border-left-color: ${color};\n border-radius: 50%;\n\n -webkit-animation: nprogress-spinner 400ms linear infinite;\n animation: nprogress-spinner 400ms linear infinite;\n }\n\n .nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n }\n\n .nprogress-custom-parent #nprogress .spinner,\n .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n }\n\n @-webkit-keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n }\n @keyframes nprogress-spinner {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `\n document.head.appendChild(element)\n}\n\nexport default function setupProgress({\n delay = 250,\n color = '#29d',\n includeCSS = true,\n showSpinner = false,\n} = {}): void {\n addEventListeners(delay)\n NProgress.configure({ showSpinner })\n if (includeCSS) {\n injectCSS(color)\n }\n}\n", "export default function shouldIntercept(event: KeyboardEvent): boolean {\n const isLink = (event.currentTarget as HTMLElement).tagName.toLowerCase() === 'a'\n return !(\n (event.target && (event?.target as HTMLElement).isContentEditable) ||\n event.defaultPrevented ||\n (isLink && event.which > 1) ||\n (isLink && event.altKey) ||\n (isLink && event.ctrlKey) ||\n (isLink && event.metaKey) ||\n (isLink && event.shiftKey)\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Router } from './router'\n\nexport { default as createHeadManager } from './head'\nexport { default as setupProgress } from './progress'\nexport { default as shouldIntercept } from './shouldIntercept'\nexport * from './types'\nexport { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash } from './url'\nexport { type Router }\n\nexport const router = new Router()\n", "import { default as Axios, AxiosResponse } from 'axios'\nimport debounce from './debounce'\nimport {\n fireBeforeEvent,\n fireErrorEvent,\n fireExceptionEvent,\n fireFinishEvent,\n fireInvalidEvent,\n fireNavigateEvent,\n fireProgressEvent,\n fireStartEvent,\n fireSuccessEvent,\n} from './events'\nimport { hasFiles } from './files'\nimport { objectToFormData } from './formData'\nimport modal from './modal'\nimport {\n ActiveVisit,\n GlobalEvent,\n GlobalEventNames,\n GlobalEventResult,\n LocationVisit,\n Page,\n PageHandler,\n PageResolver,\n PendingVisit,\n PreserveStateOption,\n RequestPayload,\n VisitId,\n VisitOptions,\n} from './types'\nimport { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash } from './url'\n\nconst isServer = typeof window === 'undefined'\n\nexport class Router {\n protected page!: Page\n protected resolveComponent!: PageResolver\n protected swapComponent!: PageHandler\n protected navigationType?: string\n protected activeVisit?: ActiveVisit\n protected visitId: VisitId = null\n\n public init({\n initialPage,\n resolveComponent,\n swapComponent,\n }: {\n initialPage: Page\n resolveComponent: PageResolver\n swapComponent: PageHandler\n }): void {\n this.page = initialPage\n this.resolveComponent = resolveComponent\n this.swapComponent = swapComponent\n\n this.setNavigationType()\n this.clearRememberedStateOnReload()\n\n if (this.isBackForwardVisit()) {\n this.handleBackForwardVisit(this.page)\n } else if (this.isLocationVisit()) {\n this.handleLocationVisit(this.page)\n } else {\n this.handleInitialPageVisit(this.page)\n }\n\n this.setupEventListeners()\n }\n\n protected setNavigationType(): void {\n this.navigationType =\n window.performance && window.performance.getEntriesByType('navigation').length > 0\n ? (window.performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming).type\n : 'navigate'\n }\n\n protected clearRememberedStateOnReload(): void {\n if (this.navigationType === 'reload' && window.history.state?.rememberedState) {\n delete window.history.state.rememberedState\n }\n }\n\n protected handleInitialPageVisit(page: Page): void {\n this.page.url += window.location.hash\n this.setPage(page, { preserveState: true }).then(() => fireNavigateEvent(page))\n }\n\n protected setupEventListeners(): void {\n window.addEventListener('popstate', this.handlePopstateEvent.bind(this))\n document.addEventListener('scroll', debounce(this.handleScrollEvent.bind(this), 100), true)\n }\n\n protected scrollRegions(): NodeListOf<Element> {\n return document.querySelectorAll('[scroll-region]')\n }\n\n protected handleScrollEvent(event: Event): void {\n if (\n typeof (event.target as Element).hasAttribute === 'function' &&\n (event.target as Element).hasAttribute('scroll-region')\n ) {\n this.saveScrollPositions()\n }\n }\n\n protected saveScrollPositions(): void {\n this.replaceState({\n ...this.page,\n scrollRegions: Array.from(this.scrollRegions()).map((region) => {\n return {\n top: region.scrollTop,\n left: region.scrollLeft,\n }\n }),\n })\n }\n\n protected resetScrollPositions(): void {\n window.scrollTo(0, 0)\n this.scrollRegions().forEach((region) => {\n if (typeof region.scrollTo === 'function') {\n region.scrollTo(0, 0)\n } else {\n region.scrollTop = 0\n region.scrollLeft = 0\n }\n })\n this.saveScrollPositions()\n if (window.location.hash) {\n // We're using a setTimeout() here as a workaround for a bug in the React adapter where the\n // rendering isn't completing fast enough, causing the anchor link to not be scrolled to.\n setTimeout(() => document.getElementById(window.location.hash.slice(1))?.scrollIntoView())\n }\n }\n\n protected restoreScrollPositions(): void {\n if (this.page.scrollRegions) {\n this.scrollRegions().forEach((region: Element, index: number) => {\n const scrollPosition = this.page.scrollRegions[index]\n if (!scrollPosition) {\n return\n } else if (typeof region.scrollTo === 'function') {\n region.scrollTo(scrollPosition.left, scrollPosition.top)\n } else {\n region.scrollTop = scrollPosition.top\n region.scrollLeft = scrollPosition.left\n }\n })\n }\n }\n\n protected isBackForwardVisit(): boolean {\n return window.history.state && this.navigationType === 'back_forward'\n }\n\n protected handleBackForwardVisit(page: Page): void {\n window.history.state.version = page.version\n this.setPage(window.history.state, { preserveScroll: true, preserveState: true }).then(() => {\n this.restoreScrollPositions()\n fireNavigateEvent(page)\n })\n }\n\n protected locationVisit(url: URL, preserveScroll: LocationVisit['preserveScroll']): boolean | void {\n try {\n const locationVisit: LocationVisit = { preserveScroll }\n window.sessionStorage.setItem('inertiaLocationVisit', JSON.stringify(locationVisit))\n window.location.href = url.href\n if (urlWithoutHash(window.location).href === urlWithoutHash(url).href) {\n window.location.reload()\n }\n } catch (error) {\n return false\n }\n }\n\n protected isLocationVisit(): boolean {\n try {\n return window.sessionStorage.getItem('inertiaLocationVisit') !== null\n } catch (error) {\n return false\n }\n }\n\n protected handleLocationVisit(page: Page): void {\n const locationVisit: LocationVisit = JSON.parse(window.sessionStorage.getItem('inertiaLocationVisit') || '')\n window.sessionStorage.removeItem('inertiaLocationVisit')\n page.url += window.location.hash\n page.rememberedState = window.history.state?.rememberedState ?? {}\n page.scrollRegions = window.history.state?.scrollRegions ?? []\n this.setPage(page, { preserveScroll: locationVisit.preserveScroll, preserveState: true }).then(() => {\n if (locationVisit.preserveScroll) {\n this.restoreScrollPositions()\n }\n fireNavigateEvent(page)\n })\n }\n\n protected isLocationVisitResponse(response: AxiosResponse): boolean {\n return !!(response && response.status === 409 && response.headers['x-inertia-location'])\n }\n\n protected isInertiaResponse(response: AxiosResponse): boolean {\n return !!response?.headers['x-inertia']\n }\n\n protected createVisitId(): VisitId {\n this.visitId = {}\n return this.visitId\n }\n\n protected cancelVisit(\n activeVisit: ActiveVisit,\n { cancelled = false, interrupted = false }: { cancelled?: boolean; interrupted?: boolean },\n ): void {\n if (activeVisit && !activeVisit.completed && !activeVisit.cancelled && !activeVisit.interrupted) {\n activeVisit.cancelToken.abort()\n activeVisit.onCancel()\n activeVisit.completed = false\n activeVisit.cancelled = cancelled\n activeVisit.interrupted = interrupted\n fireFinishEvent(activeVisit)\n activeVisit.onFinish(activeVisit)\n }\n }\n\n protected finishVisit(visit: ActiveVisit): void {\n if (!visit.cancelled && !visit.interrupted) {\n visit.completed = true\n visit.cancelled = false\n visit.interrupted = false\n fireFinishEvent(visit)\n visit.onFinish(visit)\n }\n }\n\n protected resolvePreserveOption(value: PreserveStateOption, page: Page): boolean | string {\n if (typeof value === 'function') {\n return value(page)\n } else if (value === 'errors') {\n return Object.keys(page.props.errors || {}).length > 0\n } else {\n return value\n }\n }\n\n public cancel(): void {\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { cancelled: true })\n }\n }\n\n public visit(\n href: string | URL,\n {\n method = 'get',\n data = {},\n replace = false,\n preserveScroll = false,\n preserveState = false,\n only = [],\n headers = {},\n errorBag = '',\n forceFormData = false,\n onCancelToken = () => {},\n onBefore = () => {},\n onStart = () => {},\n onProgress = () => {},\n onFinish = () => {},\n onCancel = () => {},\n onSuccess = () => {},\n onError = () => {},\n queryStringArrayFormat = 'brackets',\n }: VisitOptions = {},\n ): void {\n let url = typeof href === 'string' ? hrefToUrl(href) : href\n\n if ((hasFiles(data) || forceFormData) && !(data instanceof FormData)) {\n data = objectToFormData(data)\n }\n\n if (!(data instanceof FormData)) {\n const [_href, _data] = mergeDataIntoQueryString(method, url, data, queryStringArrayFormat)\n url = hrefToUrl(_href)\n data = _data\n }\n\n const visit: PendingVisit = {\n url,\n method,\n data,\n replace,\n preserveScroll,\n preserveState,\n only,\n headers,\n errorBag,\n forceFormData,\n queryStringArrayFormat,\n cancelled: false,\n completed: false,\n interrupted: false,\n }\n\n if (onBefore(visit) === false || !fireBeforeEvent(visit)) {\n return\n }\n\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { interrupted: true })\n }\n\n this.saveScrollPositions()\n\n const visitId = this.createVisitId()\n this.activeVisit = {\n ...visit,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n queryStringArrayFormat,\n cancelToken: new AbortController(),\n }\n\n onCancelToken({\n cancel: () => {\n if (this.activeVisit) {\n this.cancelVisit(this.activeVisit, { cancelled: true })\n }\n },\n })\n\n fireStartEvent(visit)\n onStart(visit)\n\n Axios({\n method,\n url: urlWithoutHash(url).href,\n data: method === 'get' ? {} : data,\n params: method === 'get' ? data : {},\n signal: this.activeVisit.cancelToken.signal,\n headers: {\n ...headers,\n Accept: 'text/html, application/xhtml+xml',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-Inertia': true,\n ...(only.length\n ? {\n 'X-Inertia-Partial-Component': this.page.component,\n 'X-Inertia-Partial-Data': only.join(','),\n }\n : {}),\n ...(errorBag && errorBag.length ? { 'X-Inertia-Error-Bag': errorBag } : {}),\n ...(this.page.version ? { 'X-Inertia-Version': this.page.version } : {}),\n },\n onUploadProgress: (progress) => {\n if (data instanceof FormData) {\n progress.percentage = progress.progress ? Math.round(progress.progress * 100) : 0\n fireProgressEvent(progress)\n onProgress(progress)\n }\n },\n })\n .then((response) => {\n if (!this.isInertiaResponse(response)) {\n return Promise.reject({ response })\n }\n\n const pageResponse: Page = response.data\n if (only.length && pageResponse.component === this.page.component) {\n pageResponse.props = { ...this.page.props, ...pageResponse.props }\n }\n preserveScroll = this.resolvePreserveOption(preserveScroll, pageResponse) as boolean\n preserveState = this.resolvePreserveOption(preserveState, pageResponse)\n if (preserveState && window.history.state?.rememberedState && pageResponse.component === this.page.component) {\n pageResponse.rememberedState = window.history.state.rememberedState\n }\n const requestUrl = url\n const responseUrl = hrefToUrl(pageResponse.url)\n if (requestUrl.hash && !responseUrl.hash && urlWithoutHash(requestUrl).href === responseUrl.href) {\n responseUrl.hash = requestUrl.hash\n pageResponse.url = responseUrl.href\n }\n return this.setPage(pageResponse, { visitId, replace, preserveScroll, preserveState })\n })\n .then(() => {\n const errors = this.page.props.errors || {}\n if (Object.keys(errors).length > 0) {\n const scopedErrors = errorBag ? (errors[errorBag] ? errors[errorBag] : {}) : errors\n fireErrorEvent(scopedErrors)\n return onError(scopedErrors)\n }\n fireSuccessEvent(this.page)\n return onSuccess(this.page)\n })\n .catch((error) => {\n if (this.isInertiaResponse(error.response)) {\n return this.setPage(error.response.data, { visitId })\n } else if (this.isLocationVisitResponse(error.response)) {\n const locationUrl = hrefToUrl(error.response.headers['x-inertia-location'])\n const requestUrl = url\n if (requestUrl.hash && !locationUrl.hash && urlWithoutHash(requestUrl).href === locationUrl.href) {\n locationUrl.hash = requestUrl.hash\n }\n this.locationVisit(locationUrl, preserveScroll === true)\n } else if (error.response) {\n if (fireInvalidEvent(error.response)) {\n modal.show(error.response.data)\n }\n } else {\n return Promise.reject(error)\n }\n })\n .then(() => {\n if (this.activeVisit) {\n this.finishVisit(this.activeVisit)\n }\n })\n .catch((error) => {\n if (!Axios.isCancel(error)) {\n const throwException = fireExceptionEvent(error)\n if (this.activeVisit) {\n this.finishVisit(this.activeVisit)\n }\n if (throwException) {\n return Promise.reject(error)\n }\n }\n })\n }\n\n protected setPage(\n page: Page,\n {\n visitId = this.createVisitId(),\n replace = false,\n preserveScroll = false,\n preserveState = false,\n }: {\n visitId?: VisitId\n replace?: boolean\n preserveScroll?: PreserveStateOption\n preserveState?: PreserveStateOption\n } = {},\n ): Promise<void> {\n return Promise.resolve(this.resolveComponent(page.component)).then((component) => {\n if (visitId === this.visitId) {\n page.scrollRegions = page.scrollRegions || []\n page.rememberedState = page.rememberedState || {}\n replace = replace || hrefToUrl(page.url).href === window.location.href\n replace ? this.replaceState(page) : this.pushState(page)\n this.swapComponent({ component, page, preserveState }).then(() => {\n if (!preserveScroll) {\n this.resetScrollPositions()\n }\n if (!replace) {\n fireNavigateEvent(page)\n }\n })\n }\n })\n }\n\n protected pushState(page: Page): void {\n this.page = page\n window.history.pushState(page, '', page.url)\n }\n\n protected replaceState(page: Page): void {\n this.page = page\n window.history.replaceState(page, '', page.url)\n }\n\n protected handlePopstateEvent(event: PopStateEvent): void {\n if (event.state !== null) {\n const page = event.state\n const visitId = this.createVisitId()\n Promise.resolve(this.resolveComponent(page.component)).then((component) => {\n if (visitId === this.visitId) {\n this.page = page\n this.swapComponent({ component, page, preserveState: false }).then(() => {\n this.restoreScrollPositions()\n fireNavigateEvent(page)\n })\n }\n })\n } else {\n const url = hrefToUrl(this.page.url)\n url.hash = window.location.hash\n this.replaceState({ ...this.page, url: url.href })\n this.resetScrollPositions()\n }\n }\n\n public get(url: URL | string, data: RequestPayload = {}, options: Omit<VisitOptions, 'method' | 'data'> = {}): void {\n return this.visit(url, { ...options, method: 'get', data })\n }\n\n public reload(options: Omit<VisitOptions, 'preserveScroll' | 'preserveState'> = {}): void {\n return this.visit(window.location.href, { ...options, preserveScroll: true, preserveState: true })\n }\n\n public replace(url: URL | string, options: Omit<VisitOptions, 'replace'> = {}): void {\n console.warn(\n `Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia.${\n options.method ?? 'get'\n }() instead.`,\n )\n return this.visit(url, { preserveState: true, ...options, replace: true })\n }\n\n public post(url: URL | string, data: RequestPayload = {}, options: Omit<VisitOptions, 'method' | 'data'> = {}): void {\n return this.visit(url, { preserveState: true, ...options, method: 'post', data })\n }\n\n public put(url: URL | string, data: RequestPayload = {}, options: Omit<VisitOptions, 'method' | 'data'> = {}): void {\n return this.visit(url, { preserveState: true, ...options, method: 'put', data })\n }\n\n public patch(\n url: URL | string,\n data: RequestPayload = {},\n options: Omit<VisitOptions, 'method' | 'data'> = {},\n ): void {\n return this.visit(url, { preserveState: true, ...options, method: 'patch', data })\n }\n\n public delete(url: URL | string, options: Omit<VisitOptions, 'method'> = {}): void {\n return this.visit(url, { preserveState: true, ...options, method: 'delete' })\n }\n\n public remember(data: unknown, key = 'default'): void {\n if (isServer) {\n return\n }\n\n this.replaceState({\n ...this.page,\n rememberedState: {\n ...this.page?.rememberedState,\n [key]: data,\n },\n })\n }\n\n public restore(key = 'default'): unknown {\n if (isServer) {\n return\n }\n\n return window.history.state?.rememberedState?.[key]\n }\n\n public on<TEventName extends GlobalEventNames>(\n type: TEventName,\n callback: (event: GlobalEvent<TEventName>) => GlobalEventResult<TEventName>,\n ): VoidFunction {\n const listener = ((event: GlobalEvent<TEventName>) => {\n const response = callback(event)\n if (event.cancelable && !event.defaultPrevented && response === false) {\n event.preventDefault()\n }\n }) as EventListener\n\n document.addEventListener(`inertia:${type}`, listener)\n return () => document.removeEventListener(`inertia:${type}`, listener)\n }\n}\n", "export default function debounce<F extends (...params: any[]) => ReturnType<F>>(fn: F, delay: number): F {\n let timeoutID: NodeJS.Timeout\n return function (...args: unknown[]) {\n clearTimeout(timeoutID)\n timeoutID = setTimeout(() => fn.apply(this, args), delay)\n } as F\n}\n", "import { GlobalEventDetails, GlobalEventNames, GlobalEventTrigger } from './types'\n\nfunction fireEvent<TEventName extends GlobalEventNames>(\n name: TEventName,\n options: CustomEventInit<GlobalEventDetails<TEventName>>,\n): boolean {\n return document.dispatchEvent(new CustomEvent(`inertia:${name}`, options))\n}\n\nexport const fireBeforeEvent: GlobalEventTrigger<'before'> = (visit) => {\n return fireEvent('before', { cancelable: true, detail: { visit } })\n}\n\nexport const fireErrorEvent: GlobalEventTrigger<'error'> = (errors) => {\n return fireEvent('error', { detail: { errors } })\n}\n\nexport const fireExceptionEvent: GlobalEventTrigger<'exception'> = (exception) => {\n return fireEvent('exception', { cancelable: true, detail: { exception } })\n}\n\nexport const fireFinishEvent: GlobalEventTrigger<'finish'> = (visit) => {\n return fireEvent('finish', { detail: { visit } })\n}\n\nexport const fireInvalidEvent: GlobalEventTrigger<'invalid'> = (response) => {\n return fireEvent('invalid', { cancelable: true, detail: { response } })\n}\n\nexport const fireNavigateEvent: GlobalEventTrigger<'navigate'> = (page) => {\n return fireEvent('navigate', { detail: { page } })\n}\n\nexport const fireProgressEvent: GlobalEventTrigger<'progress'> = (progress) => {\n return fireEvent('progress', { detail: { progress } })\n}\n\nexport const fireStartEvent: GlobalEventTrigger<'start'> = (visit) => {\n return fireEvent('start', { detail: { visit } })\n}\n\nexport const fireSuccessEvent: GlobalEventTrigger<'success'> = (page) => {\n return fireEvent('success', { detail: { page } })\n}\n", "import { FormDataConvertible, RequestPayload } from './types'\n\nexport function hasFiles(data: RequestPayload | FormDataConvertible): boolean {\n return (\n data instanceof File ||\n data instanceof Blob ||\n (data instanceof FileList && data.length > 0) ||\n (data instanceof FormData && Array.from(data.values()).some((value) => hasFiles(value))) ||\n (typeof data === 'object' && data !== null && Object.values(data).some((value) => hasFiles(value)))\n )\n}\n", "import { FormDataConvertible } from './types'\n\nexport function objectToFormData(\n source: Record<string, FormDataConvertible>,\n form: FormData = new FormData(),\n parentKey: string | null = null,\n): FormData {\n source = source || {}\n\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n append(form, composeKey(parentKey, key), source[key])\n }\n }\n\n return form\n}\n\nfunction composeKey(parent: string | null, key: string): string {\n return parent ? parent + '[' + key + ']' : key\n}\n\nfunction append(form: FormData, key: string, value: FormDataConvertible): void {\n if (Array.isArray(value)) {\n return Array.from(value.keys()).forEach((index) => append(form, composeKey(key, index.toString()), value[index]))\n } else if (value instanceof Date) {\n return form.append(key, value.toISOString())\n } else if (value instanceof File) {\n return form.append(key, value, value.name)\n } else if (value instanceof Blob) {\n return form.append(key, value)\n } else if (typeof value === 'boolean') {\n return form.append(key, value ? '1' : '0')\n } else if (typeof value === 'string') {\n return form.append(key, value)\n } else if (typeof value === 'number') {\n return form.append(key, `${value}`)\n } else if (value === null || value === undefined) {\n return form.append(key, '')\n }\n\n objectToFormData(value, form, key)\n}\n", "export default {\n modal: null,\n listener: null,\n\n show(html: Record<string, unknown> | string): void {\n if (typeof html === 'object') {\n html = `All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.<hr>${JSON.stringify(\n html,\n )}`\n }\n\n const page = document.createElement('html')\n page.innerHTML = html\n page.querySelectorAll('a').forEach((a) => a.setAttribute('target', '_top'))\n\n this.modal = document.createElement('div')\n this.modal.style.position = 'fixed'\n this.modal.style.width = '100vw'\n this.modal.style.height = '100vh'\n this.modal.style.padding = '50px'\n this.modal.style.boxSizing = 'border-box'\n this.modal.style.backgroundColor = 'rgba(0, 0, 0, .6)'\n this.modal.style.zIndex = 200000\n this.modal.addEventListener('click', () => this.hide())\n\n const iframe = document.createElement('iframe')\n iframe.style.backgroundColor = 'white'\n iframe.style.borderRadius = '5px'\n iframe.style.width = '100%'\n iframe.style.height = '100%'\n this.modal.appendChild(iframe)\n\n document.body.prepend(this.modal)\n document.body.style.overflow = 'hidden'\n if (!iframe.contentWindow) {\n throw new Error('iframe not yet ready.')\n }\n iframe.contentWindow.document.open()\n iframe.contentWindow.document.write(page.outerHTML)\n iframe.contentWindow.document.close()\n\n this.listener = this.hideOnEscape.bind(this)\n document.addEventListener('keydown', this.listener)\n },\n\n hide(): void {\n this.modal.outerHTML = ''\n this.modal = null\n document.body.style.overflow = 'visible'\n document.removeEventListener('keydown', this.listener)\n },\n\n hideOnEscape(event: KeyboardEvent): void {\n if (event.keyCode === 27) {\n this.hide()\n }\n },\n}\n", "import deepmerge from 'deepmerge'\nimport * as qs from 'qs'\nimport { FormDataConvertible, Method } from './types'\n\nexport function hrefToUrl(href: string | URL): URL {\n return new URL(href.toString(), window.location.toString())\n}\n\nexport function mergeDataIntoQueryString(\n method: Method,\n href: URL | string,\n data: Record<string, FormDataConvertible>,\n qsArrayFormat: 'indices' | 'brackets' = 'brackets',\n): [string, Record<string, FormDataConvertible>] {\n const hasHost = /^https?:\\/\\//.test(href.toString())\n const hasAbsolutePath = hasHost || href.toString().startsWith('/')\n const hasRelativePath = !hasAbsolutePath && !href.toString().startsWith('#') && !href.toString().startsWith('?')\n const hasSearch = href.toString().includes('?') || (method === 'get' && Object.keys(data).length)\n const hasHash = href.toString().includes('#')\n\n const url = new URL(href.toString(), 'http://localhost')\n\n if (method === 'get' && Object.keys(data).length) {\n url.search = qs.stringify(deepmerge(qs.parse(url.search, { ignoreQueryPrefix: true }), data), {\n encodeValuesOnly: true,\n arrayFormat: qsArrayFormat,\n })\n data = {}\n }\n\n return [\n [\n hasHost ? `${url.protocol}//${url.host}` : '',\n hasAbsolutePath ? url.pathname : '',\n hasRelativePath ? url.pathname.substring(1) : '',\n hasSearch ? url.search : '',\n hasHash ? url.hash : '',\n ].join(''),\n data,\n ]\n}\n\nexport function urlWithoutHash(url: URL | Location): URL {\n url = new URL(url.href)\n url.hash = ''\n return url\n}\n", "import debounce from './debounce'\n\nconst Renderer = {\n buildDOMElement(tag: string): ChildNode {\n const template = document.createElement('template')\n template.innerHTML = tag\n const node = template.content.firstChild as Element\n\n if (!tag.startsWith('<script ')) {\n return node\n }\n\n const script = document.createElement('script')\n script.innerHTML = node.innerHTML\n node.getAttributeNames().forEach((name) => {\n script.setAttribute(name, node.getAttribute(name) || '')\n })\n\n return script\n },\n\n isInertiaManagedElement(element: Element): boolean {\n return element.nodeType === Node.ELEMENT_NODE && element.getAttribute('inertia') !== null\n },\n\n findMatchingElementIndex(element: Element, elements: Array<Element>): number {\n const key = element.getAttribute('inertia')\n if (key !== null) {\n return elements.findIndex((element) => element.getAttribute('inertia') === key)\n }\n\n return -1\n },\n\n update: debounce(function (elements: Array<string>) {\n const sourceElements = elements.map((element) => this.buildDOMElement(element))\n const targetElements = Array.from(document.head.childNodes).filter((element) =>\n this.isInertiaManagedElement(element as Element),\n )\n\n targetElements.forEach((targetElement) => {\n const index = this.findMatchingElementIndex(targetElement as Element, sourceElements)\n if (index === -1) {\n targetElement?.parentNode?.removeChild(targetElement)\n return\n }\n\n const sourceElement = sourceElements.splice(index, 1)[0]\n if (sourceElement && !targetElement.isEqualNode(sourceElement)) {\n targetElement?.parentNode?.replaceChild(sourceElement, targetElement)\n }\n })\n\n sourceElements.forEach((element) => document.head.appendChild(element))\n }, 1),\n}\n\nexport default function createHeadManager(\n isServer: boolean,\n titleCallback: (title: string) => string,\n onUpdate: (elements: string[]) => void,\n): {\n forceUpdate: () => void\n createProvider: () => {\n update: (elements: string[]) => void\n disconnect: () => void\n }\n} {\n const states: Record<string, Array<string>> = {}\n let lastProviderId = 0\n\n function connect(): string {\n const id = (lastProviderId += 1)\n states[id] = []\n return id.toString()\n }\n\n function disconnect(id: string): void {\n if (id === null || Object.keys(states).indexOf(id) === -1) {\n return\n }\n\n delete states[id]\n commit()\n }\n\n function update(id: string, elements: Array<string> = []): void {\n if (id !== null && Object.keys(states).indexOf(id) > -1) {\n states[id] = elements\n }\n\n commit()\n }\n\n function collect(): Array<string> {\n const title = titleCallback('')\n\n const defaults: Record<string, string> = {\n ...(title ? { title: `<title inertia=\"\">${title}</title>` } : {}),\n }\n\n const elements = Object.values(states)\n .reduce((carry, elements) => carry.concat(elements), [])\n .reduce((carry, element) => {\n if (element.indexOf('<') === -1) {\n return carry\n }\n\n if (element.indexOf('<title ') === 0) {\n const title = element.match(/(<title [^>]+>)(.*?)(<\\/title>)/)\n carry.title = title ? `${title[1]}${titleCallback(title[2])}${title[3]}` : element\n return carry\n }\n\n const match = element.match(/ inertia=\"[^\"]+\"/)\n if (match) {\n carry[match[0]] = element\n } else {\n carry[Object.keys(carry).length] = element\n }\n\n return carry\n }, defaults)\n\n return Object.values(elements)\n }\n\n function commit(): void {\n isServer ? onUpdate(collect()) : Renderer.update(collect())\n }\n\n // By committing during initialization, we can guarantee that the default\n // tags are set, as well as that they exist during SSR itself.\n commit()\n\n return {\n forceUpdate: commit,\n createProvider: function () {\n const id = connect()\n\n return {\n update: (elements) => update(id, elements),\n disconnect: () => disconnect(id),\n }\n },\n }\n}\n", "import NProgress from 'nprogress'\nimport { GlobalEvent } from './types'\n\nlet timeout: NodeJS.Timeout | null = null\n\nfunction addEventListeners(delay: number): void {\n document.addEventListener('inertia:start', start.bind(null, delay))\n document.addEventListener('inertia:progress', progress)\n document.addEventListener('inertia:finish', finish)\n}\n\nfunction start(delay: number): void {\n timeout = setTimeout(() => NProgress.start(), delay)\n}\n\nfunction progress(event: GlobalEvent<'progress'>) {\n if (NProgress.isStarted() && event.detail.progress?.percentage) {\n NProgress.set(Math.max(NProgress.status!, (event.detail.progress.percentage / 100) * 0.9))\n }\n}\n\nfunction finish(event: GlobalEvent<'finish'>) {\n clearTimeout(timeout!)\n if (!NProgress.isStarted()) {\n return\n } else if (event.detail.visit.completed) {\n NProgress.done()\n } else if (event.detail.visit.interrupted) {\n NProgress.set(0)\n } else if (event.detail.visit.cancelled) {\n NProgress.done()\n NProgress.remove()\n }\n}\n\nfunction injectCSS(color: string): void {\n const element = document.createElement('style')\n element.type = 'text/css'\n element.textContent = `\n #nprogress {\n pointer-events: none;\n }\n\n #nprogress .bar {\n background: ${color};\n\n position: fixed;\n z-index: 1031;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 2px;\n }\n\n #nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n box-shadow: 0 0 10px ${color}, 0 0 5px ${color};\n opacity: 1.0;\n\n -webkit-transform: rotate(3deg) translate(0px, -4px);\n -ms-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n }\n\n #nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n }\n\n #nprogress .spinner-icon {\n width: 18px;\n height: 18px;\n box-sizing: border-box;\n\n border: solid 2px transparent;\n border-top-color: ${color};\n border-left-color: ${color};\n border-radius: 50%;\n\n -webkit-animation: nprogress-spinner 400ms linear infinite;\n animation: nprogress-spinner 400ms linear infinite;\n }\n\n .nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n }\n\n .nprogress-custom-parent #nprogress .spinner,\n .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n }\n\n @-webkit-keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n }\n @keyframes nprogress-spinner {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `\n document.head.appendChild(element)\n}\n\nexport default function setupProgress({\n delay = 250,\n color = '#29d',\n includeCSS = true,\n showSpinner = false,\n} = {}): void {\n addEventListeners(delay)\n NProgress.configure({ showSpinner })\n if (includeCSS) {\n injectCSS(color)\n }\n}\n", "export default function shouldIntercept(event: KeyboardEvent): boolean {\n const isLink = (event.currentTarget as HTMLElement).tagName.toLowerCase() === 'a'\n return !(\n (event.target && (event?.target as HTMLElement).isContentEditable) ||\n event.defaultPrevented ||\n (isLink && event.which > 1) ||\n (isLink && event.altKey) ||\n (isLink && event.ctrlKey) ||\n (isLink && event.metaKey) ||\n (isLink && event.shiftKey)\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["src_exports", "__export", "createHeadManager", "hrefToUrl", "mergeDataIntoQueryString", "router", "setupProgress", "shouldIntercept", "urlWithoutHash", "__toCommonJS", "import_axios", "debounce", "fn", "delay", "timeoutID", "args", "fireEvent", "name", "options", "fireBeforeEvent", "visit", "fireErrorEvent", "errors", "fireExceptionEvent", "exception", "fireFinishEvent", "fireInvalidEvent", "response", "fireNavigateEvent", "page", "fireProgressEvent", "progress", "fireStartEvent", "fireSuccessEvent", "hasFiles", "data", "value", "objectToFormData", "source", "form", "parentKey", "key", "append", "composeKey", "parent", "value", "index", "modal_default", "html", "page", "a", "iframe", "event", "import_deepmerge", "qs", "hrefToUrl", "href", "mergeDataIntoQueryString", "method", "data", "qsArrayFormat", "hasHost", "hasAbsolutePath", "hasRelativePath", "hasSearch", "hasHash", "url", "deepmerge", "urlWithoutHash", "isServer", "Router", "initialPage", "resolveComponent", "swapComponent", "page", "fireNavigateEvent", "debounce", "event", "region", "index", "scrollPosition", "url", "preserveScroll", "locationVisit", "urlWithoutHash", "response", "activeVisit", "cancelled", "interrupted", "fireFinishEvent", "visit", "value", "href", "method", "data", "replace", "preserveState", "only", "headers", "errorBag", "forceFormData", "onCancelToken", "onBefore", "onStart", "onProgress", "onFinish", "onCancel", "onSuccess", "onError", "queryStringArrayFormat", "hrefToUrl", "hasFiles", "objectToFormData", "_href", "_data", "mergeDataIntoQueryString", "fireBeforeEvent", "visitId", "fireStartEvent", "Axios", "progress", "fireProgressEvent", "pageResponse", "requestUrl", "responseUrl", "errors", "scopedErrors", "fireErrorEvent", "fireSuccessEvent", "error", "locationUrl", "fireInvalidEvent", "modal_default", "throwException", "fireExceptionEvent", "component", "options", "key", "type", "callback", "listener", "Renderer", "tag", "template", "node", "script", "name", "element", "elements", "key", "debounce", "sourceElements", "targetElement", "index", "sourceElement", "createHeadManager", "isServer", "titleCallback", "onUpdate", "states", "lastProviderId", "connect", "id", "disconnect", "commit", "update", "collect", "title", "defaults", "carry", "match", "import_nprogress", "timeout", "addEventListeners", "delay", "start", "progress", "finish", "NProgress", "event", "injectCSS", "color", "element", "setupProgress", "includeCSS", "showSpinner", "shouldIntercept", "event", "isLink", "router", "Router"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inertiajs/core",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
4
4
  "license": "MIT",
5
5
  "description": "A framework for creating server-driven single page apps.",
6
6
  "contributors": [
@@ -50,7 +50,7 @@
50
50
  "prepublishOnly": "npm run build"
51
51
  },
52
52
  "dependencies": {
53
- "axios": "^1.2.0",
53
+ "axios": "^1.6.0",
54
54
  "deepmerge": "^4.0.0",
55
55
  "nprogress": "^0.2.0",
56
56
  "qs": "^6.9.0"
package/types/router.d.ts CHANGED
@@ -46,13 +46,13 @@ export declare class Router {
46
46
  protected pushState(page: Page): void;
47
47
  protected replaceState(page: Page): void;
48
48
  protected handlePopstateEvent(event: PopStateEvent): void;
49
- get(url: URL | string, data?: RequestPayload, options?: Exclude<VisitOptions, 'method' | 'data'>): void;
50
- reload(options?: Exclude<VisitOptions, 'preserveScroll' | 'preserveState'>): void;
51
- replace(url: URL | string, options?: Exclude<VisitOptions, 'replace'>): void;
52
- post(url: URL | string, data?: RequestPayload, options?: Exclude<VisitOptions, 'method' | 'data'>): void;
53
- put(url: URL | string, data?: RequestPayload, options?: Exclude<VisitOptions, 'method' | 'data'>): void;
54
- patch(url: URL | string, data?: RequestPayload, options?: Exclude<VisitOptions, 'method' | 'data'>): void;
55
- delete(url: URL | string, options?: Exclude<VisitOptions, 'method'>): void;
49
+ get(url: URL | string, data?: RequestPayload, options?: Omit<VisitOptions, 'method' | 'data'>): void;
50
+ reload(options?: Omit<VisitOptions, 'preserveScroll' | 'preserveState'>): void;
51
+ replace(url: URL | string, options?: Omit<VisitOptions, 'replace'>): void;
52
+ post(url: URL | string, data?: RequestPayload, options?: Omit<VisitOptions, 'method' | 'data'>): void;
53
+ put(url: URL | string, data?: RequestPayload, options?: Omit<VisitOptions, 'method' | 'data'>): void;
54
+ patch(url: URL | string, data?: RequestPayload, options?: Omit<VisitOptions, 'method' | 'data'>): void;
55
+ delete(url: URL | string, options?: Omit<VisitOptions, 'method'>): void;
56
56
  remember(data: unknown, key?: string): void;
57
57
  restore(key?: string): unknown;
58
58
  on<TEventName extends GlobalEventNames>(type: TEventName, callback: (event: GlobalEvent<TEventName>) => GlobalEventResult<TEventName>): VoidFunction;