@inertiajs/core 2.2.0 → 2.2.2
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 +103 -4
- package/dist/index.esm.js.map +3 -3
- package/dist/index.js +103 -4
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
- package/types/history.d.ts +1 -0
- package/types/infiniteScroll/elements.d.ts +1 -0
- package/types/types.d.ts +3 -0
package/dist/index.esm.js
CHANGED
|
@@ -698,6 +698,11 @@ var History = class {
|
|
|
698
698
|
this.replaceState(this.current);
|
|
699
699
|
}
|
|
700
700
|
}
|
|
701
|
+
clearInitialState(key) {
|
|
702
|
+
if (this.initialState && this.initialState[key] !== void 0) {
|
|
703
|
+
delete this.initialState[key];
|
|
704
|
+
}
|
|
705
|
+
}
|
|
701
706
|
hasAnyState() {
|
|
702
707
|
return !!this.getAllState();
|
|
703
708
|
}
|
|
@@ -827,6 +832,7 @@ var InitialVisit = class {
|
|
|
827
832
|
static clearRememberedStateOnReload() {
|
|
828
833
|
if (navigationType.isReload()) {
|
|
829
834
|
history.deleteState(history.rememberedState);
|
|
835
|
+
history.clearInitialState(history.rememberedState);
|
|
830
836
|
}
|
|
831
837
|
}
|
|
832
838
|
static handleBackForward() {
|
|
@@ -2369,8 +2375,26 @@ var useInfiniteScrollData = (options) => {
|
|
|
2369
2375
|
loading: false,
|
|
2370
2376
|
previousPage,
|
|
2371
2377
|
nextPage,
|
|
2372
|
-
lastLoadedPage
|
|
2378
|
+
lastLoadedPage,
|
|
2379
|
+
requestCount: 0
|
|
2373
2380
|
};
|
|
2381
|
+
const getRememberKey = () => `inertia:infinite-scroll-data:${options.getPropName()}`;
|
|
2382
|
+
const rememberedState = router.restore(getRememberKey());
|
|
2383
|
+
if (rememberedState && typeof rememberedState === "object") {
|
|
2384
|
+
state.previousPage = rememberedState.previousPage;
|
|
2385
|
+
state.nextPage = rememberedState.nextPage;
|
|
2386
|
+
state.lastLoadedPage = rememberedState.lastLoadedPage;
|
|
2387
|
+
state.requestCount = rememberedState.requestCount || 0;
|
|
2388
|
+
}
|
|
2389
|
+
const removeEventListener = router.on("success", () => {
|
|
2390
|
+
const scrollProp = getScrollPropFromCurrentPage();
|
|
2391
|
+
if (scrollProp.reset) {
|
|
2392
|
+
state.previousPage = scrollProp.previousPage;
|
|
2393
|
+
state.nextPage = scrollProp.nextPage;
|
|
2394
|
+
state.lastLoadedPage = scrollProp.currentPage;
|
|
2395
|
+
state.requestCount = 0;
|
|
2396
|
+
}
|
|
2397
|
+
});
|
|
2374
2398
|
const getScrollPropKeyForSide = (side) => {
|
|
2375
2399
|
return side === "next" ? "nextPage" : "previousPage";
|
|
2376
2400
|
};
|
|
@@ -2383,8 +2407,19 @@ var useInfiniteScrollData = (options) => {
|
|
|
2383
2407
|
const paginationProp = getScrollPropKeyForSide(side);
|
|
2384
2408
|
state.lastLoadedPage = scrollProp.currentPage;
|
|
2385
2409
|
state[paginationProp] = scrollProp[paginationProp];
|
|
2410
|
+
state.requestCount += 1;
|
|
2411
|
+
router.remember(
|
|
2412
|
+
{
|
|
2413
|
+
previousPage: state.previousPage,
|
|
2414
|
+
nextPage: state.nextPage,
|
|
2415
|
+
lastLoadedPage: state.lastLoadedPage,
|
|
2416
|
+
requestCount: state.requestCount
|
|
2417
|
+
},
|
|
2418
|
+
getRememberKey()
|
|
2419
|
+
);
|
|
2386
2420
|
};
|
|
2387
2421
|
const getPageName = () => getScrollPropFromCurrentPage().pageName;
|
|
2422
|
+
const getRequestCount = () => state.requestCount;
|
|
2388
2423
|
const fetchPage = (side, reloadOptions = {}) => {
|
|
2389
2424
|
const page2 = findPageToLoad(side);
|
|
2390
2425
|
if (state.loading || page2 === null) {
|
|
@@ -2428,10 +2463,12 @@ var useInfiniteScrollData = (options) => {
|
|
|
2428
2463
|
return {
|
|
2429
2464
|
getLastLoadedPage,
|
|
2430
2465
|
getPageName,
|
|
2466
|
+
getRequestCount,
|
|
2431
2467
|
hasPrevious,
|
|
2432
2468
|
hasNext,
|
|
2433
2469
|
fetchNext,
|
|
2434
|
-
fetchPrevious
|
|
2470
|
+
fetchPrevious,
|
|
2471
|
+
removeEventListener
|
|
2435
2472
|
};
|
|
2436
2473
|
};
|
|
2437
2474
|
|
|
@@ -2474,11 +2511,13 @@ var useInfiniteScrollElementManager = (options) => {
|
|
|
2474
2511
|
itemsMutationObserver = new MutationObserver((mutations) => {
|
|
2475
2512
|
mutations.forEach((mutation) => {
|
|
2476
2513
|
mutation.addedNodes.forEach((node) => {
|
|
2477
|
-
if (node.nodeType
|
|
2478
|
-
|
|
2514
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2515
|
+
return;
|
|
2479
2516
|
}
|
|
2517
|
+
addedElements.add(node);
|
|
2480
2518
|
});
|
|
2481
2519
|
});
|
|
2520
|
+
rememberElementsDebounced();
|
|
2482
2521
|
});
|
|
2483
2522
|
itemsMutationObserver.observe(options.getItemsElement(), { childList: true });
|
|
2484
2523
|
itemsObserver = intersectionObservers.new(
|
|
@@ -2541,13 +2580,73 @@ var useInfiniteScrollElementManager = (options) => {
|
|
|
2541
2580
|
)
|
|
2542
2581
|
);
|
|
2543
2582
|
};
|
|
2583
|
+
let hasRestoredElements = false;
|
|
2544
2584
|
const processServerLoadedElements = (loadedPage) => {
|
|
2585
|
+
if (!hasRestoredElements) {
|
|
2586
|
+
hasRestoredElements = true;
|
|
2587
|
+
if (restoreElements()) {
|
|
2588
|
+
return;
|
|
2589
|
+
}
|
|
2590
|
+
}
|
|
2545
2591
|
findUntaggedElements(options.getItemsElement()).forEach((element) => {
|
|
2546
2592
|
if (elementIsUntagged(element)) {
|
|
2547
2593
|
element.dataset[INFINITE_SCROLL_PAGE_KEY] = loadedPage?.toString() || "1";
|
|
2548
2594
|
}
|
|
2549
2595
|
itemsObserver.observe(element);
|
|
2550
2596
|
});
|
|
2597
|
+
rememberElements();
|
|
2598
|
+
};
|
|
2599
|
+
const getElementsRememberKey = () => `inertia:infinite-scroll-elements:${options.getPropName()}`;
|
|
2600
|
+
const rememberElements = () => {
|
|
2601
|
+
const pageElementRange = {};
|
|
2602
|
+
const childNodes = options.getItemsElement().childNodes;
|
|
2603
|
+
for (let index = 0; index < childNodes.length; index++) {
|
|
2604
|
+
const node = childNodes[index];
|
|
2605
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2606
|
+
continue;
|
|
2607
|
+
}
|
|
2608
|
+
const page2 = getPageFromElement(node);
|
|
2609
|
+
if (typeof page2 === "undefined") {
|
|
2610
|
+
continue;
|
|
2611
|
+
}
|
|
2612
|
+
if (!(page2 in pageElementRange)) {
|
|
2613
|
+
pageElementRange[page2] = { from: index, to: index };
|
|
2614
|
+
} else {
|
|
2615
|
+
pageElementRange[page2].to = index;
|
|
2616
|
+
}
|
|
2617
|
+
}
|
|
2618
|
+
router.remember(pageElementRange, getElementsRememberKey());
|
|
2619
|
+
};
|
|
2620
|
+
const rememberElementsDebounced = debounce(rememberElements, 250);
|
|
2621
|
+
const restoreElements = () => {
|
|
2622
|
+
const pageElementRange = router.restore(getElementsRememberKey());
|
|
2623
|
+
if (!pageElementRange || typeof pageElementRange !== "object") {
|
|
2624
|
+
return false;
|
|
2625
|
+
}
|
|
2626
|
+
const childNodes = options.getItemsElement().childNodes;
|
|
2627
|
+
for (let index = 0; index < childNodes.length; index++) {
|
|
2628
|
+
const node = childNodes[index];
|
|
2629
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2630
|
+
continue;
|
|
2631
|
+
}
|
|
2632
|
+
const element = node;
|
|
2633
|
+
let elementPage;
|
|
2634
|
+
for (const [page2, range] of Object.entries(pageElementRange)) {
|
|
2635
|
+
if (index >= range.from && index <= range.to) {
|
|
2636
|
+
elementPage = page2;
|
|
2637
|
+
break;
|
|
2638
|
+
}
|
|
2639
|
+
}
|
|
2640
|
+
if (elementPage) {
|
|
2641
|
+
element.dataset[INFINITE_SCROLL_PAGE_KEY] = elementPage;
|
|
2642
|
+
} else if (!elementIsUntagged(element)) {
|
|
2643
|
+
continue;
|
|
2644
|
+
} else {
|
|
2645
|
+
element.dataset[INFINITE_SCROLL_IGNORE_KEY] = "true";
|
|
2646
|
+
}
|
|
2647
|
+
itemsObserver.observe(element);
|
|
2648
|
+
}
|
|
2649
|
+
return true;
|
|
2551
2650
|
};
|
|
2552
2651
|
return {
|
|
2553
2652
|
setupObservers,
|