@inertiajs/core 2.2.15 → 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 +85 -27
- package/dist/index.esm.js.map +3 -3
- package/dist/index.js +85 -27
- package/dist/index.js.map +3 -3
- package/package.json +4 -4
- package/types/domUtils.d.ts +2 -1
- package/types/files.d.ts +1 -0
- package/types/formData.d.ts +2 -2
- package/types/types.d.ts +2 -1
- package/types/url.d.ts +2 -2
package/dist/index.esm.js
CHANGED
|
@@ -349,27 +349,33 @@ var Scroll = class {
|
|
|
349
349
|
import * as qs from "qs";
|
|
350
350
|
|
|
351
351
|
// src/files.ts
|
|
352
|
+
var isFile = (value) => typeof File !== "undefined" && value instanceof File || value instanceof Blob || typeof FileList !== "undefined" && value instanceof FileList && value.length > 0;
|
|
352
353
|
function hasFiles(data) {
|
|
353
|
-
return data
|
|
354
|
+
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));
|
|
354
355
|
}
|
|
355
356
|
|
|
356
357
|
// src/formData.ts
|
|
357
358
|
var isFormData = (value) => value instanceof FormData;
|
|
358
|
-
function objectToFormData(source, form = new FormData(), parentKey = null) {
|
|
359
|
+
function objectToFormData(source, form = new FormData(), parentKey = null, queryStringArrayFormat = "brackets") {
|
|
359
360
|
source = source || {};
|
|
360
361
|
for (const key in source) {
|
|
361
362
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
362
|
-
append(form, composeKey(parentKey, key), source[key]);
|
|
363
|
+
append(form, composeKey(parentKey, key, "indices"), source[key], queryStringArrayFormat);
|
|
363
364
|
}
|
|
364
365
|
}
|
|
365
366
|
return form;
|
|
366
367
|
}
|
|
367
|
-
function composeKey(parent, key) {
|
|
368
|
-
|
|
368
|
+
function composeKey(parent, key, format) {
|
|
369
|
+
if (!parent) {
|
|
370
|
+
return key;
|
|
371
|
+
}
|
|
372
|
+
return format === "brackets" ? `${parent}[]` : `${parent}[${key}]`;
|
|
369
373
|
}
|
|
370
|
-
function append(form, key, value) {
|
|
374
|
+
function append(form, key, value, format) {
|
|
371
375
|
if (Array.isArray(value)) {
|
|
372
|
-
return Array.from(value.keys()).forEach(
|
|
376
|
+
return Array.from(value.keys()).forEach(
|
|
377
|
+
(index) => append(form, composeKey(key, index.toString(), format), value[index], format)
|
|
378
|
+
);
|
|
373
379
|
} else if (value instanceof Date) {
|
|
374
380
|
return form.append(key, value.toISOString());
|
|
375
381
|
} else if (value instanceof File) {
|
|
@@ -385,7 +391,7 @@ function append(form, key, value) {
|
|
|
385
391
|
} else if (value === null || value === void 0) {
|
|
386
392
|
return form.append(key, "");
|
|
387
393
|
}
|
|
388
|
-
objectToFormData(value, form, key);
|
|
394
|
+
objectToFormData(value, form, key, format);
|
|
389
395
|
}
|
|
390
396
|
|
|
391
397
|
// src/url.ts
|
|
@@ -395,7 +401,7 @@ function hrefToUrl(href) {
|
|
|
395
401
|
var transformUrlAndData = (href, data, method, forceFormData, queryStringArrayFormat) => {
|
|
396
402
|
let url = typeof href === "string" ? hrefToUrl(href) : href;
|
|
397
403
|
if ((hasFiles(data) || forceFormData) && !isFormData(data)) {
|
|
398
|
-
data = objectToFormData(data);
|
|
404
|
+
data = objectToFormData(data, new FormData(), null, queryStringArrayFormat);
|
|
399
405
|
}
|
|
400
406
|
if (isFormData(data)) {
|
|
401
407
|
return [url, data];
|
|
@@ -654,7 +660,7 @@ var History = class {
|
|
|
654
660
|
}
|
|
655
661
|
restore(key) {
|
|
656
662
|
if (!isServer) {
|
|
657
|
-
return this.current[this.rememberedState] ? this.current[this.rememberedState]?.[key] : this.initialState?.[this.rememberedState]?.[key];
|
|
663
|
+
return this.current[this.rememberedState]?.[key] !== void 0 ? this.current[this.rememberedState]?.[key] : this.initialState?.[this.rememberedState]?.[key];
|
|
658
664
|
}
|
|
659
665
|
}
|
|
660
666
|
pushState(page2, cb = null) {
|
|
@@ -1302,6 +1308,8 @@ var PrefetchedRequests = class {
|
|
|
1302
1308
|
"showProgress",
|
|
1303
1309
|
"replace",
|
|
1304
1310
|
"prefetch",
|
|
1311
|
+
"preserveScroll",
|
|
1312
|
+
"preserveState",
|
|
1305
1313
|
"onBefore",
|
|
1306
1314
|
"onBeforeUpdate",
|
|
1307
1315
|
"onStart",
|
|
@@ -2348,6 +2356,9 @@ var Router = class {
|
|
|
2348
2356
|
|
|
2349
2357
|
// src/domUtils.ts
|
|
2350
2358
|
var elementInViewport = (el) => {
|
|
2359
|
+
if (el.offsetParent === null) {
|
|
2360
|
+
return false;
|
|
2361
|
+
}
|
|
2351
2362
|
const rect = el.getBoundingClientRect();
|
|
2352
2363
|
const verticallyVisible = rect.top < window.innerHeight && rect.bottom >= 0;
|
|
2353
2364
|
const horizontallyVisible = rect.left < window.innerWidth && rect.right >= 0;
|
|
@@ -2399,7 +2410,10 @@ var getScrollableParent = (element) => {
|
|
|
2399
2410
|
}
|
|
2400
2411
|
return null;
|
|
2401
2412
|
};
|
|
2402
|
-
var getElementsInViewportFromCollection = (
|
|
2413
|
+
var getElementsInViewportFromCollection = (elements, referenceElement) => {
|
|
2414
|
+
if (!referenceElement) {
|
|
2415
|
+
return elements.filter((element) => elementInViewport(element));
|
|
2416
|
+
}
|
|
2403
2417
|
const referenceIndex = elements.indexOf(referenceElement);
|
|
2404
2418
|
const upwardElements = [];
|
|
2405
2419
|
const downwardElements = [];
|
|
@@ -2421,6 +2435,15 @@ var getElementsInViewportFromCollection = (referenceElement, elements) => {
|
|
|
2421
2435
|
}
|
|
2422
2436
|
return [...upwardElements.reverse(), ...downwardElements];
|
|
2423
2437
|
};
|
|
2438
|
+
var requestAnimationFrame = (cb, times = 1) => {
|
|
2439
|
+
window.requestAnimationFrame(() => {
|
|
2440
|
+
if (times > 1) {
|
|
2441
|
+
requestAnimationFrame(cb, times - 1);
|
|
2442
|
+
} else {
|
|
2443
|
+
cb();
|
|
2444
|
+
}
|
|
2445
|
+
});
|
|
2446
|
+
};
|
|
2424
2447
|
|
|
2425
2448
|
// src/formObject.ts
|
|
2426
2449
|
import { get as get4, set as set4 } from "lodash-es";
|
|
@@ -2449,6 +2472,41 @@ function parseKey(key) {
|
|
|
2449
2472
|
}
|
|
2450
2473
|
return path;
|
|
2451
2474
|
}
|
|
2475
|
+
function setNestedObject(obj, path, value) {
|
|
2476
|
+
let current = obj;
|
|
2477
|
+
for (let i = 0; i < path.length - 1; i++) {
|
|
2478
|
+
if (!(path[i] in current)) {
|
|
2479
|
+
current[path[i]] = {};
|
|
2480
|
+
}
|
|
2481
|
+
current = current[path[i]];
|
|
2482
|
+
}
|
|
2483
|
+
current[path[path.length - 1]] = value;
|
|
2484
|
+
}
|
|
2485
|
+
function objectHasSequentialNumericKeys(value) {
|
|
2486
|
+
const keys = Object.keys(value);
|
|
2487
|
+
const numericKeys = keys.filter((k) => /^\d+$/.test(k)).map(Number).sort((a, b) => a - b);
|
|
2488
|
+
return keys.length === numericKeys.length && numericKeys.length > 0 && numericKeys[0] === 0 && numericKeys.every((n, i) => n === i);
|
|
2489
|
+
}
|
|
2490
|
+
function convertSequentialObjectsToArrays(value) {
|
|
2491
|
+
if (Array.isArray(value)) {
|
|
2492
|
+
return value.map(convertSequentialObjectsToArrays);
|
|
2493
|
+
}
|
|
2494
|
+
if (typeof value !== "object" || value === null || isFile(value)) {
|
|
2495
|
+
return value;
|
|
2496
|
+
}
|
|
2497
|
+
if (objectHasSequentialNumericKeys(value)) {
|
|
2498
|
+
const result2 = [];
|
|
2499
|
+
for (let i = 0; i < Object.keys(value).length; i++) {
|
|
2500
|
+
result2[i] = convertSequentialObjectsToArrays(value[i]);
|
|
2501
|
+
}
|
|
2502
|
+
return result2;
|
|
2503
|
+
}
|
|
2504
|
+
const result = {};
|
|
2505
|
+
for (const key in value) {
|
|
2506
|
+
result[key] = convertSequentialObjectsToArrays(value[key]);
|
|
2507
|
+
}
|
|
2508
|
+
return result;
|
|
2509
|
+
}
|
|
2452
2510
|
function formDataToObject(source) {
|
|
2453
2511
|
const form = {};
|
|
2454
2512
|
for (const [key, value] of source.entries()) {
|
|
@@ -2461,14 +2519,17 @@ function formDataToObject(source) {
|
|
|
2461
2519
|
const existing = get4(form, arrayPath);
|
|
2462
2520
|
if (Array.isArray(existing)) {
|
|
2463
2521
|
existing.push(value);
|
|
2522
|
+
} else if (existing && typeof existing === "object" && !isFile(existing)) {
|
|
2523
|
+
const numericKeys = Object.keys(existing).filter((k) => /^\d+$/.test(k)).map(Number).sort((a, b) => a - b);
|
|
2524
|
+
set4(form, arrayPath, numericKeys.length > 0 ? [...numericKeys.map((k) => existing[k]), value] : [value]);
|
|
2464
2525
|
} else {
|
|
2465
2526
|
set4(form, arrayPath, [value]);
|
|
2466
2527
|
}
|
|
2467
2528
|
continue;
|
|
2468
2529
|
}
|
|
2469
|
-
|
|
2530
|
+
setNestedObject(form, path.map(String), value);
|
|
2470
2531
|
}
|
|
2471
|
-
return form;
|
|
2532
|
+
return convertSequentialObjectsToArrays(form);
|
|
2472
2533
|
}
|
|
2473
2534
|
|
|
2474
2535
|
// src/head.ts
|
|
@@ -2943,7 +3004,7 @@ var useInfiniteScrollQueryString = (options) => {
|
|
|
2943
3004
|
}
|
|
2944
3005
|
const pageMap = /* @__PURE__ */ new Map();
|
|
2945
3006
|
const elements = [...itemsElement.children];
|
|
2946
|
-
getElementsInViewportFromCollection(
|
|
3007
|
+
getElementsInViewportFromCollection(elements, itemElement).forEach((element) => {
|
|
2947
3008
|
const page2 = getPageFromElement(element) ?? "1";
|
|
2948
3009
|
if (pageMap.has(page2)) {
|
|
2949
3010
|
pageMap.set(page2, pageMap.get(page2) + 1);
|
|
@@ -2973,10 +3034,7 @@ var useInfiniteScrollPreservation = (options) => {
|
|
|
2973
3034
|
const scrollableContainer = options.getScrollableParent();
|
|
2974
3035
|
const itemsElement = options.getItemsElement();
|
|
2975
3036
|
currentScrollTop = scrollableContainer?.scrollTop || window.scrollY;
|
|
2976
|
-
const visibleElements = getElementsInViewportFromCollection(
|
|
2977
|
-
itemsElement.firstElementChild,
|
|
2978
|
-
[...itemsElement.children]
|
|
2979
|
-
);
|
|
3037
|
+
const visibleElements = getElementsInViewportFromCollection([...itemsElement.children]);
|
|
2980
3038
|
if (visibleElements.length > 0) {
|
|
2981
3039
|
referenceElement = visibleElements[0];
|
|
2982
3040
|
const containerRect = scrollableContainer?.getBoundingClientRect() || { top: 0 };
|
|
@@ -3013,7 +3071,7 @@ var useInfiniteScrollPreservation = (options) => {
|
|
|
3013
3071
|
}
|
|
3014
3072
|
restored = true;
|
|
3015
3073
|
};
|
|
3016
|
-
restore
|
|
3074
|
+
window.requestAnimationFrame(restore);
|
|
3017
3075
|
};
|
|
3018
3076
|
return {
|
|
3019
3077
|
captureScrollPosition,
|
|
@@ -3043,18 +3101,18 @@ function useInfiniteScroll(options) {
|
|
|
3043
3101
|
onBeforeUpdate: elementManager.processManuallyAddedElements,
|
|
3044
3102
|
// After successful request, tag new server content
|
|
3045
3103
|
onCompletePreviousRequest: (loadedPage) => {
|
|
3046
|
-
|
|
3104
|
+
options.onCompletePreviousRequest();
|
|
3105
|
+
requestAnimationFrame(() => {
|
|
3047
3106
|
elementManager.processServerLoadedElements(loadedPage);
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
});
|
|
3107
|
+
elementManager.refreshTriggers();
|
|
3108
|
+
}, 2);
|
|
3051
3109
|
},
|
|
3052
3110
|
onCompleteNextRequest: (loadedPage) => {
|
|
3053
|
-
|
|
3111
|
+
options.onCompleteNextRequest();
|
|
3112
|
+
requestAnimationFrame(() => {
|
|
3054
3113
|
elementManager.processServerLoadedElements(loadedPage);
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
});
|
|
3114
|
+
elementManager.refreshTriggers();
|
|
3115
|
+
}, 2);
|
|
3058
3116
|
}
|
|
3059
3117
|
});
|
|
3060
3118
|
const addScrollPreservationCallbacks = (reloadOptions) => {
|