@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.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,26 @@ 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
|
+
}
|
|
2441
|
+
const removeEventListener = router.on("success", () => {
|
|
2442
|
+
const scrollProp = getScrollPropFromCurrentPage();
|
|
2443
|
+
if (scrollProp.reset) {
|
|
2444
|
+
state.previousPage = scrollProp.previousPage;
|
|
2445
|
+
state.nextPage = scrollProp.nextPage;
|
|
2446
|
+
state.lastLoadedPage = scrollProp.currentPage;
|
|
2447
|
+
state.requestCount = 0;
|
|
2448
|
+
}
|
|
2449
|
+
});
|
|
2426
2450
|
const getScrollPropKeyForSide = (side) => {
|
|
2427
2451
|
return side === "next" ? "nextPage" : "previousPage";
|
|
2428
2452
|
};
|
|
@@ -2435,8 +2459,19 @@ var useInfiniteScrollData = (options) => {
|
|
|
2435
2459
|
const paginationProp = getScrollPropKeyForSide(side);
|
|
2436
2460
|
state.lastLoadedPage = scrollProp.currentPage;
|
|
2437
2461
|
state[paginationProp] = scrollProp[paginationProp];
|
|
2462
|
+
state.requestCount += 1;
|
|
2463
|
+
router.remember(
|
|
2464
|
+
{
|
|
2465
|
+
previousPage: state.previousPage,
|
|
2466
|
+
nextPage: state.nextPage,
|
|
2467
|
+
lastLoadedPage: state.lastLoadedPage,
|
|
2468
|
+
requestCount: state.requestCount
|
|
2469
|
+
},
|
|
2470
|
+
getRememberKey()
|
|
2471
|
+
);
|
|
2438
2472
|
};
|
|
2439
2473
|
const getPageName = () => getScrollPropFromCurrentPage().pageName;
|
|
2474
|
+
const getRequestCount = () => state.requestCount;
|
|
2440
2475
|
const fetchPage = (side, reloadOptions = {}) => {
|
|
2441
2476
|
const page2 = findPageToLoad(side);
|
|
2442
2477
|
if (state.loading || page2 === null) {
|
|
@@ -2480,10 +2515,12 @@ var useInfiniteScrollData = (options) => {
|
|
|
2480
2515
|
return {
|
|
2481
2516
|
getLastLoadedPage,
|
|
2482
2517
|
getPageName,
|
|
2518
|
+
getRequestCount,
|
|
2483
2519
|
hasPrevious,
|
|
2484
2520
|
hasNext,
|
|
2485
2521
|
fetchNext,
|
|
2486
|
-
fetchPrevious
|
|
2522
|
+
fetchPrevious,
|
|
2523
|
+
removeEventListener
|
|
2487
2524
|
};
|
|
2488
2525
|
};
|
|
2489
2526
|
|
|
@@ -2526,11 +2563,13 @@ var useInfiniteScrollElementManager = (options) => {
|
|
|
2526
2563
|
itemsMutationObserver = new MutationObserver((mutations) => {
|
|
2527
2564
|
mutations.forEach((mutation) => {
|
|
2528
2565
|
mutation.addedNodes.forEach((node) => {
|
|
2529
|
-
if (node.nodeType
|
|
2530
|
-
|
|
2566
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2567
|
+
return;
|
|
2531
2568
|
}
|
|
2569
|
+
addedElements.add(node);
|
|
2532
2570
|
});
|
|
2533
2571
|
});
|
|
2572
|
+
rememberElementsDebounced();
|
|
2534
2573
|
});
|
|
2535
2574
|
itemsMutationObserver.observe(options.getItemsElement(), { childList: true });
|
|
2536
2575
|
itemsObserver = intersectionObservers.new(
|
|
@@ -2593,13 +2632,73 @@ var useInfiniteScrollElementManager = (options) => {
|
|
|
2593
2632
|
)
|
|
2594
2633
|
);
|
|
2595
2634
|
};
|
|
2635
|
+
let hasRestoredElements = false;
|
|
2596
2636
|
const processServerLoadedElements = (loadedPage) => {
|
|
2637
|
+
if (!hasRestoredElements) {
|
|
2638
|
+
hasRestoredElements = true;
|
|
2639
|
+
if (restoreElements()) {
|
|
2640
|
+
return;
|
|
2641
|
+
}
|
|
2642
|
+
}
|
|
2597
2643
|
findUntaggedElements(options.getItemsElement()).forEach((element) => {
|
|
2598
2644
|
if (elementIsUntagged(element)) {
|
|
2599
2645
|
element.dataset[INFINITE_SCROLL_PAGE_KEY] = loadedPage?.toString() || "1";
|
|
2600
2646
|
}
|
|
2601
2647
|
itemsObserver.observe(element);
|
|
2602
2648
|
});
|
|
2649
|
+
rememberElements();
|
|
2650
|
+
};
|
|
2651
|
+
const getElementsRememberKey = () => `inertia:infinite-scroll-elements:${options.getPropName()}`;
|
|
2652
|
+
const rememberElements = () => {
|
|
2653
|
+
const pageElementRange = {};
|
|
2654
|
+
const childNodes = options.getItemsElement().childNodes;
|
|
2655
|
+
for (let index = 0; index < childNodes.length; index++) {
|
|
2656
|
+
const node = childNodes[index];
|
|
2657
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2658
|
+
continue;
|
|
2659
|
+
}
|
|
2660
|
+
const page2 = getPageFromElement(node);
|
|
2661
|
+
if (typeof page2 === "undefined") {
|
|
2662
|
+
continue;
|
|
2663
|
+
}
|
|
2664
|
+
if (!(page2 in pageElementRange)) {
|
|
2665
|
+
pageElementRange[page2] = { from: index, to: index };
|
|
2666
|
+
} else {
|
|
2667
|
+
pageElementRange[page2].to = index;
|
|
2668
|
+
}
|
|
2669
|
+
}
|
|
2670
|
+
router.remember(pageElementRange, getElementsRememberKey());
|
|
2671
|
+
};
|
|
2672
|
+
const rememberElementsDebounced = debounce(rememberElements, 250);
|
|
2673
|
+
const restoreElements = () => {
|
|
2674
|
+
const pageElementRange = router.restore(getElementsRememberKey());
|
|
2675
|
+
if (!pageElementRange || typeof pageElementRange !== "object") {
|
|
2676
|
+
return false;
|
|
2677
|
+
}
|
|
2678
|
+
const childNodes = options.getItemsElement().childNodes;
|
|
2679
|
+
for (let index = 0; index < childNodes.length; index++) {
|
|
2680
|
+
const node = childNodes[index];
|
|
2681
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2682
|
+
continue;
|
|
2683
|
+
}
|
|
2684
|
+
const element = node;
|
|
2685
|
+
let elementPage;
|
|
2686
|
+
for (const [page2, range] of Object.entries(pageElementRange)) {
|
|
2687
|
+
if (index >= range.from && index <= range.to) {
|
|
2688
|
+
elementPage = page2;
|
|
2689
|
+
break;
|
|
2690
|
+
}
|
|
2691
|
+
}
|
|
2692
|
+
if (elementPage) {
|
|
2693
|
+
element.dataset[INFINITE_SCROLL_PAGE_KEY] = elementPage;
|
|
2694
|
+
} else if (!elementIsUntagged(element)) {
|
|
2695
|
+
continue;
|
|
2696
|
+
} else {
|
|
2697
|
+
element.dataset[INFINITE_SCROLL_IGNORE_KEY] = "true";
|
|
2698
|
+
}
|
|
2699
|
+
itemsObserver.observe(element);
|
|
2700
|
+
}
|
|
2701
|
+
return true;
|
|
2603
2702
|
};
|
|
2604
2703
|
return {
|
|
2605
2704
|
setupObservers,
|