@inertiajs/core 2.1.2 → 2.1.3

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 CHANGED
@@ -42,6 +42,7 @@ __export(index_exports, {
42
42
  router: () => router,
43
43
  setupProgress: () => setupProgress,
44
44
  shouldIntercept: () => shouldIntercept,
45
+ shouldNavigate: () => shouldNavigate,
45
46
  urlWithoutHash: () => urlWithoutHash
46
47
  });
47
48
  module.exports = __toCommonJS(index_exports);
@@ -656,12 +657,10 @@ var History = class {
656
657
  if (!window.history.state?.page) {
657
658
  return;
658
659
  }
659
- this.doReplaceState(
660
- {
661
- page: window.history.state.page,
662
- scrollRegions
663
- }
664
- );
660
+ this.doReplaceState({
661
+ page: window.history.state.page,
662
+ scrollRegions
663
+ });
665
664
  });
666
665
  });
667
666
  }
@@ -671,12 +670,10 @@ var History = class {
671
670
  if (!window.history.state?.page) {
672
671
  return;
673
672
  }
674
- this.doReplaceState(
675
- {
676
- page: window.history.state.page,
677
- documentScrollPosition: scrollRegion
678
- }
679
- );
673
+ this.doReplaceState({
674
+ page: window.history.state.page,
675
+ documentScrollPosition: scrollRegion
676
+ });
680
677
  });
681
678
  });
682
679
  }
@@ -997,7 +994,7 @@ var Polls = class {
997
994
  var polls = new Polls();
998
995
 
999
996
  // src/prefetched.ts
1000
- var import_es_toolkit = require("es-toolkit");
997
+ var import_lodash_es = require("lodash-es");
1001
998
 
1002
999
  // src/objectUtils.ts
1003
1000
  var objectsAreEqual = (obj1, obj2, excludeKeys) => {
@@ -1214,7 +1211,7 @@ var PrefetchedRequests = class {
1214
1211
  }) || null;
1215
1212
  }
