inertiax-core 11.0.36 → 11.0.38
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.js +88 -17
- package/dist/index.js.map +3 -3
- package/dist/server.js +6 -5
- package/dist/server.js.map +2 -2
- package/dist/ssrErrors.js +6 -5
- package/dist/ssrErrors.js.map +2 -2
- package/package.json +1 -1
- package/types/events.d.ts +1 -0
- package/types/head.d.ts +3 -2
- package/types/index.d.ts +1 -1
- package/types/navigationEvents.d.ts +1 -1
- package/types/requestParams.d.ts +1 -0
- package/types/router.d.ts +1 -0
- package/types/ssrErrors.d.ts +1 -1
- package/types/types.d.ts +19 -3
package/dist/index.js
CHANGED
|
@@ -103,6 +103,9 @@ var firePrefetchingEvent = (visit) => {
|
|
|
103
103
|
var fireFlashEvent = (flash) => {
|
|
104
104
|
return fireEvent("flash", { detail: { flash } });
|
|
105
105
|
};
|
|
106
|
+
var fireLocationEvent = (url, versionChange) => {
|
|
107
|
+
return fireEvent("location", { cancelable: true, detail: { url, versionChange } });
|
|
108
|
+
};
|
|
106
109
|
|
|
107
110
|
// src/history.ts
|
|
108
111
|
import { cloneDeep, isEqual } from "es-toolkit";
|
|
@@ -1544,6 +1547,8 @@ var CurrentFramePage = class {
|
|
|
1544
1547
|
const viewTransitionCallback = typeof viewTransition === "boolean" ? () => null : viewTransition;
|
|
1545
1548
|
return new Promise((resolve) => {
|
|
1546
1549
|
const transitionResult = document.startViewTransition(() => doSwap().then(resolve));
|
|
1550
|
+
transitionResult.ready.catch(() => {
|
|
1551
|
+
});
|
|
1547
1552
|
viewTransitionCallback(transitionResult);
|
|
1548
1553
|
});
|
|
1549
1554
|
}
|
|
@@ -1896,7 +1901,8 @@ var InitialVisit = class {
|
|
|
1896
1901
|
page.setUrlHash(window.location.hash, frameId);
|
|
1897
1902
|
}
|
|
1898
1903
|
const visitId = uid();
|
|
1899
|
-
|
|
1904
|
+
const preserveScroll = frameId === "_top";
|
|
1905
|
+
page.set(page.get(frameId), { preserveScroll, preserveState: true, visitId }, frameId).then(() => {
|
|
1900
1906
|
if (navigationType.isReload()) {
|
|
1901
1907
|
Scroll.restore(history.getScrollRegions(), frameId);
|
|
1902
1908
|
} else {
|
|
@@ -2155,11 +2161,17 @@ function parseHeaders(xhr) {
|
|
|
2155
2161
|
});
|
|
2156
2162
|
return headers;
|
|
2157
2163
|
}
|
|
2164
|
+
function isFormDataRequestBody(value) {
|
|
2165
|
+
return typeof FormData !== "undefined" && value instanceof FormData;
|
|
2166
|
+
}
|
|
2167
|
+
function isRawRequestBody(value) {
|
|
2168
|
+
return typeof value === "string" || isFormDataRequestBody(value) || typeof Blob !== "undefined" && value instanceof Blob || typeof ArrayBuffer !== "undefined" && value instanceof ArrayBuffer || typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView(value) || typeof URLSearchParams !== "undefined" && value instanceof URLSearchParams;
|
|
2169
|
+
}
|
|
2158
2170
|
function setHeaders(xhr, config2) {
|
|
2159
2171
|
if (!config2.headers) {
|
|
2160
2172
|
return;
|
|
2161
2173
|
}
|
|
2162
|
-
const isFormData2 = config2.data
|
|
2174
|
+
const isFormData2 = isFormDataRequestBody(config2.data);
|
|
2163
2175
|
Object.entries(config2.headers).forEach(([key, value]) => {
|
|
2164
2176
|
if (key.toLowerCase() !== "content-type" || !isFormData2) {
|
|
2165
2177
|
xhr.setRequestHeader(key, String(value));
|
|
@@ -2201,9 +2213,15 @@ var XhrHttpClient = class {
|
|
|
2201
2213
|
if (xsrfToken) {
|
|
2202
2214
|
xhr.setRequestHeader(this.xsrfHeaderName, xsrfToken);
|
|
2203
2215
|
}
|
|
2216
|
+
const hasRequestedWithHeader = Object.keys(config2.headers ?? {}).some(
|
|
2217
|
+
(key) => key.toLowerCase() === "x-requested-with"
|
|
2218
|
+
);
|
|
2219
|
+
if (!hasRequestedWithHeader) {
|
|
2220
|
+
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
|
|
2221
|
+
}
|
|
2204
2222
|
let body = null;
|
|
2205
2223
|
if (config2.data !== null && config2.data !== void 0) {
|
|
2206
|
-
if (config2.data
|
|
2224
|
+
if (isRawRequestBody(config2.data)) {
|
|
2207
2225
|
body = config2.data;
|
|
2208
2226
|
} else if (typeof config2.data === "object") {
|
|
2209
2227
|
body = JSON.stringify(config2.data);
|
|
@@ -2398,6 +2416,9 @@ var RequestParams = class _RequestParams {
|
|
|
2398
2416
|
isDeferredPropsRequest() {
|
|
2399
2417
|
return this.params.deferredProps === true;
|
|
2400
2418
|
}
|
|
2419
|
+
isPollRequest() {
|
|
2420
|
+
return this.params.poll === true;
|
|
2421
|
+
}
|
|
2401
2422
|
onCancelToken(cb) {
|
|
2402
2423
|
this.params.onCancelToken({
|
|
2403
2424
|
cancel: cb
|
|
@@ -2728,9 +2749,6 @@ var Response = class _Response {
|
|
|
2728
2749
|
*/
|
|
2729
2750
|
locationVisit(url) {
|
|
2730
2751
|
try {
|
|
2731
|
-
SessionStorage.set(SessionStorage.locationVisitKey, {
|
|
2732
|
-
preserveScroll: this.requestParams.all().preserveScroll === true
|
|
2733
|
-
});
|
|
2734
2752
|
if (typeof window === "undefined") {
|
|
2735
2753
|
return;
|
|
2736
2754
|
}
|
|
@@ -2738,6 +2756,17 @@ var Response = class _Response {
|
|
|
2738
2756
|
window.location.reload();
|
|
2739
2757
|
return;
|
|
2740
2758
|
}
|
|
2759
|
+
const responseVersion = this.getHeader("x-inertia-version");
|
|
2760
|
+
const versionChange = !!responseVersion && responseVersion !== page.get().version;
|
|
2761
|
+
if (!fireLocationEvent(url, versionChange)) {
|
|
2762
|
+
return;
|
|
2763
|
+
}
|
|
2764
|
+
if (versionChange && this.requestParams.all().async) {
|
|
2765
|
+
return;
|
|
2766
|
+
}
|
|
2767
|
+
SessionStorage.set(SessionStorage.locationVisitKey, {
|
|
2768
|
+
preserveScroll: this.requestParams.all().preserveScroll === true
|
|
2769
|
+
});
|
|
2741
2770
|
if (isSameUrlWithoutHash(window.location, url)) {
|
|
2742
2771
|
window.location.reload();
|
|
2743
2772
|
} else {
|
|
@@ -3407,7 +3436,8 @@ var Router = class {
|
|
|
3407
3436
|
interval,
|
|
3408
3437
|
({ onStart, onFinish }) => {
|
|
3409
3438
|
const resolved = typeof requestOptions === "function" ? requestOptions() : requestOptions;
|
|
3410
|
-
this.
|
|
3439
|
+
this.doReload({
|
|
3440
|
+
poll: true,
|
|
3411
3441
|
preserveErrors: true,
|
|
3412
3442
|
...resolved,
|
|
3413
3443
|
onCancelToken: (token) => {
|
|
@@ -3974,6 +4004,12 @@ function normalizeHeaders(headers) {
|
|
|
3974
4004
|
}
|
|
3975
4005
|
return normalized;
|
|
3976
4006
|
}
|
|
4007
|
+
function isBinaryRequestBody(value) {
|
|
4008
|
+
return typeof Blob !== "undefined" && value instanceof Blob || typeof ArrayBuffer !== "undefined" && value instanceof ArrayBuffer || typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView(value);
|
|
4009
|
+
}
|
|
4010
|
+
function hasContentTypeHeader(headers) {
|
|
4011
|
+
return Object.keys(headers ?? {}).some((key) => key.toLowerCase() === "content-type");
|
|
4012
|
+
}
|
|
3977
4013
|
function toHttpProgressEvent(axiosEvent) {
|
|
3978
4014
|
return {
|
|
3979
4015
|
progress: axiosEvent.progress,
|
|
@@ -4014,13 +4050,17 @@ var AxiosHttpClient = class {
|
|
|
4014
4050
|
}
|
|
4015
4051
|
async doRequest(config2) {
|
|
4016
4052
|
const axios = await this.getAxios();
|
|
4053
|
+
const headers = { ...config2.headers ?? {} };
|
|
4054
|
+
if (isBinaryRequestBody(config2.data) && !hasContentTypeHeader(config2.headers)) {
|
|
4055
|
+
headers["Content-Type"] = false;
|
|
4056
|
+
}
|
|
4017
4057
|
try {
|
|
4018
4058
|
const response = await axios({
|
|
4019
4059
|
method: config2.method,
|
|
4020
4060
|
url: config2.url,
|
|
4021
4061
|
data: config2.data,
|
|
4022
4062
|
params: config2.params,
|
|
4023
|
-
headers
|
|
4063
|
+
headers,
|
|
4024
4064
|
signal: config2.signal,
|
|
4025
4065
|
responseType: "text",
|
|
4026
4066
|
onUploadProgress: config2.onUploadProgress ? (event) => config2.onUploadProgress(toHttpProgressEvent(event)) : void 0
|
|
@@ -4148,6 +4188,23 @@ function formDataToObject(source) {
|
|
|
4148
4188
|
}
|
|
4149
4189
|
|
|
4150
4190
|
// src/head.ts
|
|
4191
|
+
var serverHeadProviderId = "server";
|
|
4192
|
+
function ensureElementHasInertiaAttribute(element, index) {
|
|
4193
|
+
if (element.match(/\sdata-inertia(=|\s|>)/)) {
|
|
4194
|
+
return element;
|
|
4195
|
+
}
|
|
4196
|
+
return element.replace(/^<([a-zA-Z][^\s/>]*)/, `<$1 data-inertia="server-head-${index}"`);
|
|
4197
|
+
}
|
|
4198
|
+
function resolveServerHead(page2, serverHead) {
|
|
4199
|
+
if (!serverHead) {
|
|
4200
|
+
return [];
|
|
4201
|
+
}
|
|
4202
|
+
const elements = typeof serverHead === "function" ? serverHead(page2) : page2.props[serverHead === true ? "head" : serverHead];
|
|
4203
|
+
if (!Array.isArray(elements)) {
|
|
4204
|
+
return [];
|
|
4205
|
+
}
|
|
4206
|
+
return elements.map((element) => typeof element === "string" ? element.trim() : element).filter((element) => typeof element === "string" && element.length > 0).map(ensureElementHasInertiaAttribute);
|
|
4207
|
+
}
|
|
4151
4208
|
var Renderer = {
|
|
4152
4209
|
buildDOMElement(tag) {
|
|
4153
4210
|
const template = document.createElement("template");
|
|
@@ -4197,8 +4254,8 @@ var Renderer = {
|
|
|
4197
4254
|
});
|
|
4198
4255
|
}, 1)
|
|
4199
4256
|
};
|
|
4200
|
-
function createHeadManager(isServer3, titleCallback, onUpdate) {
|
|
4201
|
-
const states = {};
|
|
4257
|
+
function createHeadManager(isServer3, titleCallback, onUpdate, initialServerHead = []) {
|
|
4258
|
+
const states = initialServerHead.length ? { [serverHeadProviderId]: initialServerHead } : {};
|
|
4202
4259
|
let lastProviderId = 0;
|
|
4203
4260
|
function connect() {
|
|
4204
4261
|
const id = lastProviderId += 1;
|
|
@@ -4223,12 +4280,22 @@ function createHeadManager(isServer3, titleCallback, onUpdate) {
|
|
|
4223
4280
|
}
|
|
4224
4281
|
commit();
|
|
4225
4282
|
}
|
|
4283
|
+
function updateServerHead(elements = []) {
|
|
4284
|
+
if (elements.length) {
|
|
4285
|
+
states[serverHeadProviderId] = elements;
|
|
4286
|
+
} else {
|
|
4287
|
+
delete states[serverHeadProviderId];
|
|
4288
|
+
}
|
|
4289
|
+
commit();
|
|
4290
|
+
}
|
|
4226
4291
|
function collect() {
|
|
4227
4292
|
const title = titleCallback("");
|
|
4293
|
+
const serverHead = states[serverHeadProviderId] || [];
|
|
4294
|
+
const providerHead = Object.keys(states).filter((id) => id !== serverHeadProviderId).flatMap((id) => states[id]);
|
|
4228
4295
|
const defaults = {
|
|
4229
4296
|
...title ? { title: `<title data-inertia="">${title}</title>` } : {}
|
|
4230
4297
|
};
|
|
4231
|
-
const elements =
|
|
4298
|
+
const elements = serverHead.concat(providerHead).reduce((carry, element) => {
|
|
4232
4299
|
if (element.indexOf("<") === -1) {
|
|
4233
4300
|
return carry;
|
|
4234
4301
|
}
|
|
@@ -4237,7 +4304,7 @@ function createHeadManager(isServer3, titleCallback, onUpdate) {
|
|
|
4237
4304
|
carry.title = title2 ? `${title2[1]}${titleCallback(title2[2])}${title2[3]}` : element;
|
|
4238
4305
|
return carry;
|
|
4239
4306
|
}
|
|
4240
|
-
const match = element.match(/ data-inertia="[^"]
|
|
4307
|
+
const match = element.match(/ data-inertia=(["'])[^"']+\1/);
|
|
4241
4308
|
if (match) {
|
|
4242
4309
|
carry[match[0]] = element;
|
|
4243
4310
|
} else {
|
|
@@ -4253,6 +4320,7 @@ function createHeadManager(isServer3, titleCallback, onUpdate) {
|
|
|
4253
4320
|
commit();
|
|
4254
4321
|
return {
|
|
4255
4322
|
forceUpdate: commit,
|
|
4323
|
+
updateServerHead,
|
|
4256
4324
|
createProvider: function() {
|
|
4257
4325
|
const id = connect();
|
|
4258
4326
|
return {
|
|
@@ -4904,7 +4972,8 @@ function isContentEditableOrPrevented(event) {
|
|
|
4904
4972
|
}
|
|
4905
4973
|
function shouldIntercept(event) {
|
|
4906
4974
|
const isLink = event.currentTarget.tagName.toLowerCase() === "a";
|
|
4907
|
-
|
|
4975
|
+
const target = isLink ? event.currentTarget.target : "";
|
|
4976
|
+
return !(isContentEditableOrPrevented(event) || isLink && event.altKey || isLink && event.ctrlKey || isLink && event.metaKey || isLink && event.shiftKey || isLink && target !== "" && target !== "_self" || isLink && "button" in event && event.button !== 0);
|
|
4908
4977
|
}
|
|
4909
4978
|
function shouldNavigate(event) {
|
|
4910
4979
|
const isButton = event.currentTarget.tagName.toLowerCase() === "button";
|
|
@@ -4922,17 +4991,17 @@ var settings = {
|
|
|
4922
4991
|
trickle: true,
|
|
4923
4992
|
trickleSpeed: 200,
|
|
4924
4993
|
showSpinner: true,
|
|
4925
|
-
barSelector: '[role="bar"]',
|
|
4926
|
-
spinnerSelector: '[role="spinner"]',
|
|
4994
|
+
barSelector: '.bar, [role="bar"]',
|
|
4995
|
+
spinnerSelector: '.spinner, [role="spinner"]',
|
|
4927
4996
|
parent: "body",
|
|
4928
4997
|
color: "#29d",
|
|
4929
4998
|
includeCSS: true,
|
|
4930
4999
|
popover: null,
|
|
4931
5000
|
template: [
|
|
4932
|
-
'<div class="bar"
|
|
5001
|
+
'<div class="bar">',
|
|
4933
5002
|
'<div class="peg"></div>',
|
|
4934
5003
|
"</div>",
|
|
4935
|
-
'<div class="spinner"
|
|
5004
|
+
'<div class="spinner">',
|
|
4936
5005
|
'<div class="spinner-icon"></div>',
|
|
4937
5006
|
"</div>"
|
|
4938
5007
|
].join("")
|
|
@@ -4947,6 +5016,7 @@ var configure = (options) => {
|
|
|
4947
5016
|
}
|
|
4948
5017
|
progress2 = document.createElement("div");
|
|
4949
5018
|
progress2.id = baseComponentSelector;
|
|
5019
|
+
progress2.setAttribute("aria-hidden", "true");
|
|
4950
5020
|
progress2.innerHTML = settings.template;
|
|
4951
5021
|
if (usePopover) {
|
|
4952
5022
|
progress2.popover = "manual";
|
|
@@ -5502,6 +5572,7 @@ export {
|
|
|
5502
5572
|
partialReloadRequestsSomeProps,
|
|
5503
5573
|
progress,
|
|
5504
5574
|
resetFormFields,
|
|
5575
|
+
resolveServerHead,
|
|
5505
5576
|
resolveUrlMethodPairComponent,
|
|
5506
5577
|
router,
|
|
5507
5578
|
setupProgress,
|