@inertiajs/core 2.2.0 → 2.2.1
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 +92 -3
- package/dist/index.esm.js.map +3 -3
- package/dist/index.js +92 -3
- 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 +1 -0
package/dist/index.js
CHANGED
|
@@ -750,6 +750,11 @@ var History = class {
|
|
|
750
750
|
this.replaceState(this.current);
|
|
751
751
|
}
|
|
752
752
|
}
|
|
753
|
+
clearInitialState(key) {
|
|
754
|
+
if (this.initialState && this.initialState[key] !== void 0) {
|
|
755
|
+
delete this.initialState[key];
|
|
756
|
+
}
|
|
757
|
+
}
|
|
753
758
|
hasAnyState() {
|
|
754
759
|
return !!this.getAllState();
|
|
755
760
|
}
|
|
@@ -879,6 +884,7 @@ var InitialVisit = class {
|
|
|
879
884
|
static clearRememberedStateOnReload() {
|
|
880
885
|
if (navigationType.isReload()) {
|
|
881
886
|
history.deleteState(history.rememberedState);
|
|
887
|
+
history.clearInitialState(history.rememberedState);
|
|
882
888
|
}
|
|
883
889
|
}
|
|
884
890
|
static handleBackForward() {
|
|
@@ -2421,8 +2427,17 @@ var useInfiniteScrollData = (options) => {
|
|
|
2421
2427
|
loading: false,
|
|
2422
2428
|
previousPage,
|
|
2423
2429
|
nextPage,
|
|
2424
|
-
lastLoadedPage
|
|
2430
|
+
lastLoadedPage,
|
|
2431
|
+
requestCount: 0
|
|
2425
2432
|
};
|
|
2433
|
+
const getRememberKey = () => `inertia:infinite-scroll-data:${options.getPropName()}`;
|
|
2434
|
+
const rememberedState = router.restore(getRememberKey());
|
|
2435
|
+
if (rememberedState && typeof rememberedState === "object") {
|
|
2436
|
+
state.previousPage = rememberedState.previousPage;
|
|
2437
|
+
state.nextPage = rememberedState.nextPage;
|
|
2438
|
+
state.lastLoadedPage = rememberedState.lastLoadedPage;
|
|
2439
|
+
state.requestCount = rememberedState.requestCount || 0;
|
|
2440
|
+
}
|
|
2426
2441
|
const getScrollPropKeyForSide = (side) => {
|
|
2427
2442
|
return side === "next" ? "nextPage" : "previousPage";
|
|
2428
2443
|
};
|
|
@@ -2435,8 +2450,19 @@ var useInfiniteScrollData = (options) => {
|
|
|
2435
2450
|
const paginationProp = getScrollPropKeyForSide(side);
|
|
2436
2451
|
state.lastLoadedPage = scrollProp.currentPage;
|
|
2437
2452
|
state[paginationProp] = scrollProp[paginationProp];
|
|
2453
|
+
state.requestCount += 1;
|
|
2454
|
+
router.remember(
|
|
2455
|
+
{
|
|
2456
|
+
previousPage: state.previousPage,
|
|
2457
|
+
nextPage: state.nextPage,
|
|
2458
|
+
lastLoadedPage: state.lastLoadedPage,
|
|
2459
|
+
requestCount: state.requestCount
|
|
2460
|
+
},
|
|
2461
|
+
getRememberKey()
|
|
2462
|
+
);
|
|
2438
2463
|
};
|
|
2439
2464
|
const getPageName = () => getScrollPropFromCurrentPage().pageName;
|
|
2465
|
+
const getRequestCount = () => state.requestCount;
|
|
2440
2466
|
const fetchPage = (side, reloadOptions = {}) => {
|
|
2441
2467
|
const page2 = findPageToLoad(side);
|
|
2442
2468
|
if (state.loading || page2 === null) {
|
|
@@ -2480,6 +2506,7 @@ var useInfiniteScrollData = (options) => {
|
|
|
2480
2506
|
return {
|
|
2481
2507
|
getLastLoadedPage,
|
|
2482
2508
|
getPageName,
|
|
2509
|
+
getRequestCount,
|
|
2483
2510
|
hasPrevious,
|
|
2484
2511
|
hasNext,
|
|
2485
2512
|
fetchNext,
|
|
@@ -2526,11 +2553,13 @@ var useInfiniteScrollElementManager = (options) => {
|
|
|
2526
2553
|
itemsMutationObserver = new MutationObserver((mutations) => {
|
|
2527
2554
|
mutations.forEach((mutation) => {
|
|
2528
2555
|
mutation.addedNodes.forEach((node) => {
|
|
2529
|
-
if (node.nodeType
|
|
2530
|
-
|
|
2556
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2557
|
+
return;
|
|
2531
2558
|
}
|
|
2559
|
+
addedElements.add(node);
|
|
2532
2560
|
});
|
|
2533
2561
|
});
|
|
2562
|
+
rememberElementsDebounced();
|
|
2534
2563
|
});
|
|
2535
2564
|
itemsMutationObserver.observe(options.getItemsElement(), { childList: true });
|
|
2536
2565
|
itemsObserver = intersectionObservers.new(
|
|
@@ -2593,13 +2622,73 @@ var useInfiniteScrollElementManager = (options) => {
|
|
|
2593
2622
|
)
|
|
2594
2623
|
);
|
|
2595
2624
|
};
|
|
2625
|
+
let hasRestoredElements = false;
|
|
2596
2626
|
const processServerLoadedElements = (loadedPage) => {
|
|
2627
|
+
if (!hasRestoredElements) {
|
|
2628
|
+
hasRestoredElements = true;
|
|
2629
|
+
if (restoreElements()) {
|
|
2630
|
+
return;
|
|
2631
|
+
}
|
|
2632
|
+
}
|
|
2597
2633
|
findUntaggedElements(options.getItemsElement()).forEach((element) => {
|
|
2598
2634
|
if (elementIsUntagged(element)) {
|
|
2599
2635
|
element.dataset[INFINITE_SCROLL_PAGE_KEY] = loadedPage?.toString() || "1";
|
|
2600
2636
|
}
|
|
2601
2637
|
itemsObserver.observe(element);
|
|
2602
2638
|
});
|
|
2639
|
+
rememberElements();
|
|
2640
|
+
};
|
|
2641
|
+
const getElementsRememberKey = () => `inertia:infinite-scroll-elements:${options.getPropName()}`;
|
|
2642
|
+
const rememberElements = () => {
|
|
2643
|
+
const pageElementRange = {};
|
|
2644
|
+
const childNodes = options.getItemsElement().childNodes;
|
|
2645
|
+
for (let index = 0; index < childNodes.length; index++) {
|
|
2646
|
+
const node = childNodes[index];
|
|
2647
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2648
|
+
continue;
|
|
2649
|
+
}
|
|
2650
|
+
const page2 = getPageFromElement(node);
|
|
2651
|
+
if (typeof page2 === "undefined") {
|
|
2652
|
+
continue;
|
|
2653
|
+
}
|
|
2654
|
+
if (!(page2 in pageElementRange)) {
|
|
2655
|
+
pageElementRange[page2] = { from: index, to: index };
|
|
2656
|
+
} else {
|
|
2657
|
+
pageElementRange[page2].to = index;
|
|
2658
|
+
}
|
|
2659
|
+
}
|
|
2660
|
+
router.remember(pageElementRange, getElementsRememberKey());
|
|
2661
|
+
};
|
|
2662
|
+
const rememberElementsDebounced = debounce(rememberElements, 250);
|
|
2663
|
+
const restoreElements = () => {
|
|
2664
|
+
const pageElementRange = router.restore(getElementsRememberKey());
|
|
2665
|
+
if (!pageElementRange || typeof pageElementRange !== "object") {
|
|
2666
|
+
return false;
|
|
2667
|
+
}
|
|
2668
|
+
const childNodes = options.getItemsElement().childNodes;
|
|
2669
|
+
for (let index = 0; index < childNodes.length; index++) {
|
|
2670
|
+
const node = childNodes[index];
|
|
2671
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2672
|
+
continue;
|
|
2673
|
+
}
|
|
2674
|
+
const element = node;
|
|
2675
|
+
let elementPage;
|
|
2676
|
+
for (const [page2, range] of Object.entries(pageElementRange)) {
|
|
2677
|
+
if (index >= range.from && index <= range.to) {
|
|
2678
|
+
elementPage = page2;
|
|
2679
|
+
break;
|
|
2680
|
+
}
|
|
2681
|
+
}
|
|
2682
|
+
if (elementPage) {
|
|
2683
|
+
element.dataset[INFINITE_SCROLL_PAGE_KEY] = elementPage;
|
|
2684
|
+
} else if (!elementIsUntagged(element)) {
|
|
2685
|
+
continue;
|
|
2686
|
+
} else {
|
|
2687
|
+
element.dataset[INFINITE_SCROLL_IGNORE_KEY] = "true";
|
|
2688
|
+
}
|
|
2689
|
+
itemsObserver.observe(element);
|
|
2690
|
+
}
|
|
2691
|
+
return true;
|
|
2603
2692
|
};
|
|
2604
2693
|
return {
|
|
2605
2694
|
setupObservers,
|