@inertiajs/core 2.2.14 → 2.2.16
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 +87 -28
- package/dist/index.esm.js.map +3 -3
- package/dist/index.js +87 -28
- package/dist/index.js.map +3 -3
- package/package.json +4 -4
- package/types/config.d.ts +7 -2
- package/types/domUtils.d.ts +2 -1
- package/types/files.d.ts +1 -0
- package/types/formData.d.ts +2 -2
- package/types/router.d.ts +1 -1
- package/types/types.d.ts +27 -9
- package/types/url.d.ts +2 -2
package/dist/index.js
CHANGED
|
@@ -95,7 +95,8 @@ var config = new Config({
|
|
|
95
95
|
useDialogForErrorModal: false
|
|
96
96
|
},
|
|
97
97
|
prefetch: {
|
|
98
|
-
cacheFor: 3e4
|
|
98
|
+
cacheFor: 3e4,
|
|
99
|
+
hoverDelay: 75
|
|
99
100
|
}
|
|
100
101
|
});
|
|
101
102
|
|
|
@@ -403,27 +404,33 @@ var Scroll = class {
|
|
|
403
404
|
var qs = __toESM(require("qs"), 1);
|
|
404
405
|
|
|
405
406
|
// src/files.ts
|
|
407
|
+
var isFile = (value) => typeof File !== "undefined" && value instanceof File || value instanceof Blob || typeof FileList !== "undefined" && value instanceof FileList && value.length > 0;
|
|
406
408
|
function hasFiles(data) {
|
|
407
|
-
return data
|
|
409
|
+
return isFile(data) || data instanceof FormData && Array.from(data.values()).some((value) => hasFiles(value)) || typeof data === "object" && data !== null && Object.values(data).some((value) => hasFiles(value));
|
|
408
410
|
}
|
|
409
411
|
|
|
410
412
|
// src/formData.ts
|
|
411
413
|
var isFormData = (value) => value instanceof FormData;
|
|
412
|
-
function objectToFormData(source, form = new FormData(), parentKey = null) {
|
|
414
|
+
function objectToFormData(source, form = new FormData(), parentKey = null, queryStringArrayFormat = "brackets") {
|
|
413
415
|
source = source || {};
|
|
414
416
|
for (const key in source) {
|
|
415
417
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
416
|
-
append(form, composeKey(parentKey, key), source[key]);
|
|
418
|
+
append(form, composeKey(parentKey, key, "indices"), source[key], queryStringArrayFormat);
|
|
417
419
|
}
|
|
418
420
|
}
|
|
419
421
|
return form;
|
|
420
422
|
}
|
|
421
|
-
function composeKey(parent, key) {
|
|
422
|
-
|
|
423
|
+
function composeKey(parent, key, format) {
|
|
424
|
+
if (!parent) {
|
|
425
|
+
return key;
|
|
426
|
+
}
|
|
427
|
+
return format === "brackets" ? `${parent}[]` : `${parent}[${key}]`;
|
|
423
428
|
}
|
|
424
|
-
function append(form, key, value) {
|
|
429
|
+
function append(form, key, value, format) {
|
|
425
430
|
if (Array.isArray(value)) {
|
|
426
|
-
return Array.from(value.keys()).forEach(
|
|
431
|
+
return Array.from(value.keys()).forEach(
|
|
432
|
+
(index) => append(form, composeKey(key, index.toString(), format), value[index], format)
|
|
433
|
+
);
|
|
427
434
|
} else if (value instanceof Date) {
|
|
428
435
|
return form.append(key, value.toISOString());
|
|
429
436
|
} else if (value instanceof File) {
|
|
@@ -439,7 +446,7 @@ function append(form, key, value) {
|
|
|
439
446
|
} else if (value === null || value === void 0) {
|
|
440
447
|
return form.append(key, "");
|
|
441
448
|
}
|
|
442
|
-
objectToFormData(value, form, key);
|
|
449
|
+
objectToFormData(value, form, key, format);
|
|
443
450
|
}
|
|
444
451
|
|
|
445
452
|
// src/url.ts
|
|
@@ -449,7 +456,7 @@ function hrefToUrl(href) {
|
|
|
449
456
|
var transformUrlAndData = (href, data, method, forceFormData, queryStringArrayFormat) => {
|
|
450
457
|
let url = typeof href === "string" ? hrefToUrl(href) : href;
|
|
451
458
|
if ((hasFiles(data) || forceFormData) && !isFormData(data)) {
|
|
452
|
-
data = objectToFormData(data);
|
|
459
|
+
data = objectToFormData(data, new FormData(), null, queryStringArrayFormat);
|
|
453
460
|
}
|
|
454
461
|
if (isFormData(data)) {
|
|
455
462
|
return [url, data];
|
|
@@ -708,7 +715,7 @@ var History = class {
|
|
|
708
715
|
}
|
|
709
716
|
restore(key) {
|
|
710
717
|
if (!isServer) {
|
|
711
|
-
return this.current[this.rememberedState] ? this.current[this.rememberedState]?.[key] : this.initialState?.[this.rememberedState]?.[key];
|
|
718
|
+
return this.current[this.rememberedState]?.[key] !== void 0 ? this.current[this.rememberedState]?.[key] : this.initialState?.[this.rememberedState]?.[key];
|
|
712
719
|
}
|
|
713
720
|
}
|
|
714
721
|
pushState(page2, cb = null) {
|
|
@@ -1356,6 +1363,8 @@ var PrefetchedRequests = class {
|
|
|
1356
1363
|
"showProgress",
|
|
1357
1364
|
"replace",
|
|
1358
1365
|
"prefetch",
|
|
1366
|
+
"preserveScroll",
|
|
1367
|
+
"preserveState",
|
|
1359
1368
|
"onBefore",
|
|
1360
1369
|
"onBeforeUpdate",
|
|
1361
1370
|
"onStart",
|
|
@@ -2402,6 +2411,9 @@ var Router = class {
|
|
|
2402
2411
|
|
|
2403
2412
|
// src/domUtils.ts
|
|
2404
2413
|
var elementInViewport = (el) => {
|
|
2414
|
+
if (el.offsetParent === null) {
|
|
2415
|
+
return false;
|
|
2416
|
+
}
|
|
2405
2417
|
const rect = el.getBoundingClientRect();
|
|
2406
2418
|
const verticallyVisible = rect.top < window.innerHeight && rect.bottom >= 0;
|
|
2407
2419
|
const horizontallyVisible = rect.left < window.innerWidth && rect.right >= 0;
|
|
@@ -2453,7 +2465,10 @@ var getScrollableParent = (element) => {
|
|
|
2453
2465
|
}
|
|
2454
2466
|
return null;
|
|
2455
2467
|
};
|
|
2456
|
-
var getElementsInViewportFromCollection = (
|
|
2468
|
+
var getElementsInViewportFromCollection = (elements, referenceElement) => {
|
|
2469
|
+
if (!referenceElement) {
|
|
2470
|
+
return elements.filter((element) => elementInViewport(element));
|
|
2471
|
+
}
|
|
2457
2472
|
const referenceIndex = elements.indexOf(referenceElement);
|
|
2458
2473
|
const upwardElements = [];
|
|
2459
2474
|
const downwardElements = [];
|
|
@@ -2475,6 +2490,15 @@ var getElementsInViewportFromCollection = (referenceElement, elements) => {
|
|
|
2475
2490
|
}
|
|
2476
2491
|
return [...upwardElements.reverse(), ...downwardElements];
|
|
2477
2492
|
};
|
|
2493
|
+
var requestAnimationFrame = (cb, times = 1) => {
|
|
2494
|
+
window.requestAnimationFrame(() => {
|
|
2495
|
+
if (times > 1) {
|
|
2496
|
+
requestAnimationFrame(cb, times - 1);
|
|
2497
|
+
} else {
|
|
2498
|
+
cb();
|
|
2499
|
+
}
|
|
2500
|
+
});
|
|
2501
|
+
};
|
|
2478
2502
|
|
|
2479
2503
|
// src/formObject.ts
|
|
2480
2504
|
var import_lodash_es6 = require("lodash-es");
|
|
@@ -2503,6 +2527,41 @@ function parseKey(key) {
|
|
|
2503
2527
|
}
|
|
2504
2528
|
return path;
|
|
2505
2529
|
}
|
|
2530
|
+
function setNestedObject(obj, path, value) {
|
|
2531
|
+
let current = obj;
|
|
2532
|
+
for (let i = 0; i < path.length - 1; i++) {
|
|
2533
|
+
if (!(path[i] in current)) {
|
|
2534
|
+
current[path[i]] = {};
|
|
2535
|
+
}
|
|
2536
|
+
current = current[path[i]];
|
|
2537
|
+
}
|
|
2538
|
+
current[path[path.length - 1]] = value;
|
|
2539
|
+
}
|
|
2540
|
+
function objectHasSequentialNumericKeys(value) {
|
|
2541
|
+
const keys = Object.keys(value);
|
|
2542
|
+
const numericKeys = keys.filter((k) => /^\d+$/.test(k)).map(Number).sort((a, b) => a - b);
|
|
2543
|
+
return keys.length === numericKeys.length && numericKeys.length > 0 && numericKeys[0] === 0 && numericKeys.every((n, i) => n === i);
|
|
2544
|
+
}
|
|
2545
|
+
function convertSequentialObjectsToArrays(value) {
|
|
2546
|
+
if (Array.isArray(value)) {
|
|
2547
|
+
return value.map(convertSequentialObjectsToArrays);
|
|
2548
|
+
}
|
|
2549
|
+
if (typeof value !== "object" || value === null || isFile(value)) {
|
|
2550
|
+
return value;
|
|
2551
|
+
}
|
|
2552
|
+
if (objectHasSequentialNumericKeys(value)) {
|
|
2553
|
+
const result2 = [];
|
|
2554
|
+
for (let i = 0; i < Object.keys(value).length; i++) {
|
|
2555
|
+
result2[i] = convertSequentialObjectsToArrays(value[i]);
|
|
2556
|
+
}
|
|
2557
|
+
return result2;
|
|
2558
|
+
}
|
|
2559
|
+
const result = {};
|
|
2560
|
+
for (const key in value) {
|
|
2561
|
+
result[key] = convertSequentialObjectsToArrays(value[key]);
|
|
2562
|
+
}
|
|
2563
|
+
return result;
|
|
2564
|
+
}
|
|
2506
2565
|
function formDataToObject(source) {
|
|
2507
2566
|
const form = {};
|
|
2508
2567
|
for (const [key, value] of source.entries()) {
|
|
@@ -2515,14 +2574,17 @@ function formDataToObject(source) {
|
|
|
2515
2574
|
const existing = (0, import_lodash_es6.get)(form, arrayPath);
|
|
2516
2575
|
if (Array.isArray(existing)) {
|
|
2517
2576
|
existing.push(value);
|
|
2577
|
+
} else if (existing && typeof existing === "object" && !isFile(existing)) {
|
|
2578
|
+
const numericKeys = Object.keys(existing).filter((k) => /^\d+$/.test(k)).map(Number).sort((a, b) => a - b);
|
|
2579
|
+
(0, import_lodash_es6.set)(form, arrayPath, numericKeys.length > 0 ? [...numericKeys.map((k) => existing[k]), value] : [value]);
|
|
2518
2580
|
} else {
|
|
2519
2581
|
(0, import_lodash_es6.set)(form, arrayPath, [value]);
|
|
2520
2582
|
}
|
|
2521
2583
|
continue;
|
|
2522
2584
|
}
|
|
2523
|
-
(
|
|
2585
|
+
setNestedObject(form, path.map(String), value);
|
|
2524
2586
|
}
|
|
2525
|
-
return form;
|
|
2587
|
+
return convertSequentialObjectsToArrays(form);
|
|
2526
2588
|
}
|
|
2527
2589
|
|
|
2528
2590
|
// src/head.ts
|
|
@@ -2997,7 +3059,7 @@ var useInfiniteScrollQueryString = (options) => {
|
|
|
2997
3059
|
}
|
|
2998
3060
|
const pageMap = /* @__PURE__ */ new Map();
|
|
2999
3061
|
const elements = [...itemsElement.children];
|
|
3000
|
-
getElementsInViewportFromCollection(
|
|
3062
|
+
getElementsInViewportFromCollection(elements, itemElement).forEach((element) => {
|
|
3001
3063
|
const page2 = getPageFromElement(element) ?? "1";
|
|
3002
3064
|
if (pageMap.has(page2)) {
|
|
3003
3065
|
pageMap.set(page2, pageMap.get(page2) + 1);
|
|
@@ -3027,10 +3089,7 @@ var useInfiniteScrollPreservation = (options) => {
|
|
|
3027
3089
|
const scrollableContainer = options.getScrollableParent();
|
|
3028
3090
|
const itemsElement = options.getItemsElement();
|
|
3029
3091
|
currentScrollTop = scrollableContainer?.scrollTop || window.scrollY;
|
|
3030
|
-
const visibleElements = getElementsInViewportFromCollection(
|
|
3031
|
-
itemsElement.firstElementChild,
|
|
3032
|
-
[...itemsElement.children]
|
|
3033
|
-
);
|
|
3092
|
+
const visibleElements = getElementsInViewportFromCollection([...itemsElement.children]);
|
|
3034
3093
|
if (visibleElements.length > 0) {
|
|
3035
3094
|
referenceElement = visibleElements[0];
|
|
3036
3095
|
const containerRect = scrollableContainer?.getBoundingClientRect() || { top: 0 };
|
|
@@ -3067,7 +3126,7 @@ var useInfiniteScrollPreservation = (options) => {
|
|
|
3067
3126
|
}
|
|
3068
3127
|
restored = true;
|
|
3069
3128
|
};
|
|
3070
|
-
restore
|
|
3129
|
+
window.requestAnimationFrame(restore);
|
|
3071
3130
|
};
|
|
3072
3131
|
return {
|
|
3073
3132
|
captureScrollPosition,
|
|
@@ -3097,18 +3156,18 @@ function useInfiniteScroll(options) {
|
|
|
3097
3156
|
onBeforeUpdate: elementManager.processManuallyAddedElements,
|
|
3098
3157
|
// After successful request, tag new server content
|
|
3099
3158
|
onCompletePreviousRequest: (loadedPage) => {
|
|
3100
|
-
|
|
3159
|
+
options.onCompletePreviousRequest();
|
|
3160
|
+
requestAnimationFrame(() => {
|
|
3101
3161
|
elementManager.processServerLoadedElements(loadedPage);
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
});
|
|
3162
|
+
elementManager.refreshTriggers();
|
|
3163
|
+
}, 2);
|
|
3105
3164
|
},
|
|
3106
3165
|
onCompleteNextRequest: (loadedPage) => {
|
|
3107
|
-
|
|
3166
|
+
options.onCompleteNextRequest();
|
|
3167
|
+
requestAnimationFrame(() => {
|
|
3108
3168
|
elementManager.processServerLoadedElements(loadedPage);
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
});
|
|
3169
|
+
elementManager.refreshTriggers();
|
|
3170
|
+
}, 2);
|
|
3112
3171
|
}
|
|
3113
3172
|
});
|
|
3114
3173
|
const addScrollPreservationCallbacks = (reloadOptions) => {
|