@inertiajs/core 1.0.0-beta.2 → 1.0.0-beta.4
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 +72 -1
- package/dist/index.esm.js.map +7 -1
- package/dist/index.js +72 -1
- package/dist/index.js.map +7 -1
- package/dist/server.esm.js +1 -40
- package/dist/server.esm.js.map +7 -1
- package/dist/server.js +1 -40
- package/dist/server.js.map +7 -1
- package/package.json +18 -12
- package/types/debounce.d.ts +1 -1
- package/types/events.d.ts +10 -10
- package/types/files.d.ts +2 -2
- package/types/formData.d.ts +2 -2
- package/types/head.d.ts +7 -7
- package/types/index.d.ts +8 -7
- package/types/modal.d.ts +8 -8
- package/types/progress.d.ts +6 -6
- package/types/router.d.ts +59 -58
- package/types/server.d.ts +4 -4
- package/types/shouldIntercept.d.ts +1 -1
- package/types/types.d.ts +176 -173
- package/types/url.d.ts +4 -4
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,73 @@
|
|
|
1
|
-
import e from"axios";import{stringify as t,parse as n}from"qs";import i from"deepmerge";import r from"nprogress";function o(){return(o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}).apply(this,arguments)}var s,a={modal:null,listener:null,show:function(e){var t=this;"object"==typeof e&&(e="All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.<hr>"+JSON.stringify(e));var n=document.createElement("html");n.innerHTML=e,n.querySelectorAll("a").forEach(function(e){return e.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",function(){return t.hide()});var 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(n.outerHTML),i.contentWindow.document.close(),this.listener=this.hideOnEscape.bind(this),document.addEventListener("keydown",this.listener)},hide:function(){this.modal.outerHTML="",this.modal=null,document.body.style.overflow="visible",document.removeEventListener("keydown",this.listener)},hideOnEscape:function(e){27===e.keyCode&&this.hide()}};function l(e,t){var n;return function(){var i=arguments,r=this;clearTimeout(n),n=setTimeout(function(){return e.apply(r,[].slice.call(i))},t)}}function c(e,t,n){for(var i in void 0===t&&(t=new FormData),void 0===n&&(n=null),e=e||{})Object.prototype.hasOwnProperty.call(e,i)&&u(t,d(n,i),e[i]);return t}function d(e,t){return e?e+"["+t+"]":t}function u(e,t,n){return Array.isArray(n)?Array.from(n.keys()).forEach(function(i){return u(e,d(t,i.toString()),n[i])}):n instanceof Date?e.append(t,n.toISOString()):n instanceof File?e.append(t,n,n.name):n instanceof Blob?e.append(t,n):"boolean"==typeof n?e.append(t,n?"1":"0"):"string"==typeof n?e.append(t,n):"number"==typeof n?e.append(t,""+n):null==n?e.append(t,""):void c(n,e,t)}function p(e){return new URL(e.toString(),window.location.toString())}function h(e,r,o,a){void 0===a&&(a="brackets");var l=/^https?:\/\//.test(r.toString()),c=l||r.toString().startsWith("/"),d=!c&&!r.toString().startsWith("#")&&!r.toString().startsWith("?"),u=r.toString().includes("?")||e===s.GET&&Object.keys(o).length,p=r.toString().includes("#"),h=new URL(r.toString(),"http://localhost");return e===s.GET&&Object.keys(o).length&&(h.search=t(i(n(h.search,{ignoreQueryPrefix:!0}),o),{encodeValuesOnly:!0,arrayFormat:a}),o={}),[[l?h.protocol+"//"+h.host:"",c?h.pathname:"",d?h.pathname.substring(1):"",u?h.search:"",p?h.hash:""].join(""),o]}function f(e){return(e=new URL(e.href)).hash="",e}function v(e,t){return document.dispatchEvent(new CustomEvent("inertia:"+e,t))}!function(e){e.GET="get",e.POST="post",e.PUT="put",e.PATCH="patch",e.DELETE="delete"}(s||(s={}));var m=function(e){return v("finish",{detail:{visit:e}})},g=function(e){return v("navigate",{detail:{page:e}})},w="undefined"==typeof window,y=function(){function t(){this.visitId=null}var n=t.prototype;return n.init=function(e){var t=e.resolveComponent,n=e.swapComponent;this.page=e.initialPage,this.resolveComponent=t,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()},n.setNavigationType=function(){this.navigationType=window.performance&&window.performance.getEntriesByType("navigation").length>0?window.performance.getEntriesByType("navigation")[0].type:"navigate"},n.clearRememberedStateOnReload=function(){var e;"reload"===this.navigationType&&null!=(e=window.history.state)&&e.rememberedState&&delete window.history.state.rememberedState},n.handleInitialPageVisit=function(e){this.page.url+=window.location.hash,this.setPage(e,{preserveState:!0}).then(function(){return g(e)})},n.setupEventListeners=function(){window.addEventListener("popstate",this.handlePopstateEvent.bind(this)),document.addEventListener("scroll",l(this.handleScrollEvent.bind(this),100),!0)},n.scrollRegions=function(){return document.querySelectorAll("[scroll-region]")},n.handleScrollEvent=function(e){"function"==typeof e.target.hasAttribute&&e.target.hasAttribute("scroll-region")&&this.saveScrollPositions()},n.saveScrollPositions=function(){this.replaceState(o({},this.page,{scrollRegions:Array.from(this.scrollRegions()).map(function(e){return{top:e.scrollTop,left:e.scrollLeft}})}))},n.resetScrollPositions=function(){var e;window.scrollTo(0,0),this.scrollRegions().forEach(function(e){"function"==typeof e.scrollTo?e.scrollTo(0,0):(e.scrollTop=0,e.scrollLeft=0)}),this.saveScrollPositions(),window.location.hash&&(null==(e=document.getElementById(window.location.hash.slice(1)))||e.scrollIntoView())},n.restoreScrollPositions=function(){var e=this;this.page.scrollRegions&&this.scrollRegions().forEach(function(t,n){var i=e.page.scrollRegions[n];i&&("function"==typeof t.scrollTo?t.scrollTo(i.left,i.top):(t.scrollTop=i.top,t.scrollLeft=i.left))})},n.isBackForwardVisit=function(){return window.history.state&&"back_forward"===this.navigationType},n.handleBackForwardVisit=function(e){var t=this;window.history.state.version=e.version,this.setPage(window.history.state,{preserveScroll:!0,preserveState:!0}).then(function(){t.restoreScrollPositions(),g(e)})},n.locationVisit=function(e,t){try{window.sessionStorage.setItem("inertiaLocationVisit",JSON.stringify({preserveScroll:t})),window.location.href=e.href,f(window.location).href===f(e).href&&window.location.reload()}catch(e){return!1}},n.isLocationVisit=function(){try{return null!==window.sessionStorage.getItem("inertiaLocationVisit")}catch(e){return!1}},n.handleLocationVisit=function(e){var t,n,i,r,o=this,s=JSON.parse(window.sessionStorage.getItem("inertiaLocationVisit")||"");window.sessionStorage.removeItem("inertiaLocationVisit"),e.url+=window.location.hash,e.rememberedState=null!=(t=null==(n=window.history.state)?void 0:n.rememberedState)?t:{},e.scrollRegions=null!=(i=null==(r=window.history.state)?void 0:r.scrollRegions)?i:[],this.setPage(e,{preserveScroll:s.preserveScroll,preserveState:!0}).then(function(){s.preserveScroll&&o.restoreScrollPositions(),g(e)})},n.isLocationVisitResponse=function(e){return!(!e||409!==e.status||!e.headers["x-inertia-location"])},n.isInertiaResponse=function(e){return!(null==e||!e.headers["x-inertia"])},n.createVisitId=function(){return this.visitId={},this.visitId},n.cancelVisit=function(e,t){var n=t.cancelled,i=void 0!==n&&n,r=t.interrupted,o=void 0!==r&&r;!e||e.completed||e.cancelled||e.interrupted||(e.cancelToken.cancel(),e.onCancel(),e.completed=!1,e.cancelled=i,e.interrupted=o,m(e),e.onFinish(e))},n.finishVisit=function(e){e.cancelled||e.interrupted||(e.completed=!0,e.cancelled=!1,e.interrupted=!1,m(e),e.onFinish(e))},n.resolvePreserveOption=function(e,t){return"function"==typeof e?e(t):"errors"===e?Object.keys(t.props.errors||{}).length>0:e},n.visit=function(t,n){var i=this,r=void 0===n?{}:n,l=r.method,d=void 0===l?s.GET:l,u=r.data,m=void 0===u?{}:u,g=r.replace,w=void 0!==g&&g,y=r.preserveScroll,S=void 0!==y&&y,b=r.preserveState,E=void 0!==b&&b,x=r.only,T=void 0===x?[]:x,P=r.headers,V=void 0===P?{}:P,L=r.errorBag,k=void 0===L?"":L,I=r.forceFormData,O=void 0!==I&&I,C=r.onCancelToken,R=void 0===C?function(){}:C,A=r.onBefore,F=void 0===A?function(){}:A,j=r.onStart,M=void 0===j?function(){}:j,D=r.onProgress,N=void 0===D?function(){}:D,B=r.onFinish,q=void 0===B?function(){}:B,H=r.onCancel,W=void 0===H?function(){}:H,G=r.onSuccess,U=void 0===G?function(){}:G,X=r.onError,z=void 0===X?function(){}:X,J=r.queryStringArrayFormat,K=void 0===J?"brackets":J,_="string"==typeof t?p(t):t;if(!function e(t){return t instanceof File||t instanceof Blob||t instanceof FileList&&t.length>0||t instanceof FormData&&Array.from(t.values()).some(function(t){return e(t)})||"object"==typeof t&&null!==t&&Object.values(t).some(function(t){return e(t)})}(m)&&!O||m instanceof FormData||(m=c(m)),!(m instanceof FormData)){var Q=h(d,_,m,K),Y=Q[1];_=p(Q[0]),m=Y}var Z={url:_,method:d,data:m,replace:w,preserveScroll:S,preserveState:E,only:T,headers:V,errorBag:k,forceFormData:O,queryStringArrayFormat:K,cancelled:!1,completed:!1,interrupted:!1};if(!1!==F(Z)&&function(e){return v("before",{cancelable:!0,detail:{visit:e}})}(Z)){this.activeVisit&&this.cancelVisit(this.activeVisit,{interrupted:!0}),this.saveScrollPositions();var $=this.createVisitId();this.activeVisit=o({},Z,{onCancelToken:R,onBefore:F,onStart:M,onProgress:N,onFinish:q,onCancel:W,onSuccess:U,onError:z,queryStringArrayFormat:K,cancelToken:e.CancelToken.source()}),R({cancel:function(){i.activeVisit&&i.cancelVisit(i.activeVisit,{cancelled:!0})}}),function(e){v("start",{detail:{visit:e}})}(Z),M(Z),e({method:d,url:f(_).href,data:d===s.GET?{}:m,params:d===s.GET?m:{},cancelToken:this.activeVisit.cancelToken.token,headers:o({},V,{Accept:"text/html, application/xhtml+xml","X-Requested-With":"XMLHttpRequest","X-Inertia":!0},T.length?{"X-Inertia-Partial-Component":this.page.component,"X-Inertia-Partial-Data":T.join(",")}:{},k&&k.length?{"X-Inertia-Error-Bag":k}:{},this.page.version?{"X-Inertia-Version":this.page.version}:{}),onUploadProgress:function(e){m instanceof FormData&&(e.percentage=Math.round(e.loaded/e.total*100),function(e){v("progress",{detail:{progress:e}})}(e),N(e))}}).then(function(e){var t;if(!i.isInertiaResponse(e))return Promise.reject({response:e});var n=e.data;T.length&&n.component===i.page.component&&(n.props=o({},i.page.props,n.props)),S=i.resolvePreserveOption(S,n),(E=i.resolvePreserveOption(E,n))&&null!=(t=window.history.state)&&t.rememberedState&&n.component===i.page.component&&(n.rememberedState=window.history.state.rememberedState);var r=_,s=p(n.url);return r.hash&&!s.hash&&f(r).href===s.href&&(s.hash=r.hash,n.url=s.href),i.setPage(n,{visitId:$,replace:w,preserveScroll:S,preserveState:E})}).then(function(){var e=i.page.props.errors||{};if(Object.keys(e).length>0){var t=k?e[k]?e[k]:{}:e;return function(e){v("error",{detail:{errors:e}})}(t),z(t)}return v("success",{detail:{page:i.page}}),U(i.page)}).catch(function(e){if(i.isInertiaResponse(e.response))return i.setPage(e.response.data,{visitId:$});if(i.isLocationVisitResponse(e.response)){var t=p(e.response.headers["x-inertia-location"]),n=_;n.hash&&!t.hash&&f(n).href===t.href&&(t.hash=n.hash),i.locationVisit(t,!0===S)}else{if(!e.response)return Promise.reject(e);v("invalid",{cancelable:!0,detail:{response:e.response}})&&a.show(e.response.data)}}).then(function(){i.activeVisit&&i.finishVisit(i.activeVisit)}).catch(function(t){if(!e.isCancel(t)){var n=v("exception",{cancelable:!0,detail:{exception:t}});if(i.activeVisit&&i.finishVisit(i.activeVisit),n)return Promise.reject(t)}})}},n.setPage=function(e,t){var n=this,i=void 0===t?{}:t,r=i.visitId,o=void 0===r?this.createVisitId():r,s=i.replace,a=void 0!==s&&s,l=i.preserveScroll,c=void 0!==l&&l,d=i.preserveState,u=void 0!==d&&d;return Promise.resolve(this.resolveComponent(e.component)).then(function(t){o===n.visitId&&(e.scrollRegions=e.scrollRegions||[],e.rememberedState=e.rememberedState||{},(a=a||p(e.url).href===window.location.href)?n.replaceState(e):n.pushState(e),n.swapComponent({component:t,page:e,preserveState:u}).then(function(){c||n.resetScrollPositions(),a||g(e)}))})},n.pushState=function(e){this.page=e,window.history.pushState(e,"",e.url)},n.replaceState=function(e){this.page=e,window.history.replaceState(e,"",e.url)},n.handlePopstateEvent=function(e){var t=this;if(null!==e.state){var n=e.state,i=this.createVisitId();Promise.resolve(this.resolveComponent(n.component)).then(function(e){i===t.visitId&&(t.page=n,t.swapComponent({component:e,page:n,preserveState:!1}).then(function(){t.restoreScrollPositions(),g(n)}))})}else{var r=p(this.page.url);r.hash=window.location.hash,this.replaceState(o({},this.page,{url:r.href})),this.resetScrollPositions()}},n.get=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),this.visit(e,o({},n,{method:s.GET,data:t}))},n.reload=function(e){return void 0===e&&(e={}),this.visit(window.location.href,o({},e,{preserveScroll:!0,preserveState:!0}))},n.replace=function(e,t){var n;return void 0===t&&(t={}),console.warn("Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia."+(null!=(n=t.method)?n:"get")+"() instead."),this.visit(e,o({preserveState:!0},t,{replace:!0}))},n.post=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),this.visit(e,o({preserveState:!0},n,{method:s.POST,data:t}))},n.put=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),this.visit(e,o({preserveState:!0},n,{method:s.PUT,data:t}))},n.patch=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),this.visit(e,o({preserveState:!0},n,{method:s.PATCH,data:t}))},n.delete=function(e,t){return void 0===t&&(t={}),this.visit(e,o({preserveState:!0},t,{method:s.DELETE}))},n.remember=function(e,t){var n,i;void 0===t&&(t="default"),w||this.replaceState(o({},this.page,{rememberedState:o({},null==(n=this.page)?void 0:n.rememberedState,(i={},i[t]=e,i))}))},n.restore=function(e){var t,n;if(void 0===e&&(e="default"),!w)return null==(t=window.history.state)||null==(n=t.rememberedState)?void 0:n[e]},n.on=function(e,t){var n=function(e){var n=t(e);e.cancelable&&!e.defaultPrevented&&!1===n&&e.preventDefault()};return document.addEventListener("inertia:"+e,n),function(){return document.removeEventListener("inertia:"+e,n)}},t}(),S=null;function b(e){document.addEventListener("inertia:start",E.bind(null,e)),document.addEventListener("inertia:progress",x),document.addEventListener("inertia:finish",T)}function E(e){S=setTimeout(function(){return r.start()},e)}function x(e){var t;r.isStarted()&&null!=(t=e.detail.progress)&&t.percentage&&r.set(Math.max(r.status,e.detail.progress.percentage/100*.9))}function T(e){clearTimeout(S),r.isStarted()&&(e.detail.visit.completed?r.done():e.detail.visit.interrupted?r.set(0):e.detail.visit.cancelled&&(r.done(),r.remove()))}function P(e){var t=void 0===e?{}:e,n=t.delay,i=t.color,o=void 0===i?"#29d":i,s=t.includeCSS,a=void 0===s||s,l=t.showSpinner,c=void 0!==l&&l;b(void 0===n?250:n),r.configure({showSpinner:c}),a&&function(e){var t=document.createElement("style");t.type="text/css",t.textContent="\n #nprogress {\n pointer-events: none;\n }\n\n #nprogress .bar {\n background: "+e+";\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 "+e+", 0 0 5px "+e+";\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: "+e+";\n border-left-color: "+e+";\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 ",document.head.appendChild(t)}(o)}var V={buildDOMElement:function(e){var t=document.createElement("template");t.innerHTML=e;var n=t.content.firstChild;if(!e.startsWith("<script "))return n;var i=document.createElement("script");return i.innerHTML=n.innerHTML,n.getAttributeNames().forEach(function(e){i.setAttribute(e,n.getAttribute(e)||"")}),i},isInertiaManagedElement:function(e){return e.nodeType===Node.ELEMENT_NODE&&null!==e.getAttribute("inertia")},findMatchingElementIndex:function(e,t){var n=e.getAttribute("inertia");return null!==n?t.findIndex(function(e){return e.getAttribute("inertia")===n}):-1},update:l(function(e){var t=this,n=e.map(function(e){return t.buildDOMElement(e)});Array.from(document.head.childNodes).filter(function(e){return t.isInertiaManagedElement(e)}).forEach(function(e){var i=t.findMatchingElementIndex(e,n);if(-1!==i){var r,o=n.splice(i,1)[0];o&&!e.isEqualNode(o)&&(null==e||null==(r=e.parentNode)||r.replaceChild(o,e))}else{var s;null==e||null==(s=e.parentNode)||s.removeChild(e)}}),n.forEach(function(e){return document.head.appendChild(e)})},1)};function L(e,t,n){var i={},r=0;function s(){var e=t(""),n=o({},e?{title:'<title inertia="">'+e+"</title>"}:{}),r=Object.values(i).reduce(function(e,t){return e.concat(t)},[]).reduce(function(e,n){if(-1===n.indexOf("<"))return e;if(0===n.indexOf("<title ")){var i=n.match(/(<title [^>]+>)(.*?)(<\/title>)/);return e.title=i?""+i[1]+t(i[2])+i[3]:n,e}var r=n.match(/ inertia="[^"]+"/);return r?e[r[0]]=n:e[Object.keys(e).length]=n,e},n);return Object.values(r)}function a(){e?n(s()):V.update(s())}return a(),{forceUpdate:a,createProvider:function(){var e=function(){var e=r+=1;return i[e]=[],e.toString()}();return{update:function(t){return function(e,t){void 0===t&&(t=[]),null!==e&&Object.keys(i).indexOf(e)>-1&&(i[e]=t),a()}(e,t)},disconnect:function(){return function(e){null!==e&&-1!==Object.keys(i).indexOf(e)&&(delete i[e],a())}(e)}}}}}function k(e){var t="a"===e.currentTarget.tagName.toLowerCase();return!(e.target&&null!=e&&e.target.isContentEditable||e.defaultPrevented||t&&e.which>1||t&&e.altKey||t&&e.ctrlKey||t&&e.metaKey||t&&e.shiftKey)}var I=new y;export{s as Method,L as createHeadManager,p as hrefToUrl,h as mergeDataIntoQueryString,I as router,P as setupProgress,k as shouldIntercept,f as urlWithoutHash};
|
|
1
|
+
import{default as _}from"axios";function T(t,e){let r;return function(...i){clearTimeout(r),r=setTimeout(()=>t.apply(this,i),e)}}function m(t,e){return document.dispatchEvent(new CustomEvent(`inertia:${t}`,e))}var H=t=>m("before",{cancelable:!0,detail:{visit:t}}),j=t=>m("error",{detail:{errors:t}}),q=t=>m("exception",{cancelable:!0,detail:{exception:t}}),O=t=>m("finish",{detail:{visit:t}}),$=t=>m("invalid",{cancelable:!0,detail:{response:t}}),w=t=>m("navigate",{detail:{page:t}}),W=t=>m("progress",{detail:{progress:t}}),B=t=>m("start",{detail:{visit:t}}),K=t=>m("success",{detail:{page:t}});function L(t){return t instanceof File||t instanceof Blob||t instanceof FileList&&t.length>0||t instanceof FormData&&Array.from(t.values()).some(e=>L(e))||typeof t=="object"&&t!==null&&Object.values(t).some(e=>L(e))}function k(t,e=new FormData,r=null){t=t||{};for(let i in t)Object.prototype.hasOwnProperty.call(t,i)&&J(e,X(r,i),t[i]);return e}function X(t,e){return t?t+"["+e+"]":e}function J(t,e,r){if(Array.isArray(r))return Array.from(r.keys()).forEach(i=>J(t,X(e,i.toString()),r[i]));if(r instanceof Date)return t.append(e,r.toISOString());if(r instanceof File)return t.append(e,r,r.name);if(r instanceof Blob)return t.append(e,r);if(typeof r=="boolean")return t.append(e,r?"1":"0");if(typeof r=="string")return t.append(e,r);if(typeof r=="number")return t.append(e,`${r}`);if(r==null)return t.append(e,"");k(r,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(i=>i.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 r=document.createElement("iframe");if(r.style.backgroundColor="white",r.style.borderRadius="5px",r.style.width="100%",r.style.height="100%",this.modal.appendChild(r),document.body.prepend(this.modal),document.body.style.overflow="hidden",!r.contentWindow)throw new Error("iframe not yet ready.");r.contentWindow.document.open(),r.contentWindow.document.write(e.outerHTML),r.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 A=(n=>(n.GET="get",n.POST="post",n.PUT="put",n.PATCH="patch",n.DELETE="delete",n))(A||{});import re from"deepmerge";import*as C from"qs";function g(t){return new URL(t.toString(),window.location.toString())}function F(t,e,r,i="brackets"){let s=/^https?:\/\//.test(e.toString()),n=s||e.toString().startsWith("/"),u=!n&&!e.toString().startsWith("#")&&!e.toString().startsWith("?"),f=e.toString().includes("?")||t==="get"&&Object.keys(r).length,b=e.toString().includes("#"),l=new URL(e.toString(),"http://localhost");return t==="get"&&Object.keys(r).length&&(l.search=C.stringify(re(C.parse(l.search,{ignoreQueryPrefix:!0}),r),{encodeValuesOnly:!0,arrayFormat:i}),r={}),[[s?`${l.protocol}//${l.host}`:"",n?l.pathname:"",u?l.pathname.substring(1):"",f?l.search:"",b?l.hash:""].join(""),r]}function x(t){return t=new URL(t.href),t.hash="",t}var Q=typeof window>"u",N=class{constructor(){this.visitId=null}init({initialPage:e,resolveComponent:r,swapComponent:i}){this.page=e,this.resolveComponent=r,this.swapComponent=i,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(()=>w(e))}setupEventListeners(){window.addEventListener("popstate",this.handlePopstateEvent.bind(this)),document.addEventListener("scroll",T(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,r)=>{let i=this.page.scrollRegions[r];if(i)typeof e.scrollTo=="function"?e.scrollTo(i.left,i.top):(e.scrollTop=i.top,e.scrollLeft=i.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(),w(e)})}locationVisit(e,r){try{let i={preserveScroll:r};window.sessionStorage.setItem("inertiaLocationVisit",JSON.stringify(i)),window.location.href=e.href,x(window.location).href===x(e).href&&window.location.reload()}catch{return!1}}isLocationVisit(){try{return window.sessionStorage.getItem("inertiaLocationVisit")!==null}catch{return!1}}handleLocationVisit(e){let r=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:r.preserveScroll,preserveState:!0}).then(()=>{r.preserveScroll&&this.restoreScrollPositions(),w(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:r=!1,interrupted:i=!1}){e&&!e.completed&&!e.cancelled&&!e.interrupted&&(e.cancelToken.abort(),e.onCancel(),e.completed=!1,e.cancelled=r,e.interrupted=i,O(e),e.onFinish(e))}finishVisit(e){!e.cancelled&&!e.interrupted&&(e.completed=!0,e.cancelled=!1,e.interrupted=!1,O(e),e.onFinish(e))}resolvePreserveOption(e,r){return typeof e=="function"?e(r):e==="errors"?Object.keys(r.props.errors||{}).length>0:e}cancel(){this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}visit(e,{method:r="get",data:i={},replace:s=!1,preserveScroll:n=!1,preserveState:u=!1,only:f=[],headers:b={},errorBag:l="",forceFormData:c=!1,onCancelToken:v=()=>{},onBefore:R=()=>{},onStart:d=()=>{},onProgress:p=()=>{},onFinish:V=()=>{},onCancel:y=()=>{},onSuccess:D=()=>{},onError:U=()=>{},queryStringArrayFormat:I="brackets"}={}){let P=typeof e=="string"?g(e):e;if((L(i)||c)&&!(i instanceof FormData)&&(i=k(i)),!(i instanceof FormData)){let[o,a]=F(r,P,i,I);P=g(o),i=a}let S={url:P,method:r,data:i,replace:s,preserveScroll:n,preserveState:u,only:f,headers:b,errorBag:l,forceFormData:c,queryStringArrayFormat:I,cancelled:!1,completed:!1,interrupted:!1};if(R(S)===!1||!H(S))return;this.activeVisit&&this.cancelVisit(this.activeVisit,{interrupted:!0}),this.saveScrollPositions();let M=this.createVisitId();this.activeVisit={...S,onCancelToken:v,onBefore:R,onStart:d,onProgress:p,onFinish:V,onCancel:y,onSuccess:D,onError:U,queryStringArrayFormat:I,cancelToken:new AbortController},v({cancel:()=>{this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}}),B(S),d(S),_({method:r,url:x(P).href,data:r==="get"?{}:i,params:r==="get"?i:{},signal:this.activeVisit.cancelToken.signal,headers:{...b,Accept:"text/html, application/xhtml+xml","X-Requested-With":"XMLHttpRequest","X-Inertia":!0,...f.length?{"X-Inertia-Partial-Component":this.page.component,"X-Inertia-Partial-Data":f.join(",")}:{},...l&&l.length?{"X-Inertia-Error-Bag":l}:{},...this.page.version?{"X-Inertia-Version":this.page.version}:{}},onUploadProgress:o=>{i instanceof FormData&&(o.percentage=o.progress?Math.round(o.progress*100):0,W(o),p(o))}}).then(o=>{if(!this.isInertiaResponse(o))return Promise.reject({response:o});let a=o.data;f.length&&a.component===this.page.component&&(a.props={...this.page.props,...a.props}),n=this.resolvePreserveOption(n,a),u=this.resolvePreserveOption(u,a),u&&window.history.state?.rememberedState&&a.component===this.page.component&&(a.rememberedState=window.history.state.rememberedState);let E=P,G=g(a.url);return E.hash&&!G.hash&&x(E).href===G.href&&(G.hash=E.hash,a.url=G.href),this.setPage(a,{visitId:M,replace:s,preserveScroll:n,preserveState:u})}).then(()=>{let o=this.page.props.errors||{};if(Object.keys(o).length>0){let a=l?o[l]?o[l]:{}:o;return j(a),U(a)}return K(this.page),D(this.page)}).catch(o=>{if(this.isInertiaResponse(o.response))return this.setPage(o.response.data,{visitId:M});if(this.isLocationVisitResponse(o.response)){let a=g(o.response.headers["x-inertia-location"]),E=P;E.hash&&!a.hash&&x(E).href===a.href&&(a.hash=E.hash),this.locationVisit(a,n===!0)}else if(o.response)$(o.response)&&z.show(o.response.data);else return Promise.reject(o)}).then(()=>{this.activeVisit&&this.finishVisit(this.activeVisit)}).catch(o=>{if(!_.isCancel(o)){let a=q(o);if(this.activeVisit&&this.finishVisit(this.activeVisit),a)return Promise.reject(o)}})}setPage(e,{visitId:r=this.createVisitId(),replace:i=!1,preserveScroll:s=!1,preserveState:n=!1}={}){return Promise.resolve(this.resolveComponent(e.component)).then(u=>{r===this.visitId&&(e.scrollRegions=e.scrollRegions||[],e.rememberedState=e.rememberedState||{},i=i||g(e.url).href===window.location.href,i?this.replaceState(e):this.pushState(e),this.swapComponent({component:u,page:e,preserveState:n}).then(()=>{s||this.resetScrollPositions(),i||w(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 r=e.state,i=this.createVisitId();Promise.resolve(this.resolveComponent(r.component)).then(s=>{i===this.visitId&&(this.page=r,this.swapComponent({component:s,page:r,preserveState:!1}).then(()=>{this.restoreScrollPositions(),w(r)}))})}else{let r=g(this.page.url);r.hash=window.location.hash,this.replaceState({...this.page,url:r.href}),this.resetScrollPositions()}}get(e,r={},i={}){return this.visit(e,{...i,method:"get",data:r})}reload(e={}){return this.visit(window.location.href,{...e,preserveScroll:!0,preserveState:!0})}replace(e,r={}){return console.warn(`Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia.${r.method??"get"}() instead.`),this.visit(e,{preserveState:!0,...r,replace:!0})}post(e,r={},i={}){return this.visit(e,{preserveState:!0,...i,method:"post",data:r})}put(e,r={},i={}){return this.visit(e,{preserveState:!0,...i,method:"put",data:r})}patch(e,r={},i={}){return this.visit(e,{preserveState:!0,...i,method:"patch",data:r})}delete(e,r={}){return this.visit(e,{preserveState:!0,...r,method:"delete"})}remember(e,r="default"){Q||this.replaceState({...this.page,rememberedState:{...this.page?.rememberedState,[r]:e}})}restore(e="default"){if(!Q)return window.history.state?.rememberedState?.[e]}on(e,r){let i=s=>{let n=r(s);s.cancelable&&!s.defaultPrevented&&n===!1&&s.preventDefault()};return document.addEventListener(`inertia:${e}`,i),()=>document.removeEventListener(`inertia:${e}`,i)}};var ie={buildDOMElement(t){let e=document.createElement("template");e.innerHTML=t;let r=e.content.firstChild;if(!t.startsWith("<script "))return r;let i=document.createElement("script");return i.innerHTML=r.innerHTML,r.getAttributeNames().forEach(s=>{i.setAttribute(s,r.getAttribute(s)||"")}),i},isInertiaManagedElement(t){return t.nodeType===Node.ELEMENT_NODE&&t.getAttribute("inertia")!==null},findMatchingElementIndex(t,e){let r=t.getAttribute("inertia");return r!==null?e.findIndex(i=>i.getAttribute("inertia")===r):-1},update:T(function(t){let e=t.map(i=>this.buildDOMElement(i));Array.from(document.head.childNodes).filter(i=>this.isInertiaManagedElement(i)).forEach(i=>{let s=this.findMatchingElementIndex(i,e);if(s===-1){i?.parentNode?.removeChild(i);return}let n=e.splice(s,1)[0];n&&!i.isEqualNode(n)&&i?.parentNode?.replaceChild(n,i)}),e.forEach(i=>document.head.appendChild(i))},1)};function Y(t,e,r){let i={},s=0;function n(){let c=s+=1;return i[c]=[],c.toString()}function u(c){c===null||Object.keys(i).indexOf(c)===-1||(delete i[c],l())}function f(c,v=[]){c!==null&&Object.keys(i).indexOf(c)>-1&&(i[c]=v),l()}function b(){let c=e(""),v={...c?{title:`<title inertia="">${c}</title>`}:{}},R=Object.values(i).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 V=p.match(/ inertia="[^"]+"/);return V?d[V[0]]=p:d[Object.keys(d).length]=p,d},v);return Object.values(R)}function l(){t?r(b()):ie.update(b())}return l(),{forceUpdate:l,createProvider:function(){let c=n();return{update:v=>f(c,v),disconnect:()=>u(c)}}}}import h from"nprogress";var Z=null;function oe(t){document.addEventListener("inertia:start",ne.bind(null,t)),document.addEventListener("inertia:progress",se),document.addEventListener("inertia:finish",ae)}function ne(t){Z=setTimeout(()=>h.start(),t)}function se(t){h.isStarted()&&t.detail.progress?.percentage&&h.set(Math.max(h.status,t.detail.progress.percentage/100*.9))}function ae(t){if(clearTimeout(Z),h.isStarted())t.detail.visit.completed?h.done():t.detail.visit.interrupted?h.set(0):t.detail.visit.cancelled&&(h.done(),h.remove());else return}function le(t){let e=document.createElement("style");e.type="text/css",e.textContent=`
|
|
2
|
+
#nprogress {
|
|
3
|
+
pointer-events: none;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
#nprogress .bar {
|
|
7
|
+
background: ${t};
|
|
8
|
+
|
|
9
|
+
position: fixed;
|
|
10
|
+
z-index: 1031;
|
|
11
|
+
top: 0;
|
|
12
|
+
left: 0;
|
|
13
|
+
|
|
14
|
+
width: 100%;
|
|
15
|
+
height: 2px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
#nprogress .peg {
|
|
19
|
+
display: block;
|
|
20
|
+
position: absolute;
|
|
21
|
+
right: 0px;
|
|
22
|
+
width: 100px;
|
|
23
|
+
height: 100%;
|
|
24
|
+
box-shadow: 0 0 10px ${t}, 0 0 5px ${t};
|
|
25
|
+
opacity: 1.0;
|
|
26
|
+
|
|
27
|
+
-webkit-transform: rotate(3deg) translate(0px, -4px);
|
|
28
|
+
-ms-transform: rotate(3deg) translate(0px, -4px);
|
|
29
|
+
transform: rotate(3deg) translate(0px, -4px);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
#nprogress .spinner {
|
|
33
|
+
display: block;
|
|
34
|
+
position: fixed;
|
|
35
|
+
z-index: 1031;
|
|
36
|
+
top: 15px;
|
|
37
|
+
right: 15px;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
#nprogress .spinner-icon {
|
|
41
|
+
width: 18px;
|
|
42
|
+
height: 18px;
|
|
43
|
+
box-sizing: border-box;
|
|
44
|
+
|
|
45
|
+
border: solid 2px transparent;
|
|
46
|
+
border-top-color: ${t};
|
|
47
|
+
border-left-color: ${t};
|
|
48
|
+
border-radius: 50%;
|
|
49
|
+
|
|
50
|
+
-webkit-animation: nprogress-spinner 400ms linear infinite;
|
|
51
|
+
animation: nprogress-spinner 400ms linear infinite;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.nprogress-custom-parent {
|
|
55
|
+
overflow: hidden;
|
|
56
|
+
position: relative;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.nprogress-custom-parent #nprogress .spinner,
|
|
60
|
+
.nprogress-custom-parent #nprogress .bar {
|
|
61
|
+
position: absolute;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@-webkit-keyframes nprogress-spinner {
|
|
65
|
+
0% { -webkit-transform: rotate(0deg); }
|
|
66
|
+
100% { -webkit-transform: rotate(360deg); }
|
|
67
|
+
}
|
|
68
|
+
@keyframes nprogress-spinner {
|
|
69
|
+
0% { transform: rotate(0deg); }
|
|
70
|
+
100% { transform: rotate(360deg); }
|
|
71
|
+
}
|
|
72
|
+
`,document.head.appendChild(e)}function ee({delay:t=250,color:e="#29d",includeCSS:r=!0,showSpinner:i=!1}={}){oe(t),h.configure({showSpinner:i}),r&&le(e)}function te(t){let e=t.currentTarget.tagName.toLowerCase()==="a";return!(t.target&&(t?.target).isContentEditable||t.defaultPrevented||e&&t.which>1||e&&t.altKey||e&&t.ctrlKey||e&&t.metaKey||e&&t.shiftKey)}var Je=new N;export{A as Method,Y as createHeadManager,g as hrefToUrl,F as mergeDataIntoQueryString,Je as router,ee as setupProgress,te as shouldIntercept,x as urlWithoutHash};
|
|
2
73
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/modal.ts","../src/debounce.ts","../src/formData.ts","../src/url.ts","../src/events.ts","../src/types.ts","../src/router.ts","../src/files.ts","../src/progress.ts","../src/head.ts","../src/shouldIntercept.ts","../src/index.ts"],"sourcesContent":["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","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 { 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","import * as qs from 'qs'\nimport deepmerge from 'deepmerge'\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 === 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 === 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 { 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 { AxiosResponse, CancelTokenSource } from 'axios'\n\nexport type Errors = Record<string, string>\nexport type ErrorBag = Record<string, Errors>\n\nexport type FormDataConvertible =\n | Array<FormDataConvertible>\n | Blob\n | FormDataEntryValue\n | Date\n | boolean\n | number\n | null\n | undefined\n\nexport enum Method {\n GET = 'get',\n POST = 'post',\n PUT = 'put',\n PATCH = 'patch',\n DELETE = 'delete',\n}\n\nexport type RequestPayload = Record<string, FormDataConvertible> | FormData\n\nexport interface PageProps {\n [key: string]: unknown\n}\n\nexport interface Page<SharedProps = PageProps> {\n component: string\n props: PageProps &\n SharedProps & {\n errors: Errors & ErrorBag\n }\n url: string\n version: string | null\n\n // Refactor away\n scrollRegions: Array<{ top: number; left: number }>\n rememberedState: Record<string, unknown>\n resolvedErrors: Errors\n}\n\nexport type PageResolver = (name: string) => Component\n\nexport type PageHandler = ({\n component,\n page,\n preserveState,\n}: {\n component: Component\n page: Page\n preserveState: PreserveStateOption\n}) => Promise<unknown>\n\nexport type PreserveStateOption = boolean | string | ((page: Page) => boolean)\n\nexport type Progress = ProgressEvent & { percentage: number }\n\nexport type LocationVisit = {\n preserveScroll: boolean\n}\n\nexport type Visit = {\n method: Method\n data: RequestPayload\n replace: boolean\n preserveScroll: PreserveStateOption\n preserveState: PreserveStateOption\n only: Array<string>\n headers: Record<string, string>\n errorBag: string | null\n forceFormData: boolean\n queryStringArrayFormat: 'indices' | 'brackets'\n}\n\nexport type GlobalEventsMap = {\n before: {\n parameters: [PendingVisit]\n details: {\n visit: PendingVisit\n }\n result: boolean | void\n }\n start: {\n parameters: [PendingVisit]\n details: {\n visit: PendingVisit\n }\n result: void\n }\n progress: {\n parameters: [Progress | undefined]\n details: {\n progress: Progress | undefined\n }\n result: void\n }\n finish: {\n parameters: [ActiveVisit]\n details: {\n visit: ActiveVisit\n }\n result: void\n }\n cancel: {\n parameters: []\n details: {}\n result: void\n }\n navigate: {\n parameters: [Page]\n details: {\n page: Page\n }\n result: void\n }\n success: {\n parameters: [Page]\n details: {\n page: Page\n }\n result: void\n }\n error: {\n parameters: [Errors]\n details: {\n errors: Errors\n }\n result: void\n }\n invalid: {\n parameters: [AxiosResponse]\n details: {\n response: AxiosResponse\n }\n result: boolean | void\n }\n exception: {\n parameters: [Error]\n details: {\n exception: Error\n }\n result: boolean | void\n }\n}\n\nexport type GlobalEventNames = keyof GlobalEventsMap\n\nexport type GlobalEvent<TEventName extends GlobalEventNames> = CustomEvent<GlobalEventDetails<TEventName>>\n\nexport type GlobalEventParameters<TEventName extends GlobalEventNames> = GlobalEventsMap[TEventName]['parameters']\n\nexport type GlobalEventResult<TEventName extends GlobalEventNames> = GlobalEventsMap[TEventName]['result']\n\nexport type GlobalEventDetails<TEventName extends GlobalEventNames> = GlobalEventsMap[TEventName]['details']\n\nexport type GlobalEventTrigger<TEventName extends GlobalEventNames> = (\n ...params: GlobalEventParameters<TEventName>\n) => GlobalEventResult<TEventName>\n\nexport type GlobalEventCallback<TEventName extends GlobalEventNames> = (\n ...params: GlobalEventParameters<TEventName>\n) => GlobalEventResult<TEventName>\n\nexport type VisitOptions = Partial<\n Visit & {\n onCancelToken: { ({ cancel }: { cancel: VoidFunction }): void }\n onBefore: GlobalEventCallback<'before'>\n onStart: GlobalEventCallback<'start'>\n onProgress: GlobalEventCallback<'progress'>\n onFinish: GlobalEventCallback<'finish'>\n onCancel: GlobalEventCallback<'cancel'>\n onSuccess: GlobalEventCallback<'success'>\n onError: GlobalEventCallback<'error'>\n }\n>\n\nexport type PendingVisit = Visit & {\n url: URL\n completed: boolean\n cancelled: boolean\n interrupted: boolean\n}\n\nexport type ActiveVisit = PendingVisit &\n Required<VisitOptions> & {\n cancelToken: CancelTokenSource\n }\n\nexport type VisitId = unknown\nexport type Component = unknown\n\nexport type InertiaAppResponse = Promise<{ head: string[]; body: string } | void>\n\ndeclare global {\n interface DocumentEventMap {\n 'inertia:before': GlobalEvent<'before'>\n 'inertia:start': GlobalEvent<'start'>\n 'inertia:progress': GlobalEvent<'progress'>\n 'inertia:success': GlobalEvent<'success'>\n 'inertia:error': GlobalEvent<'error'>\n 'inertia:invalid': GlobalEvent<'invalid'>\n 'inertia:exception': GlobalEvent<'exception'>\n 'inertia:finish': GlobalEvent<'finish'>\n 'inertia:navigate': GlobalEvent<'navigate'>\n }\n}\n","import modal from './modal'\nimport debounce from './debounce'\nimport { hasFiles } from './files'\nimport { objectToFormData } from './formData'\nimport { default as Axios, AxiosResponse } from 'axios'\nimport { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash } from './url'\nimport {\n ActiveVisit,\n GlobalEvent,\n GlobalEventNames,\n GlobalEventResult,\n LocationVisit,\n Method,\n Page,\n PageHandler,\n PageResolver,\n PendingVisit,\n PreserveStateOption,\n RequestPayload,\n VisitId,\n VisitOptions,\n} from './types'\nimport {\n fireBeforeEvent,\n fireErrorEvent,\n fireExceptionEvent,\n fireFinishEvent,\n fireInvalidEvent,\n fireNavigateEvent,\n fireProgressEvent,\n fireStartEvent,\n fireSuccessEvent,\n} from './events'\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 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.cancel()\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 visit(\n href: string | URL,\n {\n method = 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: Axios.CancelToken.source(),\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 === Method.GET ? {} : data,\n params: method === Method.GET ? data : {},\n cancelToken: this.activeVisit.cancelToken.token,\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 = Math.round((progress.loaded / progress.total) * 100)\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: 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: 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: 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: 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: 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","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 { GlobalEvent } from './types'\nimport NProgress from 'nprogress'\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","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","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 * from './types'\n\nexport { default as setupProgress } from './progress'\nexport { default as createHeadManager } from './head'\nexport { default as shouldIntercept } from './shouldIntercept'\nexport { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash } from './url'\n\nexport const router = new Router()\n"],"names":["modal","listener","show","html","JSON","stringify","document","createElement","page","innerHTML","querySelectorAll","forEach","a","setAttribute","this","style","position","width","height","padding","boxSizing","backgroundColor","zIndex","addEventListener","hide","iframe","borderRadius","appendChild","body","prepend","overflow","contentWindow","open","write","outerHTML","close","hideOnEscape","bind","removeEventListener","event","keyCode","fn","delay","clearTimeout","timeoutID","setTimeout","apply","_this","source","form","parentKey","Object","prototype","hasOwnProperty","call","key","append","composeKey","parent","value","Array","isArray","from","keys","index","toString","toISOString","name","objectToFormData","href","window","location","method","data","qsArrayFormat","test","hasHost","startsWith","hasAbsolutePath","includes","Method","GET","length","url","search","qs","deepmerge","ignoreQueryPrefix","encodeValuesOnly","arrayFormat","protocol","host","pathname","hasRelativePath","substring","hasSearch","hasHash","hash","join","options","dispatchEvent","visit","detail","init","resolveComponent","swapComponent","initialPage","setNavigationType","clearRememberedStateOnReload","isBackForwardVisit","handleBackForwardVisit","isLocationVisit","handleLocationVisit","handleInitialPageVisit","setupEventListeners","navigationType","performance","getEntriesByType","type","history","state","_window$history$state","rememberedState","setPage","preserveState","then","handlePopstateEvent","debounce","handleScrollEvent","scrollRegions","target","hasAttribute","saveScrollPositions","replaceState","map","region","top","scrollTop","left","scrollLeft","resetScrollPositions","scrollTo","getElementById","slice","_document$getElementB","scrollIntoView","restoreScrollPositions","scrollPosition","version","preserveScroll","_this2","fireNavigateEvent","locationVisit","sessionStorage","setItem","urlWithoutHash","reload","error","getItem","parse","removeItem","_window$history$state3","_window$history$state5","_this3","isLocationVisitResponse","response","status","headers","isInertiaResponse","createVisitId","visitId","cancelVisit","activeVisit","cancelled","interrupted","completed","cancelToken","cancel","onCancel","fireFinishEvent","onFinish","finishVisit","resolvePreserveOption","props","errors","replace","only","errorBag","forceFormData","onCancelToken","onBefore","onStart","onProgress","onSuccess","onError","queryStringArrayFormat","hrefToUrl","values","some","hasFiles","mergeDataIntoQueryString","_data","cancelable","fireBeforeEvent","Axios","CancelToken","_this4","fireStartEvent","params","token","Accept","X-Requested-With","X-Inertia","X-Inertia-Partial-Component","component","X-Inertia-Partial-Data","X-Inertia-Error-Bag","X-Inertia-Version","onUploadProgress","progress","percentage","Math","round","loaded","total","fireProgressEvent","reject","pageResponse","_window$history$state6","requestUrl","responseUrl","fireErrorEvent","scopedErrors","locationUrl","isCancel","exception","throwException","resolve","_this5","pushState","Promise","_this6","get","console","warn","post","POST","put","PUT","patch","PATCH","DELETE","remember","isServer","_this$page","restore","_window$history$state7","_window$history$state8","on","callback","defaultPrevented","preventDefault","start","finish","timeout","NProgress","isStarted","_event$detail$progres","set","max","done","remove","color","includeCSS","showSpinner","addEventListeners","configure","element","textContent","head","injectCSS","buildDOMElement","tag","template","content","firstChild","script","node","getAttributeNames","getAttribute","isInertiaManagedElement","nodeType","Node","ELEMENT_NODE","findMatchingElementIndex","elements","findIndex","update","childNodes","filter","targetElement","sourceElements","splice","sourceElement","isEqualNode","parentNode","_targetElement$parent2","replaceChild","_targetElement$parent","removeChild","titleCallback","onUpdate","title","states","reduce","carry","concat","indexOf","match","defaults","collect","Renderer","commit","forceUpdate","createProvider","lastProviderId","id","connect","disconnect","currentTarget","tagName","toLowerCase","isContentEditable","isLink","which","altKey","ctrlKey","metaKey","shiftKey","router"],"mappings":"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"}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/router.ts", "../src/debounce.ts", "../src/events.ts", "../src/files.ts", "../src/formData.ts", "../src/modal.ts", "../src/types.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 Method,\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 = 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 === Method.GET ? {} : data,\n params: method === 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: 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: 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: 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: 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: 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 { AxiosProgressEvent, AxiosResponse } from 'axios'\n\ndeclare module 'axios' {\n export interface AxiosProgressEvent {\n percentage: number | undefined\n }\n}\n\nexport type Errors = Record<string, string>\nexport type ErrorBag = Record<string, Errors>\n\nexport type FormDataConvertible =\n | Array<FormDataConvertible>\n | Blob\n | FormDataEntryValue\n | Date\n | boolean\n | number\n | null\n | undefined\n\nexport enum Method {\n GET = 'get',\n POST = 'post',\n PUT = 'put',\n PATCH = 'patch',\n DELETE = 'delete',\n}\n\nexport type RequestPayload = Record<string, FormDataConvertible> | FormData\n\nexport interface PageProps {\n [key: string]: unknown\n}\n\nexport interface Page<SharedProps = PageProps> {\n component: string\n props: PageProps &\n SharedProps & {\n errors: Errors & ErrorBag\n }\n url: string\n version: string | null\n\n // Refactor away\n scrollRegions: Array<{ top: number; left: number }>\n rememberedState: Record<string, unknown>\n resolvedErrors: Errors\n}\n\nexport type PageResolver = (name: string) => Component\n\nexport type PageHandler = ({\n component,\n page,\n preserveState,\n}: {\n component: Component\n page: Page\n preserveState: PreserveStateOption\n}) => Promise<unknown>\n\nexport type PreserveStateOption = boolean | string | ((page: Page) => boolean)\n\nexport type Progress = AxiosProgressEvent\n\nexport type LocationVisit = {\n preserveScroll: boolean\n}\n\nexport type Visit = {\n method: Method\n data: RequestPayload\n replace: boolean\n preserveScroll: PreserveStateOption\n preserveState: PreserveStateOption\n only: Array<string>\n headers: Record<string, string>\n errorBag: string | null\n forceFormData: boolean\n queryStringArrayFormat: 'indices' | 'brackets'\n}\n\nexport type GlobalEventsMap = {\n before: {\n parameters: [PendingVisit]\n details: {\n visit: PendingVisit\n }\n result: boolean | void\n }\n start: {\n parameters: [PendingVisit]\n details: {\n visit: PendingVisit\n }\n result: void\n }\n progress: {\n parameters: [Progress | undefined]\n details: {\n progress: Progress | undefined\n }\n result: void\n }\n finish: {\n parameters: [ActiveVisit]\n details: {\n visit: ActiveVisit\n }\n result: void\n }\n cancel: {\n parameters: []\n details: {}\n result: void\n }\n navigate: {\n parameters: [Page]\n details: {\n page: Page\n }\n result: void\n }\n success: {\n parameters: [Page]\n details: {\n page: Page\n }\n result: void\n }\n error: {\n parameters: [Errors]\n details: {\n errors: Errors\n }\n result: void\n }\n invalid: {\n parameters: [AxiosResponse]\n details: {\n response: AxiosResponse\n }\n result: boolean | void\n }\n exception: {\n parameters: [Error]\n details: {\n exception: Error\n }\n result: boolean | void\n }\n}\n\nexport type GlobalEventNames = keyof GlobalEventsMap\n\nexport type GlobalEvent<TEventName extends GlobalEventNames> = CustomEvent<GlobalEventDetails<TEventName>>\n\nexport type GlobalEventParameters<TEventName extends GlobalEventNames> = GlobalEventsMap[TEventName]['parameters']\n\nexport type GlobalEventResult<TEventName extends GlobalEventNames> = GlobalEventsMap[TEventName]['result']\n\nexport type GlobalEventDetails<TEventName extends GlobalEventNames> = GlobalEventsMap[TEventName]['details']\n\nexport type GlobalEventTrigger<TEventName extends GlobalEventNames> = (\n ...params: GlobalEventParameters<TEventName>\n) => GlobalEventResult<TEventName>\n\nexport type GlobalEventCallback<TEventName extends GlobalEventNames> = (\n ...params: GlobalEventParameters<TEventName>\n) => GlobalEventResult<TEventName>\n\nexport type VisitOptions = Partial<\n Visit & {\n onCancelToken: { ({ cancel }: { cancel: VoidFunction }): void }\n onBefore: GlobalEventCallback<'before'>\n onStart: GlobalEventCallback<'start'>\n onProgress: GlobalEventCallback<'progress'>\n onFinish: GlobalEventCallback<'finish'>\n onCancel: GlobalEventCallback<'cancel'>\n onSuccess: GlobalEventCallback<'success'>\n onError: GlobalEventCallback<'error'>\n }\n>\n\nexport type PendingVisit = Visit & {\n url: URL\n completed: boolean\n cancelled: boolean\n interrupted: boolean\n}\n\nexport type ActiveVisit = PendingVisit &\n Required<VisitOptions> & {\n cancelToken: AbortController\n }\n\nexport type VisitId = unknown\nexport type Component = unknown\n\nexport type InertiaAppResponse = Promise<{ head: string[]; body: string } | void>\n\ndeclare global {\n interface DocumentEventMap {\n 'inertia:before': GlobalEvent<'before'>\n 'inertia:start': GlobalEvent<'start'>\n 'inertia:progress': GlobalEvent<'progress'>\n 'inertia:success': GlobalEvent<'success'>\n 'inertia:error': GlobalEvent<'error'>\n 'inertia:invalid': GlobalEvent<'invalid'>\n 'inertia:exception': GlobalEvent<'exception'>\n 'inertia:finish': GlobalEvent<'finish'>\n 'inertia:navigate': GlobalEvent<'navigate'>\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 === 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 === 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
|
+
"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", "Method", "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", "NProgress", "timeout", "addEventListeners", "delay", "start", "progress", "finish", "event", "injectCSS", "color", "element", "setupProgress", "includeCSS", "showSpinner", "shouldIntercept", "event", "isLink", "router", "Router"]
|
|
7
|
+
}
|