@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.esm.js
CHANGED
|
@@ -40,7 +40,8 @@ var config = new Config({
|
|
|
40
40
|
useDialogForErrorModal: false
|
|
41
41
|
},
|
|
42
42
|
prefetch: {
|
|
43
|
-
cacheFor: 3e4
|
|
43
|
+
cacheFor: 3e4,
|
|
44
|
+
hoverDelay: 75
|
|
44
45
|
}
|
|
45
46
|
});
|
|
46
47
|
|
|
@@ -348,27 +349,33 @@ var Scroll = class {
|
|
|
348
349
|
import * as qs from "qs";
|
|
349
350
|
|
|
350
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;
|
|
351
353
|
function hasFiles(data) {
|
|
352
|
-
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));
|
|
353
355
|
}
|
|
354
356
|
|
|
355
357
|
// src/formData.ts
|
|
356
358
|
var isFormData = (value) => value instanceof FormData;
|
|
357
|
-
function objectToFormData(source, form = new FormData(), parentKey = null) {
|
|
359
|
+
function objectToFormData(source, form = new FormData(), parentKey = null, queryStringArrayFormat = "brackets") {
|
|
358
360
|
source = source || {};
|
|
359
361
|
for (const key in source) {
|
|
360
362
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
361
|
-
append(form, composeKey(parentKey, key), source[key]);
|
|
363
|
+
append(form, composeKey(parentKey, key, "indices"), source[key], queryStringArrayFormat);
|
|
362
364
|
}
|
|
363
365
|
}
|
|
364
366
|
return form;
|
|
365
367
|
}
|
|
366
|
-
function composeKey(parent, key) {
|
|
367
|
-
|
|
368
|
+
function composeKey(parent, key, format) {
|
|
369
|
+
if (!parent) {
|
|
370
|
+
return key;
|
|
371
|
+
}
|
|
372
|
+
return format === "brackets" ? `${parent}[]` : `${parent}[${key}]`;
|
|
368
373
|
}
|
|
369
|
-
function append(form, key, value) {
|
|
374
|
+
function append(form, key, value, format) {
|
|
370
375
|
if (Array.isArray(value)) {
|
|
371
|
-
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
|
+
);
|
|
372
379
|
} else if (value instanceof Date) {
|
|
373
380
|
return form.append(key, value.toISOString());
|
|
374
381
|
} else if (value instanceof File) {
|
|
@@ -384,7 +391,7 @@ function append(form, key, value) {
|
|
|
384
391
|
} else if (value === null || value === void 0) {
|
|
385
392
|
return form.append(key, "");
|
|
386
393
|
}
|
|
387
|
-
objectToFormData(value, form, key);
|
|
394
|
+
objectToFormData(value, form, key, format);
|
|
388
395
|
}
|
|
389
396
|
|
|
390
397
|
// src/url.ts
|
|
@@ -394,7 +401,7 @@ function hrefToUrl(href) {
|
|
|
394
401
|
var transformUrlAndData = (href, data, method, forceFormData, queryStringArrayFormat) => {
|
|
395
402
|
let url = typeof href === "string" ? hrefToUrl(href) : href;
|
|
396
403
|
if ((hasFiles(data) || forceFormData) && !isFormData(data)) {
|
|
397
|
-
data = objectToFormData(data);
|
|
404
|
+
data = objectToFormData(data, new FormData(), null, queryStringArrayFormat);
|
|
398
405
|
}
|
|
399
406
|
if (isFormData(data)) {
|
|
400
407
|
return [url, data];
|
|
@@ -653,7 +660,7 @@ var History = class {
|
|
|
653
660
|
}
|
|
654
661
|
restore(key) {
|
|
655
662
|
if (!isServer) {
|
|
656
|
-
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];
|
|
657
664
|
}
|
|
658
665
|
}
|
|
659
666
|
pushState(page2, cb = null) {
|
|
@@ -1301,6 +1308,8 @@ var PrefetchedRequests = class {
|
|
|
1301
1308
|
"showProgress",
|
|
1302
1309
|
"replace",
|
|
1303
1310
|
"prefetch",
|
|
1311
|
+
"preserveScroll",
|
|
1312
|
+
"preserveState",
|
|
1304
1313
|
"onBefore",
|
|
1305
1314
|
"onBeforeUpdate",
|
|
1306
1315
|
"onStart",
|
|
@@ -2347,6 +2356,9 @@ var Router = class {
|
|
|
2347
2356
|
|
|
2348
2357
|
// src/domUtils.ts
|
|
2349
2358
|
var elementInViewport = (el) => {
|
|
2359
|
+
if (el.offsetParent === null) {
|
|
2360
|
+
return false;
|
|
2361
|
+
}
|
|
2350
2362
|
const rect = el.getBoundingClientRect();
|
|
2351
2363
|
const verticallyVisible = rect.top < window.innerHeight && rect.bottom >= 0;
|
|
2352
2364
|
const horizontallyVisible = rect.left < window.innerWidth && rect.right >= 0;
|
|
@@ -2398,7 +2410,10 @@ var getScrollableParent = (element) => {
|
|
|
2398
2410
|
}
|
|
2399
2411
|
return null;
|
|
2400
2412
|
};
|
|
2401
|
-
var getElementsInViewportFromCollection = (
|
|
2413
|
+
var getElementsInViewportFromCollection = (elements, referenceElement) => {
|
|
2414
|
+
if (!referenceElement) {
|
|
2415
|
+
return elements.filter((element) => elementInViewport(element));
|
|
2416
|
+
}
|
|
2402
2417
|
const referenceIndex = elements.indexOf(referenceElement);
|
|
2403
2418
|
const upwardElements = [];
|
|
2404
2419
|
const downwardElements = [];
|
|
@@ -2420,6 +2435,15 @@ var getElementsInViewportFromCollection = (referenceElement, elements) => {
|
|
|
2420
2435
|
}
|
|
2421
2436
|
return [...upwardElements.reverse(), ...downwardElements];
|
|
2422
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
|
+
};
|
|
2423
2447
|
|
|
2424
2448
|
// src/formObject.ts
|
|
2425
2449
|
import { get as get4, set as set4 } from "lodash-es";
|
|
@@ -2448,6 +2472,41 @@ function parseKey(key) {
|
|
|
2448
2472
|
}
|
|
2449
2473
|
return path;
|
|
2450
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
|
+
}
|
|
2451
2510
|
function formDataToObject(source) {
|
|
2452
2511
|
const form = {};
|
|
2453
2512
|
for (const [key, value] of source.entries()) {
|
|
@@ -2460,14 +2519,17 @@ function formDataToObject(source) {
|
|
|
2460
2519
|
const existing = get4(form, arrayPath);
|
|
2461
2520
|
if (Array.isArray(existing)) {
|
|
2462
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]);
|
|
2463
2525
|
} else {
|
|
2464
2526
|
set4(form, arrayPath, [value]);
|
|
2465
2527
|
}
|
|
2466
2528
|
continue;
|
|
2467
2529
|
}
|
|
2468
|
-
|
|
2530
|
+
setNestedObject(form, path.map(String), value);
|
|
2469
2531
|
}
|
|
2470
|
-
return form;
|
|
2532
|
+
return convertSequentialObjectsToArrays(form);
|
|
2471
2533
|
}
|
|
2472
2534
|
|
|
2473
2535
|
// src/head.ts
|
|
@@ -2942,7 +3004,7 @@ var useInfiniteScrollQueryString = (options) => {
|
|
|
2942
3004
|
}
|
|
2943
3005
|
const pageMap = /* @__PURE__ */ new Map();
|
|
2944
3006
|
const elements = [...itemsElement.children];
|
|
2945
|
-
getElementsInViewportFromCollection(
|
|
3007
|
+
getElementsInViewportFromCollection(elements, itemElement).forEach((element) => {
|
|
2946
3008
|
const page2 = getPageFromElement(element) ?? "1";
|
|
2947
3009
|
if (pageMap.has(page2)) {
|
|
2948
3010
|
pageMap.set(page2, pageMap.get(page2) + 1);
|
|
@@ -2972,10 +3034,7 @@ var useInfiniteScrollPreservation = (options) => {
|
|
|
2972
3034
|
const scrollableContainer = options.getScrollableParent();
|
|
2973
3035
|
const itemsElement = options.getItemsElement();
|
|
2974
3036
|
currentScrollTop = scrollableContainer?.scrollTop || window.scrollY;
|
|
2975
|
-
const visibleElements = getElementsInViewportFromCollection(
|
|
2976
|
-
itemsElement.firstElementChild,
|
|
2977
|
-
[...itemsElement.children]
|
|
2978
|
-
);
|
|
3037
|
+
const visibleElements = getElementsInViewportFromCollection([...itemsElement.children]);
|
|
2979
3038
|
if (visibleElements.length > 0) {
|
|
2980
3039
|
referenceElement = visibleElements[0];
|
|
2981
3040
|
const containerRect = scrollableContainer?.getBoundingClientRect() || { top: 0 };
|
|
@@ -3012,7 +3071,7 @@ var useInfiniteScrollPreservation = (options) => {
|
|
|
3012
3071
|
}
|
|
3013
3072
|
restored = true;
|
|
3014
3073
|
};
|
|
3015
|
-
restore
|
|
3074
|
+
window.requestAnimationFrame(restore);
|
|
3016
3075
|
};
|
|
3017
3076
|
return {
|
|
3018
3077
|
captureScrollPosition,
|
|
@@ -3042,18 +3101,18 @@ function useInfiniteScroll(options) {
|
|
|
3042
3101
|
onBeforeUpdate: elementManager.processManuallyAddedElements,
|
|
3043
3102
|
// After successful request, tag new server content
|
|
3044
3103
|
onCompletePreviousRequest: (loadedPage) => {
|
|
3045
|
-
|
|
3104
|
+
options.onCompletePreviousRequest();
|
|
3105
|
+
requestAnimationFrame(() => {
|
|
3046
3106
|
elementManager.processServerLoadedElements(loadedPage);
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
});
|
|
3107
|
+
elementManager.refreshTriggers();
|
|
3108
|
+
}, 2);
|
|
3050
3109
|
},
|
|
3051
3110
|
onCompleteNextRequest: (loadedPage) => {
|
|
3052
|
-
|
|
3111
|
+
options.onCompleteNextRequest();
|
|
3112
|
+
requestAnimationFrame(() => {
|
|
3053
3113
|
elementManager.processServerLoadedElements(loadedPage);
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
});
|
|
3114
|
+
elementManager.refreshTriggers();
|
|
3115
|
+
}, 2);
|
|
3057
3116
|
}
|
|
3058
3117
|
});
|
|
3059
3118
|
const addScrollPreservationCallbacks = (reloadOptions) => {
|