1216
1213
  withoutPurposePrefetchHeader(params) {
1217
- const newParams = (0, import_es_toolkit.cloneDeep)(params);
1214
+ const newParams = (0, import_lodash_es.cloneDeep)(params);
1218
1215
  if (newParams.headers["Purpose"] === "prefetch") {
1219
1216
  delete newParams.headers["Purpose"];
1220
1217
  }
@@ -2112,7 +2109,7 @@ var Router = class {
2112
2109
  };
2113
2110
 
2114
2111
  // src/formObject.ts
2115
- var import_compat = require("es-toolkit/compat");
2112
+ var import_lodash_es2 = require("lodash-es");
2116
2113
  function undotKey(key) {
2117
2114
  if (!key.includes(".")) {
2118
2115
  return key;
@@ -2147,153 +2144,19 @@ function formDataToObject(source) {
2147
2144
  const path = parseKey(undotKey(key));
2148
2145
  if (path[path.length - 1] === "") {
2149
2146
  const arrayPath = path.slice(0, -1);
2150
- const existing = (0, import_compat.get)(form, arrayPath);
2147
+ const existing = (0, import_lodash_es2.get)(form, arrayPath);
2151
2148
  if (Array.isArray(existing)) {
2152
2149
  existing.push(value);
2153
2150
  } else {
2154
- (0, import_compat.set)(form, arrayPath, [value]);
2151
+ (0, import_lodash_es2.set)(form, arrayPath, [value]);
2155
2152
  }
2156
2153
  continue;
2157
2154
  }
2158
- (0, import_compat.set)(form, path, value);
2155
+ (0, import_lodash_es2.set)(form, path, value);
2159
2156
  }
2160
2157
  return form;
2161
2158
  }
2162
2159
 
2163
- // src/resetFormFields.ts
2164
- function isFormElement(element) {
2165
- return element instanceof HTMLInputElement || element instanceof HTMLSelectElement || element instanceof HTMLTextAreaElement;
2166
- }
2167
- function resetInputElement(input, defaultValues) {
2168
- const oldValue = input.value;
2169
- const oldChecked = input.checked;
2170
- switch (input.type.toLowerCase()) {
2171
- case "checkbox":
2172
- input.checked = defaultValues.includes(input.value);
2173
- break;
2174
- case "radio":
2175
- input.checked = defaultValues[0] === input.value;
2176
- break;
2177
- case "file":
2178
- input.value = "";
2179
- break;
2180
- case "button":
2181
- case "submit":
2182
- case "reset":
2183
- case "image":
2184
- break;
2185
- default:
2186
- input.value = defaultValues[0] !== null && defaultValues[0] !== void 0 ? String(defaultValues[0]) : "";
2187
- }
2188
- return input.value !== oldValue || input.checked !== oldChecked;
2189
- }
2190
- function resetSelectElement(select, defaultValues) {
2191
- const oldValue = select.value;
2192
- const oldSelectedOptions = Array.from(select.selectedOptions).map((opt) => opt.value);
2193
- if (select.multiple) {
2194
- const defaultStrings = defaultValues.map((value) => String(value));
2195
- Array.from(select.options).forEach((option) => {
2196
- option.selected = defaultStrings.includes(option.value);
2197
- });
2198
- } else {
2199
- select.value = defaultValues[0] !== void 0 ? String(defaultValues[0]) : "";
2200
- }
2201
- const newSelectedOptions = Array.from(select.selectedOptions).map((opt) => opt.value);
2202
- const hasChanged = select.multiple ? JSON.stringify(oldSelectedOptions.sort()) !== JSON.stringify(newSelectedOptions.sort()) : select.value !== oldValue;
2203
- return hasChanged;
2204
- }
2205
- function resetFormElement(element, defaultValues) {
2206
- if (element.disabled) {
2207
- if (element instanceof HTMLInputElement) {
2208
- const oldValue = element.value;
2209
- const oldChecked = element.checked;
2210
- switch (element.type.toLowerCase()) {
2211
- case "checkbox":
2212
- case "radio":
2213
- element.checked = element.defaultChecked;
2214
- return element.checked !== oldChecked;
2215
- case "file":
2216
- element.value = "";
2217
- return oldValue !== "";
2218
- case "button":
2219
- case "submit":
2220
- case "reset":
2221
- case "image":
2222
- return false;
2223
- default:
2224
- element.value = element.defaultValue;
2225
- return element.value !== oldValue;
2226
- }
2227
- } else if (element instanceof HTMLSelectElement) {
2228
- const oldSelectedOptions = Array.from(element.selectedOptions).map((opt) => opt.value);
2229
- Array.from(element.options).forEach((option) => {
2230
- option.selected = option.defaultSelected;
2231
- });
2232
- const newSelectedOptions = Array.from(element.selectedOptions).map((opt) => opt.value);
2233
- return JSON.stringify(oldSelectedOptions.sort()) !== JSON.stringify(newSelectedOptions.sort());
2234
- } else if (element instanceof HTMLTextAreaElement) {
2235
- const oldValue = element.value;
2236
- element.value = element.defaultValue;
2237
- return element.value !== oldValue;
2238
- }
2239
- return false;
2240
- }
2241
- if (element instanceof HTMLInputElement) {
2242
- return resetInputElement(element, defaultValues);
2243
- } else if (element instanceof HTMLSelectElement) {
2244
- return resetSelectElement(element, defaultValues);
2245
- } else if (element instanceof HTMLTextAreaElement) {
2246
- const oldValue = element.value;
2247
- element.value = defaultValues[0] !== void 0 ? String(defaultValues[0]) : "";
2248
- return element.value !== oldValue;
2249
- }
2250
- return false;
2251
- }
2252
- function resetFieldElements(elements, defaultValues) {
2253
- let hasChanged = false;
2254
- if (elements instanceof RadioNodeList || elements instanceof HTMLCollection) {
2255
- Array.from(elements).forEach((node, index) => {
2256
- if (node instanceof Element && isFormElement(node)) {
2257
- if (node instanceof HTMLInputElement && ["checkbox", "radio"].includes(node.type.toLowerCase())) {
2258
- if (resetFormElement(node, defaultValues)) {
2259
- hasChanged = true;
2260
- }
2261
- } else {
2262
- const indexedDefaultValues = defaultValues[index] !== void 0 ? [defaultValues[index]] : [defaultValues[0] ?? null].filter(Boolean);
2263
- if (resetFormElement(node, indexedDefaultValues)) {
2264
- hasChanged = true;
2265
- }
2266
- }
2267
- }
2268
- });
2269
- } else if (isFormElement(elements)) {
2270
- hasChanged = resetFormElement(elements, defaultValues);
2271
- }
2272
- return hasChanged;
2273
- }
2274
- function resetFormFields(formElement, defaults, fieldNames) {
2275
- if (!formElement) {
2276
- return;
2277
- }
2278
- if (!fieldNames || fieldNames.length === 0) {
2279
- const formData = new FormData(formElement);
2280
- const formElementNames = Array.from(formElement.elements).map((el) => isFormElement(el) ? el.name : "").filter(Boolean);
2281
- fieldNames = [.../* @__PURE__ */ new Set([...defaults.keys(), ...formData.keys(), ...formElementNames])];
2282
- }
2283
- let hasChanged = false;
2284
- fieldNames.forEach((fieldName) => {
2285
- const elements = formElement.elements.namedItem(fieldName);
2286
- if (elements) {
2287
- if (resetFieldElements(elements, defaults.getAll(fieldName))) {
2288
- hasChanged = true;
2289
- }
2290
- }
2291
- });
2292
- if (hasChanged) {
2293
- formElement.dispatchEvent(new Event("reset", { bubbles: true }));
2294
- }
2295
- }
2296
-
2297
2160
  // src/head.ts
2298
2161
  var Renderer = {
2299
2162
  buildDOMElement(tag) {
@@ -2406,6 +2269,16 @@ function createHeadManager(isServer2, titleCallback, onUpdate) {
2406
2269
  };
2407
2270
  }
2408
2271
 
2272
+ // src/navigationEvents.ts
2273
+ function shouldIntercept(event) {
2274
+ const isLink = event.currentTarget.tagName.toLowerCase() === "a";
2275
+ return !(event.target && (event?.target).isContentEditable || event.defaultPrevented || isLink && event.altKey || isLink && event.ctrlKey || isLink && event.metaKey || isLink && event.shiftKey || isLink && "button" in event && event.button !== 0);
2276
+ }
2277
+ function shouldNavigate(event) {
2278
+ const isButton = event.currentTarget.tagName.toLowerCase() === "button";
2279
+ return event.key === "Enter" || isButton && event.key === " ";
2280
+ }
2281
+
2409
2282
  // src/progress-component.ts
2410
2283
  var baseComponentSelector = "nprogress";
2411
2284
  var progress;
@@ -2740,10 +2613,138 @@ function setupProgress({
2740
2613
  progress_component_default.configure({ showSpinner, includeCSS, color });
2741
2614
  }
2742
2615
 
2743
- // src/shouldIntercept.ts
2744
- function shouldIntercept(event) {
2745
- const isLink = event.currentTarget.tagName.toLowerCase() === "a";
2746
- return !(event.target && (event?.target).isContentEditable || event.defaultPrevented || isLink && event.altKey || isLink && event.ctrlKey || isLink && event.metaKey || isLink && event.shiftKey || isLink && "button" in event && event.button !== 0);
2616
+ // src/resetFormFields.ts
2617
+ function isFormElement(element) {
2618
+ return element instanceof HTMLInputElement || element instanceof HTMLSelectElement || element instanceof HTMLTextAreaElement;
2619
+ }
2620
+ function resetInputElement(input, defaultValues) {
2621
+ const oldValue = input.value;
2622
+ const oldChecked = input.checked;
2623
+ switch (input.type.toLowerCase()) {
2624
+ case "checkbox":
2625
+ input.checked = defaultValues.includes(input.value);
2626
+ break;
2627
+ case "radio":
2628
+ input.checked = defaultValues[0] === input.value;
2629
+ break;
2630
+ case "file":
2631
+ input.value = "";
2632
+ break;
2633
+ case "button":
2634
+ case "submit":
2635
+ case "reset":
2636
+ case "image":
2637
+ break;
2638
+ default:
2639
+ input.value = defaultValues[0] !== null && defaultValues[0] !== void 0 ? String(defaultValues[0]) : "";
2640
+ }
2641
+ return input.value !== oldValue || input.checked !== oldChecked;
2642
+ }
2643
+ function resetSelectElement(select, defaultValues) {
2644
+ const oldValue = select.value;
2645
+ const oldSelectedOptions = Array.from(select.selectedOptions).map((opt) => opt.value);
2646
+ if (select.multiple) {
2647
+ const defaultStrings = defaultValues.map((value) => String(value));
2648
+ Array.from(select.options).forEach((option) => {
2649
+ option.selected = defaultStrings.includes(option.value);
2650
+ });
2651
+ } else {
2652
+ select.value = defaultValues[0] !== void 0 ? String(defaultValues[0]) : "";
2653
+ }
2654
+ const newSelectedOptions = Array.from(select.selectedOptions).map((opt) => opt.value);
2655
+ const hasChanged = select.multiple ? JSON.stringify(oldSelectedOptions.sort()) !== JSON.stringify(newSelectedOptions.sort()) : select.value !== oldValue;
2656
+ return hasChanged;
2657
+ }
2658
+ function resetFormElement(element, defaultValues) {
2659
+ if (element.disabled) {
2660
+ if (element instanceof HTMLInputElement) {
2661
+ const oldValue = element.value;
2662
+ const oldChecked = element.checked;
2663
+ switch (element.type.toLowerCase()) {
2664
+ case "checkbox":
2665
+ case "radio":
2666
+ element.checked = element.defaultChecked;
2667
+ return element.checked !== oldChecked;
2668
+ case "file":
2669
+ element.value = "";
2670
+ return oldValue !== "";
2671
+ case "button":
2672
+ case "submit":
2673
+ case "reset":
2674
+ case "image":
2675
+ return false;
2676
+ default:
2677
+ element.value = element.defaultValue;
2678
+ return element.value !== oldValue;
2679
+ }
2680
+ } else if (element instanceof HTMLSelectElement) {
2681
+ const oldSelectedOptions = Array.from(element.selectedOptions).map((opt) => opt.value);
2682
+ Array.from(element.options).forEach((option) => {
2683
+ option.selected = option.defaultSelected;
2684
+ });
2685
+ const newSelectedOptions = Array.from(element.selectedOptions).map((opt) => opt.value);
2686
+ return JSON.stringify(oldSelectedOptions.sort()) !== JSON.stringify(newSelectedOptions.sort());
2687
+ } else if (element instanceof HTMLTextAreaElement) {
2688
+ const oldValue = element.value;
2689
+ element.value = element.defaultValue;
2690
+ return element.value !== oldValue;
2691
+ }
2692
+ return false;
2693
+ }
2694
+ if (element instanceof HTMLInputElement) {
2695
+ return resetInputElement(element, defaultValues);
2696
+ } else if (element instanceof HTMLSelectElement) {
2697
+ return resetSelectElement(element, defaultValues);
2698
+ } else if (element instanceof HTMLTextAreaElement) {
2699
+ const oldValue = element.value;
2700
+ element.value = defaultValues[0] !== void 0 ? String(defaultValues[0]) : "";
2701
+ return element.value !== oldValue;
2702
+ }
2703
+ return false;
2704
+ }
2705
+ function resetFieldElements(elements, defaultValues) {
2706
+ let hasChanged = false;
2707
+ if (elements instanceof RadioNodeList || elements instanceof HTMLCollection) {
2708
+ Array.from(elements).forEach((node, index) => {
2709
+ if (node instanceof Element && isFormElement(node)) {
2710
+ if (node instanceof HTMLInputElement && ["checkbox", "radio"].includes(node.type.toLowerCase())) {
2711
+ if (resetFormElement(node, defaultValues)) {
2712
+ hasChanged = true;
2713
+ }
2714
+ } else {
2715
+ const indexedDefaultValues = defaultValues[index] !== void 0 ? [defaultValues[index]] : [defaultValues[0] ?? null].filter(Boolean);
2716
+ if (resetFormElement(node, indexedDefaultValues)) {
2717
+ hasChanged = true;
2718
+ }
2719
+ }
2720
+ }
2721
+ });
2722
+ } else if (isFormElement(elements)) {
2723
+ hasChanged = resetFormElement(elements, defaultValues);
2724
+ }
2725
+ return hasChanged;
2726
+ }
2727
+ function resetFormFields(formElement, defaults, fieldNames) {
2728
+ if (!formElement) {
2729
+ return;
2730
+ }
2731
+ if (!fieldNames || fieldNames.length === 0) {
2732
+ const formData = new FormData(formElement);
2733
+ const formElementNames = Array.from(formElement.elements).map((el) => isFormElement(el) ? el.name : "").filter(Boolean);
2734
+ fieldNames = [.../* @__PURE__ */ new Set([...defaults.keys(), ...formData.keys(), ...formElementNames])];
2735
+ }
2736
+ let hasChanged = false;
2737
+ fieldNames.forEach((fieldName) => {
2738
+ const elements = formElement.elements.namedItem(fieldName);
2739
+ if (elements) {
2740
+ if (resetFieldElements(elements, defaults.getAll(fieldName))) {
2741
+ hasChanged = true;
2742
+ }
2743
+ }
2744
+ });
2745
+ if (hasChanged) {
2746
+ formElement.dispatchEvent(new Event("reset", { bubbles: true }));
2747
+ }
2747
2748
  }
2748
2749
 
2749
2750
  // src/index.ts