@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.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,17 @@ 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
|
+
}
|
|
2374
2389
|
const getScrollPropKeyForSide = (side) => {
|
|
2375
2390
|
return side === "next" ? "nextPage" : "previousPage";
|
|
2376
2391
|
};
|
|
@@ -2383,8 +2398,19 @@ var useInfiniteScrollData = (options) => {
|
|
|
2383
2398
|
const paginationProp = getScrollPropKeyForSide(side);
|
|
2384
2399
|
state.lastLoadedPage = scrollProp.currentPage;
|
|
2385
2400
|
state[paginationProp] = scrollProp[paginationProp];
|
|
2401
|
+
state.requestCount += 1;
|
|
2402
|
+
router.remember(
|
|
2403
|
+
{
|
|
2404
|
+
previousPage: state.previousPage,
|
|
2405
|
+
nextPage: state.nextPage,
|
|
2406
|
+
lastLoadedPage: state.lastLoadedPage,
|
|
2407
|
+
requestCount: state.requestCount
|
|
2408
|
+
},
|
|
2409
|
+
getRememberKey()
|
|
2410
|
+
);
|
|
2386
2411
|
};
|
|
2387
2412
|
const getPageName = () => getScrollPropFromCurrentPage().pageName;
|
|
2413
|
+
const getRequestCount = () => state.requestCount;
|
|
2388
2414
|
const fetchPage = (side, reloadOptions = {}) => {
|
|
2389
2415
|
const page2 = findPageToLoad(side);
|
|
2390
2416
|
if (state.loading || page2 === null) {
|
|
@@ -2428,6 +2454,7 @@ var useInfiniteScrollData = (options) => {
|
|
|
2428
2454
|
return {
|
|
2429
2455
|
getLastLoadedPage,
|
|
2430
2456
|
getPageName,
|
|
2457
|
+
getRequestCount,
|
|
2431
2458
|
hasPrevious,
|
|
2432
2459
|
hasNext,
|
|
2433
2460
|
fetchNext,
|
|
@@ -2474,11 +2501,13 @@ var useInfiniteScrollElementManager = (options) => {
|
|
|
2474
2501
|
itemsMutationObserver = new MutationObserver((mutations) => {
|
|
2475
2502
|
mutations.forEach((mutation) => {
|
|
2476
2503
|
mutation.addedNodes.forEach((node) => {
|
|
2477
|
-
if (node.nodeType
|
|
2478
|
-
|
|
2504
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2505
|
+
return;
|
|
2479
2506
|
}
|
|
2507
|
+
addedElements.add(node);
|
|
2480
2508
|
});
|
|
2481
2509
|
});
|
|
2510
|
+
rememberElementsDebounced();
|
|
2482
2511
|
});
|
|
2483
2512
|
itemsMutationObserver.observe(options.getItemsElement(), { childList: true });
|
|
2484
2513
|
itemsObserver = intersectionObservers.new(
|
|
@@ -2541,13 +2570,73 @@ var useInfiniteScrollElementManager = (options) => {
|
|
|
2541
2570
|
)
|
|
2542
2571
|
);
|
|
2543
2572
|
};
|
|
2573
|
+
let hasRestoredElements = false;
|
|
2544
2574
|
const processServerLoadedElements = (loadedPage) => {
|
|
2575
|
+
if (!hasRestoredElements) {
|
|
2576
|
+
hasRestoredElements = true;
|
|
2577
|
+
if (restoreElements()) {
|
|
2578
|
+
return;
|
|
2579
|
+
}
|
|
2580
|
+
}
|
|
2545
2581
|
findUntaggedElements(options.getItemsElement()).forEach((element) => {
|
|
2546
2582
|
if (elementIsUntagged(element)) {
|
|
2547
2583
|
element.dataset[INFINITE_SCROLL_PAGE_KEY] = loadedPage?.toString() || "1";
|
|
2548
2584
|
}
|
|
2549
2585
|
itemsObserver.observe(element);
|
|
2550
2586
|
});
|
|
2587
|
+
rememberElements();
|
|
2588
|
+
};
|
|
2589
|
+
const getElementsRememberKey = () => `inertia:infinite-scroll-elements:${options.getPropName()}`;
|
|
2590
|
+
const rememberElements = () => {
|
|
2591
|
+
const pageElementRange = {};
|
|
2592
|
+
const childNodes = options.getItemsElement().childNodes;
|
|
2593
|
+
for (let index = 0; index < childNodes.length; index++) {
|
|
2594
|
+
const node = childNodes[index];
|
|
2595
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2596
|
+
continue;
|
|
2597
|
+
}
|
|
2598
|
+
const page2 = getPageFromElement(node);
|
|
2599
|
+
if (typeof page2 === "undefined") {
|
|
2600
|
+
continue;
|
|
2601
|
+
}
|
|
2602
|
+
if (!(page2 in pageElementRange)) {
|
|
2603
|
+
pageElementRange[page2] = { from: index, to: index };
|
|
2604
|
+
} else {
|
|
2605
|
+
pageElementRange[page2].to = index;
|
|
2606
|
+
}
|
|
2607
|
+
}
|
|
2608
|
+
router.remember(pageElementRange, getElementsRememberKey());
|
|
2609
|
+
};
|
|
2610
|
+
const rememberElementsDebounced = debounce(rememberElements, 250);
|
|
2611
|
+
const restoreElements = () => {
|
|
2612
|
+
const pageElementRange = router.restore(getElementsRememberKey());
|
|
2613
|
+
if (!pageElementRange || typeof pageElementRange !== "object") {
|
|
2614
|
+
return false;
|
|
2615
|
+
}
|
|
2616
|
+
const childNodes = options.getItemsElement().childNodes;
|
|
2617
|
+
for (let index = 0; index < childNodes.length; index++) {
|
|
2618
|
+
const node = childNodes[index];
|
|
2619
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2620
|
+
continue;
|
|
2621
|
+
}
|
|
2622
|
+
const element = node;
|
|
2623
|
+
let elementPage;
|
|
2624
|
+
for (const [page2, range] of Object.entries(pageElementRange)) {
|
|
2625
|
+
if (index >= range.from && index <= range.to) {
|
|
2626
|
+
elementPage = page2;
|
|
2627
|
+
break;
|
|
2628
|
+
}
|
|
2629
|
+
}
|
|
2630
|
+
if (elementPage) {
|
|
2631
|
+
element.dataset[INFINITE_SCROLL_PAGE_KEY] = elementPage;
|
|
2632
|
+
} else if (!elementIsUntagged(element)) {
|
|
2633
|
+
continue;
|
|
2634
|
+
} else {
|
|
2635
|
+
element.dataset[INFINITE_SCROLL_IGNORE_KEY] = "true";
|
|
2636
|
+
}
|
|
2637
|
+
itemsObserver.observe(element);
|
|
2638
|
+
}
|
|
2639
|
+
return true;
|
|
2551
2640
|
};
|
|
2552
2641
|
return {
|
|
2553
2642
|
setupObservers,
|