@inertiajs/core 2.2.5 → 2.2.7
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 +65 -51
- package/dist/index.esm.js.map +2 -2
- package/dist/index.js +65 -51
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
- package/types/history.d.ts +2 -2
- package/types/index.d.ts +1 -1
- package/types/infiniteScroll/data.d.ts +2 -2
- package/types/types.d.ts +5 -5
- package/types/url.d.ts +2 -0
package/dist/index.js
CHANGED
|
@@ -45,6 +45,8 @@ __export(index_exports, {
|
|
|
45
45
|
setupProgress: () => setupProgress,
|
|
46
46
|
shouldIntercept: () => shouldIntercept,
|
|
47
47
|
shouldNavigate: () => shouldNavigate,
|
|
48
|
+
urlHasProtocol: () => urlHasProtocol,
|
|
49
|
+
urlToString: () => urlToString,
|
|
48
50
|
urlWithoutHash: () => urlWithoutHash,
|
|
49
51
|
useInfiniteScroll: () => useInfiniteScroll
|
|
50
52
|
});
|
|
@@ -404,7 +406,7 @@ var transformUrlAndData = (href, data, method, forceFormData, queryStringArrayFo
|
|
|
404
406
|
};
|
|
405
407
|
function mergeDataIntoQueryString(method, href, data, qsArrayFormat = "brackets") {
|
|
406
408
|
const hasDataForQueryString = method === "get" && !isFormData(data) && Object.keys(data).length > 0;
|
|
407
|
-
const hasHost =
|
|
409
|
+
const hasHost = urlHasProtocol(href.toString());
|
|
408
410
|
const hasAbsolutePath = hasHost || href.toString().startsWith("/") || href.toString() === "";
|
|
409
411
|
const hasRelativePath = !hasAbsolutePath && !href.toString().startsWith("#") && !href.toString().startsWith("?");
|
|
410
412
|
const hasRelativePathWithDotPrefix = /^[.]{1,2}([/]|$)/.test(href.toString());
|
|
@@ -448,6 +450,13 @@ var isSameUrlWithoutHash = (url1, url2) => {
|
|
|
448
450
|
function isUrlMethodPair(href) {
|
|
449
451
|
return href !== null && typeof href === "object" && href !== void 0 && "url" in href && "method" in href;
|
|
450
452
|
}
|
|
453
|
+
function urlHasProtocol(url) {
|
|
454
|
+
return /^[a-z][a-z0-9+.-]*:\/\//i.test(url);
|
|
455
|
+
}
|
|
456
|
+
function urlToString(url, absolute) {
|
|
457
|
+
const urlObj = typeof url === "string" ? hrefToUrl(url) : url;
|
|
458
|
+
return absolute ? `${urlObj.protocol}//${urlObj.host}${urlObj.pathname}${urlObj.search}${urlObj.hash}` : `${urlObj.pathname}${urlObj.search}${urlObj.hash}`;
|
|
459
|
+
}
|
|
451
460
|
|
|
452
461
|
// src/page.ts
|
|
453
462
|
var CurrentPage = class {
|
|
@@ -634,15 +643,13 @@ var History = class {
|
|
|
634
643
|
this.current = page2;
|
|
635
644
|
queue.add(() => {
|
|
636
645
|
return this.getPageData(page2).then((data) => {
|
|
637
|
-
const doPush = () => {
|
|
638
|
-
this.doPushState({ page: data }, page2.url);
|
|
639
|
-
cb && cb();
|
|
640
|
-
};
|
|
646
|
+
const doPush = () => this.doPushState({ page: data }, page2.url).then(() => cb?.());
|
|
641
647
|
if (isChromeIOS) {
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
648
|
+
return new Promise((resolve) => {
|
|
649
|
+
setTimeout(() => doPush().then(resolve));
|
|
650
|
+
});
|
|
645
651
|
}
|
|
652
|
+
return doPush();
|
|
646
653
|
});
|
|
647
654
|
});
|
|
648
655
|
}
|
|
@@ -680,7 +687,7 @@ var History = class {
|
|
|
680
687
|
if (!window.history.state?.page) {
|
|
681
688
|
return;
|
|
682
689
|
}
|
|
683
|
-
this.doReplaceState({
|
|
690
|
+
return this.doReplaceState({
|
|
684
691
|
page: window.history.state.page,
|
|
685
692
|
scrollRegions
|
|
686
693
|
});
|
|
@@ -693,7 +700,7 @@ var History = class {
|
|
|
693
700
|
if (!window.history.state?.page) {
|
|
694
701
|
return;
|
|
695
702
|
}
|
|
696
|
-
this.doReplaceState({
|
|
703
|
+
return this.doReplaceState({
|
|
697
704
|
page: window.history.state.page,
|
|
698
705
|
documentScrollPosition: scrollRegion
|
|
699
706
|
});
|
|
@@ -718,31 +725,31 @@ var History = class {
|
|
|
718
725
|
this.current = page2;
|
|
719
726
|
queue.add(() => {
|
|
720
727
|
return this.getPageData(page2).then((data) => {
|
|
721
|
-
const doReplace = () => {
|
|
722
|
-
this.doReplaceState({ page: data }, page2.url);
|
|
723
|
-
cb && cb();
|
|
724
|
-
};
|
|
728
|
+
const doReplace = () => this.doReplaceState({ page: data }, page2.url).then(() => cb?.());
|
|
725
729
|
if (isChromeIOS) {
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
730
|
+
return new Promise((resolve) => {
|
|
731
|
+
setTimeout(() => doReplace().then(resolve));
|
|
732
|
+
});
|
|
729
733
|
}
|
|
734
|
+
return doReplace();
|
|
730
735
|
});
|
|
731
736
|
});
|
|
732
737
|
}
|
|
733
738
|
doReplaceState(data, url) {
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
739
|
+
return Promise.resolve().then(
|
|
740
|
+
() => window.history.replaceState(
|
|
741
|
+
{
|
|
742
|
+
...data,
|
|
743
|
+
scrollRegions: data.scrollRegions ?? window.history.state?.scrollRegions,
|
|
744
|
+
documentScrollPosition: data.documentScrollPosition ?? window.history.state?.documentScrollPosition
|
|
745
|
+
},
|
|
746
|
+
"",
|
|
747
|
+
url
|
|
748
|
+
)
|
|
742
749
|
);
|
|
743
750
|
}
|
|
744
751
|
doPushState(data, url) {
|
|
745
|
-
window.history.pushState(data, "", url);
|
|
752
|
+
return Promise.resolve().then(() => window.history.pushState(data, "", url));
|
|
746
753
|
}
|
|
747
754
|
getState(key, defaultValue) {
|
|
748
755
|
return this.current?.[key] ?? defaultValue;
|
|
@@ -2430,33 +2437,37 @@ var useInfiniteScrollData = (options) => {
|
|
|
2430
2437
|
}
|
|
2431
2438
|
throw new Error(`The page object does not contain a scroll prop named "${options.getPropName()}".`);
|
|
2432
2439
|
};
|
|
2433
|
-
const { previousPage, nextPage, currentPage: lastLoadedPage } = getScrollPropFromCurrentPage();
|
|
2434
2440
|
const state = {
|
|
2435
|
-
component:
|
|
2441
|
+
component: null,
|
|
2436
2442
|
loading: false,
|
|
2437
|
-
previousPage,
|
|
2438
|
-
nextPage,
|
|
2439
|
-
lastLoadedPage,
|
|
2443
|
+
previousPage: null,
|
|
2444
|
+
nextPage: null,
|
|
2445
|
+
lastLoadedPage: null,
|
|
2440
2446
|
requestCount: 0
|
|
2441
2447
|
};
|
|
2448
|
+
const resetState = () => {
|
|
2449
|
+
const scrollProp = getScrollPropFromCurrentPage();
|
|
2450
|
+
state.component = page.get().component;
|
|
2451
|
+
state.loading = false;
|
|
2452
|
+
state.previousPage = scrollProp.previousPage;
|
|
2453
|
+
state.nextPage = scrollProp.nextPage;
|
|
2454
|
+
state.lastLoadedPage = scrollProp.currentPage;
|
|
2455
|
+
state.requestCount = 0;
|
|
2456
|
+
};
|
|
2442
2457
|
const getRememberKey = () => `inertia:infinite-scroll-data:${options.getPropName()}`;
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2458
|
+
if (typeof window !== "undefined") {
|
|
2459
|
+
resetState();
|
|
2460
|
+
const rememberedState = router.restore(getRememberKey());
|
|
2461
|
+
if (rememberedState && typeof rememberedState === "object") {
|
|
2462
|
+
state.previousPage = rememberedState.previousPage;
|
|
2463
|
+
state.nextPage = rememberedState.nextPage;
|
|
2464
|
+
state.lastLoadedPage = rememberedState.lastLoadedPage;
|
|
2465
|
+
state.requestCount = rememberedState.requestCount || 0;
|
|
2466
|
+
}
|
|
2449
2467
|
}
|
|
2450
2468
|
const removeEventListener = router.on("success", (event) => {
|
|
2451
|
-
if (state.component
|
|
2452
|
-
|
|
2453
|
-
}
|
|
2454
|
-
const scrollProp = getScrollPropFromCurrentPage();
|
|
2455
|
-
if (scrollProp.reset) {
|
|
2456
|
-
state.previousPage = scrollProp.previousPage;
|
|
2457
|
-
state.nextPage = scrollProp.nextPage;
|
|
2458
|
-
state.lastLoadedPage = scrollProp.currentPage;
|
|
2459
|
-
state.requestCount = 0;
|
|
2469
|
+
if (state.component === event.detail.page.component && getScrollPropFromCurrentPage().reset) {
|
|
2470
|
+
resetState();
|
|
2460
2471
|
}
|
|
2461
2472
|
});
|
|
2462
2473
|
const getScrollPropKeyForSide = (side) => {
|
|
@@ -2727,6 +2738,7 @@ var useInfiniteScrollElementManager = (options) => {
|
|
|
2727
2738
|
var queue3 = new Queue();
|
|
2728
2739
|
var initialUrl;
|
|
2729
2740
|
var payloadUrl;
|
|
2741
|
+
var initialUrlWasAbsolute = null;
|
|
2730
2742
|
var useInfiniteScrollQueryString = (options) => {
|
|
2731
2743
|
let enabled = true;
|
|
2732
2744
|
const queuePageUpdate = (page2) => {
|
|
@@ -2737,8 +2749,10 @@ var useInfiniteScrollQueryString = (options) => {
|
|
|
2737
2749
|
return resolve();
|
|
2738
2750
|
}
|
|
2739
2751
|
if (!initialUrl || !payloadUrl) {
|
|
2740
|
-
|
|
2741
|
-
|
|
2752
|
+
const currentPageUrl = page.get().url;
|
|
2753
|
+
initialUrl = hrefToUrl(currentPageUrl);
|
|
2754
|
+
payloadUrl = hrefToUrl(currentPageUrl);
|
|
2755
|
+
initialUrlWasAbsolute = urlHasProtocol(currentPageUrl);
|
|
2742
2756
|
}
|
|
2743
2757
|
const pageName = options.getPageName();
|
|
2744
2758
|
const searchParams = payloadUrl.searchParams;
|
|
@@ -2750,14 +2764,14 @@ var useInfiniteScrollQueryString = (options) => {
|
|
|
2750
2764
|
setTimeout(() => resolve());
|
|
2751
2765
|
});
|
|
2752
2766
|
}).finally(() => {
|
|
2753
|
-
if (enabled && initialUrl && payloadUrl && initialUrl.href !== payloadUrl.href) {
|
|
2767
|
+
if (enabled && initialUrl && payloadUrl && initialUrl.href !== payloadUrl.href && initialUrlWasAbsolute !== null) {
|
|
2754
2768
|
router.replace({
|
|
2755
|
-
url: payloadUrl
|
|
2769
|
+
url: urlToString(payloadUrl, initialUrlWasAbsolute),
|
|
2756
2770
|
preserveScroll: true,
|
|
2757
2771
|
preserveState: true
|
|
2758
2772
|
});
|
|
2759
2773
|
}
|
|
2760
|
-
initialUrl = payloadUrl = null;
|
|
2774
|
+
initialUrl = payloadUrl = initialUrlWasAbsolute = null;
|
|
2761
2775
|
});
|
|
2762
2776
|
};
|
|
2763
2777
|
const onItemIntersected = debounce((itemElement) => {
|