@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.js
CHANGED
|
@@ -404,27 +404,33 @@ var Scroll = class {
|
|
|
404
404
|
var qs = __toESM(require("qs"), 1);
|
|
405
405
|
|
|
406
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;
|
|
407
408
|
function hasFiles(data) {
|
|
408
|
-
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));
|
|
409
410
|
}
|
|
410
411
|
|
|
411
412
|
// src/formData.ts
|
|
412
413
|
var isFormData = (value) => value instanceof FormData;
|
|
413
|
-
function objectToFormData(source, form = new FormData(), parentKey = null) {
|
|
414
|
+
function objectToFormData(source, form = new FormData(), parentKey = null, queryStringArrayFormat = "brackets") {
|
|
414
415
|
source = source || {};
|
|
415
416
|
for (const key in source) {
|
|
416
417
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
417
|
-
append(form, composeKey(parentKey, key), source[key]);
|
|
418
|
+
append(form, composeKey(parentKey, key, "indices"), source[key], queryStringArrayFormat);
|
|
418
419
|
}
|
|
419
420
|
}
|
|
420
421
|
return form;
|
|
421
422
|
}
|
|
422
|
-
function composeKey(parent, key) {
|
|
423
|
-
|
|
423
|
+
function composeKey(parent, key, format) {
|
|
424
|
+
if (!parent) {
|
|
425
|
+
return key;
|
|
426
|
+
}
|
|
427
|
+
return format === "brackets" ? `${parent}[]` : `${parent}[${key}]`;
|
|
424
428
|
}
|
|
425
|
-
function append(form, key, value) {
|
|
429
|
+
function append(form, key, value, format) {
|
|
426
430
|
if (Array.isArray(value)) {
|
|
427
|
-
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
|
+
);
|
|
428
434
|
} else if (value instanceof Date) {
|
|
429
435
|
return form.append(key, value.toISOString());
|
|
430
436
|
} else if (value instanceof File) {
|
|
@@ -440,7 +446,7 @@ function append(form, key, value) {
|
|
|
440
446
|
} else if (value === null || value === void 0) {
|
|
441
447
|
return form.append(key, "");
|
|
442
448
|
}
|
|
443
|
-
objectToFormData(value, form, key);
|
|
449
|
+
objectToFormData(value, form, key, format);
|
|
444
450
|
}
|
|
445
451
|
|
|
446
452
|
// src/url.ts
|
|
@@ -450,7 +456,7 @@ function hrefToUrl(href) {
|
|
|
450
456
|
var transformUrlAndData = (href, data, method, forceFormData, queryStringArrayFormat) => {
|
|
451
457
|
let url = typeof href === "string" ? hrefToUrl(href) : href;
|
|
452
458
|
if ((hasFiles(data) || forceFormData) && !isFormData(data)) {
|
|
453
|
-
data = objectToFormData(data);
|
|
459
|
+
data = objectToFormData(data, new FormData(), null, queryStringArrayFormat);
|
|
454
460
|
}
|
|
455
461
|
if (isFormData(data)) {
|
|
456
462
|
return [url, data];
|
|
@@ -709,7 +715,7 @@ var History = class {
|
|
|
709
715
|
}
|
|
710
716
|
restore(key) {
|
|
711
717
|
if (!isServer) {
|
|
712
|
-
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];
|
|
713
719
|
}
|
|
714
720
|
}
|
|
715
721
|
pushState(page2, cb = null) {
|
|
@@ -1357,6 +1363,8 @@ var PrefetchedRequests = class {
|
|
|
1357
1363
|
"showProgress",
|
|
1358
1364
|
"replace",
|
|
1359
1365
|
"prefetch",
|
|
1366
|
+
"preserveScroll",
|
|
1367
|
+
"preserveState",
|
|
1360
1368
|
"onBefore",
|
|
1361
1369
|
"onBeforeUpdate",
|
|
1362
1370
|
"onStart",
|
|
@@ -2403,6 +2411,9 @@ var Router = class {
|
|
|
2403
2411
|
|
|
2404
2412
|
// src/domUtils.ts
|
|
2405
2413
|
var elementInViewport = (el) => {
|
|
2414
|
+
if (el.offsetParent === null) {
|
|
2415
|
+
return false;
|
|
2416
|
+
}
|
|
2406
2417
|
const rect = el.getBoundingClientRect();
|
|
2407
2418
|
const verticallyVisible = rect.top < window.innerHeight && rect.bottom >= 0;
|
|
2408
2419
|
const horizontallyVisible = rect.left < window.innerWidth && rect.right >= 0;
|
|
@@ -2454,7 +2465,10 @@ var getScrollableParent = (element) => {
|
|
|
2454
2465
|
}
|
|
2455
2466
|
return null;
|
|
2456
2467
|
};
|
|
2457
|
-
var getElementsInViewportFromCollection = (
|
|
2468
|
+
var getElementsInViewportFromCollection = (elements, referenceElement) => {
|
|
2469
|
+
if (!referenceElement) {
|
|
2470
|
+
return elements.filter((element) => elementInViewport(element));
|
|
2471
|
+
}
|
|
2458
2472
|
const referenceIndex = elements.indexOf(referenceElement);
|
|
2459
2473
|
const upwardElements = [];
|
|
2460
2474
|
const downwardElements = [];
|
|
@@ -2476,6 +2490,15 @@ var getElementsInViewportFromCollection = (referenceElement, elements) => {
|
|
|
2476
2490
|
}
|
|
2477
2491
|
return [...upwardElements.reverse(), ...downwardElements];
|
|
2478
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
|
+
};
|
|
2479
2502
|
|
|
2480
2503
|
// src/formObject.ts
|
|
2481
2504
|
var import_lodash_es6 = require("lodash-es");
|
|
@@ -2504,6 +2527,41 @@ function parseKey(key) {
|
|
|
2504
2527
|
}
|
|
2505
2528
|
return path;
|
|
2506
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
|
+
}
|
|
2507
2565
|
function formDataToObject(source) {
|
|
2508
2566
|
const form = {};
|
|
2509
2567
|
for (const [key, value] of source.entries()) {
|
|
@@ -2516,14 +2574,17 @@ function formDataToObject(source) {
|
|
|
2516
2574
|
const existing = (0, import_lodash_es6.get)(form, arrayPath);
|
|
2517
2575
|
if (Array.isArray(existing)) {
|
|
2518
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]);
|
|
2519
2580
|
} else {
|
|
2520
2581
|
(0, import_lodash_es6.set)(form, arrayPath, [value]);
|
|
2521
2582
|
}
|
|
2522
2583
|
continue;
|
|
2523
2584
|
}
|
|
2524
|
-
(
|
|
2585
|
+
setNestedObject(form, path.map(String), value);
|
|
2525
2586
|
}
|
|
2526
|
-
return form;
|
|
2587
|
+
return convertSequentialObjectsToArrays(form);
|
|
2527
2588
|
}
|
|
2528
2589
|
|
|
2529
2590
|
// src/head.ts
|
|
@@ -2998,7 +3059,7 @@ var useInfiniteScrollQueryString = (options) => {
|
|
|
2998
3059
|
}
|
|
2999
3060
|
const pageMap = /* @__PURE__ */ new Map();
|
|
3000
3061
|
const elements = [...itemsElement.children];
|
|
3001
|
-
getElementsInViewportFromCollection(
|
|
3062
|
+
getElementsInViewportFromCollection(elements, itemElement).forEach((element) => {
|
|
3002
3063
|
const page2 = getPageFromElement(element) ?? "1";
|
|
3003
3064
|
if (pageMap.has(page2)) {
|
|
3004
3065
|
pageMap.set(page2, pageMap.get(page2) + 1);
|
|
@@ -3028,10 +3089,7 @@ var useInfiniteScrollPreservation = (options) => {
|
|
|
3028
3089
|
const scrollableContainer = options.getScrollableParent();
|
|
3029
3090
|
const itemsElement = options.getItemsElement();
|
|
3030
3091
|
currentScrollTop = scrollableContainer?.scrollTop || window.scrollY;
|
|
3031
|
-
const visibleElements = getElementsInViewportFromCollection(
|
|
3032
|
-
itemsElement.firstElementChild,
|
|
3033
|
-
[...itemsElement.children]
|
|
3034
|
-
);
|
|
3092
|
+
const visibleElements = getElementsInViewportFromCollection([...itemsElement.children]);
|
|
3035
3093
|
if (visibleElements.length > 0) {
|
|
3036
3094
|
referenceElement = visibleElements[0];
|
|
3037
3095
|
const containerRect = scrollableContainer?.getBoundingClientRect() || { top: 0 };
|
|
@@ -3068,7 +3126,7 @@ var useInfiniteScrollPreservation = (options) => {
|
|
|
3068
3126
|
}
|
|
3069
3127
|
restored = true;
|
|
3070
3128
|
};
|
|
3071
|
-
restore
|
|
3129
|
+
window.requestAnimationFrame(restore);
|
|
3072
3130
|
};
|
|
3073
3131
|
return {
|
|
3074
3132
|
captureScrollPosition,
|
|
@@ -3098,18 +3156,18 @@ function useInfiniteScroll(options) {
|
|
|
3098
3156
|
onBeforeUpdate: elementManager.processManuallyAddedElements,
|
|
3099
3157
|
// After successful request, tag new server content
|
|
3100
3158
|
onCompletePreviousRequest: (loadedPage) => {
|
|
3101
|
-
|
|
3159
|
+
options.onCompletePreviousRequest();
|
|
3160
|
+
requestAnimationFrame(() => {
|
|
3102
3161
|
elementManager.processServerLoadedElements(loadedPage);
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
});
|
|
3162
|
+
elementManager.refreshTriggers();
|
|
3163
|
+
}, 2);
|
|
3106
3164
|
},
|
|
3107
3165
|
onCompleteNextRequest: (loadedPage) => {
|
|
3108
|
-
|
|
3166
|
+
options.onCompleteNextRequest();
|
|
3167
|
+
requestAnimationFrame(() => {
|
|
3109
3168
|
elementManager.processServerLoadedElements(loadedPage);
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
});
|
|
3169
|
+
elementManager.refreshTriggers();
|
|
3170
|
+
}, 2);
|
|
3113
3171
|
}
|
|
3114
3172
|
});
|
|
3115
3173
|
const addScrollPreservationCallbacks = (reloadOptions) => {
|