@inertiajs/core 2.3.3 → 2.3.5
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 +51 -17
- package/dist/index.esm.js.map +2 -2
- package/dist/index.js +51 -17
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
- package/types/history.d.ts +8 -1
- package/types/page.d.ts +1 -0
- package/types/types.d.ts +1 -1
package/dist/index.js
CHANGED
|
@@ -844,6 +844,7 @@ var CurrentPage = class {
|
|
|
844
844
|
this.isFirstPageLoad = true;
|
|
845
845
|
this.cleared = false;
|
|
846
846
|
this.pendingDeferredProps = null;
|
|
847
|
+
this.historyQuotaExceeded = false;
|
|
847
848
|
}
|
|
848
849
|
init({
|
|
849
850
|
initialPage,
|
|
@@ -855,6 +856,9 @@ var CurrentPage = class {
|
|
|
855
856
|
this.swapComponent = swapComponent;
|
|
856
857
|
this.resolveComponent = resolveComponent;
|
|
857
858
|
this.onFlashCallback = onFlash;
|
|
859
|
+
eventHandler.on("historyQuotaExceeded", () => {
|
|
860
|
+
this.historyQuotaExceeded = true;
|
|
861
|
+
});
|
|
858
862
|
return this;
|
|
859
863
|
}
|
|
860
864
|
set(page2, {
|
|
@@ -904,6 +908,10 @@ var CurrentPage = class {
|
|
|
904
908
|
this.fireEventsFor("firstLoad");
|
|
905
909
|
}
|
|
906
910
|
this.isFirstPageLoad = false;
|
|
911
|
+
if (this.historyQuotaExceeded) {
|
|
912
|
+
this.historyQuotaExceeded = false;
|
|
913
|
+
return;
|
|
914
|
+
}
|
|
907
915
|
return this.swap({
|
|
908
916
|
component,
|
|
909
917
|
page: page2,
|
|
@@ -1185,9 +1193,27 @@ var History = class {
|
|
|
1185
1193
|
});
|
|
1186
1194
|
});
|
|
1187
1195
|
}
|
|
1196
|
+
isHistoryThrottleError(error) {
|
|
1197
|
+
return error instanceof Error && error.name === "SecurityError" && (error.message.includes("history.pushState") || error.message.includes("history.replaceState"));
|
|
1198
|
+
}
|
|
1199
|
+
isQuotaExceededError(error) {
|
|
1200
|
+
return error instanceof Error && error.name === "QuotaExceededError";
|
|
1201
|
+
}
|
|
1202
|
+
withThrottleProtection(cb) {
|
|
1203
|
+
return Promise.resolve().then(() => {
|
|
1204
|
+
try {
|
|
1205
|
+
return cb();
|
|
1206
|
+
} catch (error) {
|
|
1207
|
+
if (!this.isHistoryThrottleError(error)) {
|
|
1208
|
+
throw error;
|
|
1209
|
+
}
|
|
1210
|
+
console.error(error.message);
|
|
1211
|
+
}
|
|
1212
|
+
});
|
|
1213
|
+
}
|
|
1188
1214
|
doReplaceState(data, url) {
|
|
1189
|
-
return
|
|
1190
|
-
|
|
1215
|
+
return this.withThrottleProtection(() => {
|
|
1216
|
+
window.history.replaceState(
|
|
1191
1217
|
{
|
|
1192
1218
|
...data,
|
|
1193
1219
|
scrollRegions: data.scrollRegions ?? window.history.state?.scrollRegions,
|
|
@@ -1195,11 +1221,20 @@ var History = class {
|
|
|
1195
1221
|
},
|
|
1196
1222
|
"",
|
|
1197
1223
|
url
|
|
1198
|
-
)
|
|
1199
|
-
);
|
|
1224
|
+
);
|
|
1225
|
+
});
|
|
1200
1226
|
}
|
|
1201
1227
|
doPushState(data, url) {
|
|
1202
|
-
return
|
|
1228
|
+
return this.withThrottleProtection(() => {
|
|
1229
|
+
try {
|
|
1230
|
+
window.history.pushState(data, "", url);
|
|
1231
|
+
} catch (error) {
|
|
1232
|
+
if (!this.isQuotaExceededError(error)) {
|
|
1233
|
+
throw error;
|
|
1234
|
+
}
|
|
1235
|
+
eventHandler.fireInternalEvent("historyQuotaExceeded", url);
|
|
1236
|
+
}
|
|
1237
|
+
});
|
|
1203
1238
|
}
|
|
1204
1239
|
getState(key, defaultValue) {
|
|
1205
1240
|
return this.current?.[key] ?? defaultValue;
|
|
@@ -1215,8 +1250,8 @@ var History = class {
|
|
|
1215
1250
|
delete this.initialState[key];
|
|
1216
1251
|
}
|
|
1217
1252
|
}
|
|
1218
|
-
|
|
1219
|
-
return !!
|
|
1253
|
+
browserHasHistoryEntry() {
|
|
1254
|
+
return !isServer && !!window.history.state?.page;
|
|
1220
1255
|
}
|
|
1221
1256
|
clear() {
|
|
1222
1257
|
SessionStorage.remove(historySessionStorageKeys.key);
|
|
@@ -1346,7 +1381,7 @@ var InitialVisit = class {
|
|
|
1346
1381
|
}
|
|
1347
1382
|
}
|
|
1348
1383
|
static handleBackForward() {
|
|
1349
|
-
if (!navigationType.isBackForward() || !history.
|
|
1384
|
+
if (!navigationType.isBackForward() || !history.browserHasHistoryEntry()) {
|
|
1350
1385
|
return false;
|
|
1351
1386
|
}
|
|
1352
1387
|
const scrollRegions = history.getScrollRegions();
|
|
@@ -2225,6 +2260,9 @@ var Router = class {
|
|
|
2225
2260
|
eventHandler.on("loadDeferredProps", (deferredProps) => {
|
|
2226
2261
|
this.loadDeferredProps(deferredProps);
|
|
2227
2262
|
});
|
|
2263
|
+
eventHandler.on("historyQuotaExceeded", (url) => {
|
|
2264
|
+
window.location.href = url;
|
|
2265
|
+
});
|
|
2228
2266
|
}
|
|
2229
2267
|
get(url, data = {}, options = {}) {
|
|
2230
2268
|
return this.visit(url, { ...options, method: "get", data });
|
|
@@ -3031,7 +3069,7 @@ var useInfiniteScrollData = (options) => {
|
|
|
3031
3069
|
if (typeof window !== "undefined") {
|
|
3032
3070
|
resetState();
|
|
3033
3071
|
const rememberedState = router.restore(getRememberKey());
|
|
3034
|
-
if (rememberedState && typeof rememberedState === "object") {
|
|
3072
|
+
if (rememberedState && typeof rememberedState === "object" && rememberedState.lastLoadedPage === getScrollPropFromCurrentPage().currentPage) {
|
|
3035
3073
|
state.previousPage = rememberedState.previousPage;
|
|
3036
3074
|
state.nextPage = rememberedState.nextPage;
|
|
3037
3075
|
state.lastLoadedPage = rememberedState.lastLoadedPage;
|
|
@@ -3452,17 +3490,11 @@ function useInfiniteScroll(options) {
|
|
|
3452
3490
|
// After successful request, tag new server content
|
|
3453
3491
|
onCompletePreviousRequest: (loadedPage) => {
|
|
3454
3492
|
options.onCompletePreviousRequest();
|
|
3455
|
-
requestAnimationFrame(() =>
|
|
3456
|
-
elementManager.processServerLoadedElements(loadedPage);
|
|
3457
|
-
elementManager.refreshTriggers();
|
|
3458
|
-
}, 2);
|
|
3493
|
+
requestAnimationFrame(() => elementManager.processServerLoadedElements(loadedPage), 2);
|
|
3459
3494
|
},
|
|
3460
3495
|
onCompleteNextRequest: (loadedPage) => {
|
|
3461
3496
|
options.onCompleteNextRequest();
|
|
3462
|
-
requestAnimationFrame(() =>
|
|
3463
|
-
elementManager.processServerLoadedElements(loadedPage);
|
|
3464
|
-
elementManager.refreshTriggers();
|
|
3465
|
-
}, 2);
|
|
3497
|
+
requestAnimationFrame(() => elementManager.processServerLoadedElements(loadedPage), 2);
|
|
3466
3498
|
}
|
|
3467
3499
|
});
|
|
3468
3500
|
const addScrollPreservationCallbacks = (reloadOptions) => {
|
|
@@ -3495,10 +3527,12 @@ function useInfiniteScroll(options) {
|
|
|
3495
3527
|
}
|
|
3496
3528
|
originalFetchPrevious(reloadOptions);
|
|
3497
3529
|
};
|
|
3530
|
+
const removeEventListener = router.on("success", () => requestAnimationFrame(elementManager.refreshTriggers, 2));
|
|
3498
3531
|
return {
|
|
3499
3532
|
dataManager,
|
|
3500
3533
|
elementManager,
|
|
3501
3534
|
flush: () => {
|
|
3535
|
+
removeEventListener();
|
|
3502
3536
|
dataManager.removeEventListener();
|
|
3503
3537
|
elementManager.flushAll();
|
|
3504
3538
|
queryStringManager.cancel();
|