unpoly-rails 3.1.1 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,7 +5,7 @@
5
5
  /***/ (() => {
6
6
 
7
7
  window.up = {
8
- version: '3.1.1'
8
+ version: '3.2.0'
9
9
  };
10
10
 
11
11
 
@@ -721,6 +721,11 @@ up.util = (function () {
721
721
  let unicodeEscape = (char) => "\\u" + char.charCodeAt(0).toString(16).padStart(4, '0');
722
722
  return string.replace(/[^\x00-\x7F]/g, unicodeEscape);
723
723
  }
724
+ function variant(source, changes = {}) {
725
+ let variant = Object.create(source);
726
+ Object.assign(variant, changes);
727
+ return variant;
728
+ }
724
729
  return {
725
730
  parseURL,
726
731
  normalizeURL,
@@ -818,6 +823,7 @@ up.util = (function () {
818
823
  negate,
819
824
  memoizeMethod,
820
825
  safeStringifyJSON,
826
+ variant,
821
827
  };
822
828
  })();
823
829
 
@@ -1586,10 +1592,7 @@ up.Record = class Record {
1586
1592
  return u.pick(source, this.keys());
1587
1593
  }
1588
1594
  [u.copy.key]() {
1589
- return this.variant();
1590
- }
1591
- variant(changes = {}) {
1592
- return new this.constructor(u.merge(this.attributes(), changes));
1595
+ return u.variant(this);
1593
1596
  }
1594
1597
  [u.isEqual.key](other) {
1595
1598
  return (this.constructor === other.constructor) && u.isEqual(this.attributes(), other.attributes());
@@ -1761,9 +1764,6 @@ up.Change = class Change {
1761
1764
  constructor(options) {
1762
1765
  this.options = options;
1763
1766
  }
1764
- cannotMatch(reason) {
1765
- throw new up.CannotMatch(reason);
1766
- }
1767
1767
  execute() {
1768
1768
  throw new up.NotImplemented();
1769
1769
  }
@@ -1778,6 +1778,9 @@ up.Change = class Change {
1778
1778
  return newValue;
1779
1779
  }
1780
1780
  }
1781
+ deriveFailOptions() {
1782
+ return up.RenderOptions.deriveFailOptions(this.options);
1783
+ }
1781
1784
  };
1782
1785
 
1783
1786
 
@@ -1794,33 +1797,34 @@ up.Change.Addition = class Addition extends up.Change {
1794
1797
  this.acceptLayer = options.acceptLayer;
1795
1798
  this.dismissLayer = options.dismissLayer;
1796
1799
  this.eventPlans = options.eventPlans || [];
1800
+ this.response = options.meta?.response;
1797
1801
  }
1798
1802
  handleLayerChangeRequests() {
1799
1803
  if (this.layer.isOverlay()) {
1800
1804
  this.tryAcceptLayerFromServer();
1801
1805
  this.abortWhenLayerClosed();
1802
- this.layer.tryAcceptForLocation();
1806
+ this.layer.tryAcceptForLocation(this.responseOption());
1803
1807
  this.abortWhenLayerClosed();
1804
1808
  this.tryDismissLayerFromServer();
1805
1809
  this.abortWhenLayerClosed();
1806
- this.layer.tryDismissForLocation();
1810
+ this.layer.tryDismissForLocation(this.responseOption());
1807
1811
  this.abortWhenLayerClosed();
1808
1812
  }
1809
1813
  this.layer.asCurrent(() => {
1810
1814
  for (let eventPlan of this.eventPlans) {
1811
- up.emit(eventPlan);
1815
+ up.emit({ ...eventPlan, ...this.responseOption() });
1812
1816
  this.abortWhenLayerClosed();
1813
1817
  }
1814
1818
  });
1815
1819
  }
1816
1820
  tryAcceptLayerFromServer() {
1817
1821
  if (u.isDefined(this.acceptLayer) && this.layer.isOverlay()) {
1818
- this.layer.accept(this.acceptLayer);
1822
+ this.layer.accept(this.acceptLayer, this.responseOption());
1819
1823
  }
1820
1824
  }
1821
1825
  tryDismissLayerFromServer() {
1822
1826
  if (u.isDefined(this.dismissLayer) && this.layer.isOverlay()) {
1823
- this.layer.dismiss(this.dismissLayer);
1827
+ this.layer.dismiss(this.dismissLayer, this.responseOption());
1824
1828
  }
1825
1829
  }
1826
1830
  abortWhenLayerClosed() {
@@ -1847,6 +1851,9 @@ up.Change.Addition = class Addition extends up.Change {
1847
1851
  this.setTime(options);
1848
1852
  this.setETag(options);
1849
1853
  }
1854
+ responseOption() {
1855
+ return { response: this.response };
1856
+ }
1850
1857
  };
1851
1858
 
1852
1859
 
@@ -1903,6 +1910,10 @@ up.RenderJob = (_a = class RenderJob {
1903
1910
  let onRequest = (request) => this.handleAbortOption(request);
1904
1911
  this.change = new up.Change.FromURL({ ...this.options, onRequest });
1905
1912
  }
1913
+ else if (this.options.response) {
1914
+ this.change = new up.Change.FromResponse(this.options);
1915
+ this.handleAbortOption(null);
1916
+ }
1906
1917
  else {
1907
1918
  this.change = new up.Change.FromContent(this.options);
1908
1919
  this.handleAbortOption(null);
@@ -2036,7 +2047,7 @@ up.Change.OpenLayer = class OpenLayer extends up.Change.Addition {
2036
2047
  this.content = responseDoc.select(this.target);
2037
2048
  }
2038
2049
  if (!this.content || this.baseLayer.isClosed()) {
2039
- throw this.cannotMatch();
2050
+ throw new up.CannotMatch();
2040
2051
  }
2041
2052
  onApplicable();
2042
2053
  up.puts('up.render()', `Opening element "${this.target}" in new overlay`);
@@ -2352,7 +2363,7 @@ up.Change.UpdateLayer = (_a = class UpdateLayer extends up.Change.Addition {
2352
2363
  return true;
2353
2364
  }
2354
2365
  else if (!step.maybe) {
2355
- throw this.cannotMatch(`Could not find element "${this.target}" in current page`);
2366
+ throw new up.CannotMatch();
2356
2367
  }
2357
2368
  });
2358
2369
  this.resolveOldNesting();
@@ -2368,7 +2379,7 @@ up.Change.UpdateLayer = (_a = class UpdateLayer extends up.Change.Addition {
2368
2379
  return true;
2369
2380
  }
2370
2381
  else if (!step.maybe) {
2371
- throw this.cannotMatch(`Could not find element "${this.target}" in server response`);
2382
+ throw new up.CannotMatch();
2372
2383
  }
2373
2384
  });
2374
2385
  this.resolveOldNesting();
@@ -2471,6 +2482,7 @@ up.Change.CloseLayer = class CloseLayer extends up.Change.Removal {
2471
2482
  this.origin = options.origin;
2472
2483
  this.value = options.value;
2473
2484
  this.preventable = options.preventable ?? true;
2485
+ this.response = options.response;
2474
2486
  }
2475
2487
  execute() {
2476
2488
  if (!this.layer.isOpen()) {
@@ -2512,7 +2524,8 @@ up.Change.CloseLayer = class CloseLayer extends up.Change.Removal {
2512
2524
  return up.event.build(name, {
2513
2525
  layer: this.layer,
2514
2526
  value: this.value,
2515
- origin: this.origin
2527
+ origin: this.origin,
2528
+ response: this.response,
2516
2529
  });
2517
2530
  }
2518
2531
  handleFocus(formerParent) {
@@ -2528,142 +2541,6 @@ up.Change.CloseLayer = class CloseLayer extends up.Change.Removal {
2528
2541
  /* 31 */
2529
2542
  /***/ (() => {
2530
2543
 
2531
- var _a;
2532
- const u = up.util;
2533
- up.Change.FromContent = (_a = class FromContent extends up.Change {
2534
- constructor(options) {
2535
- super(options);
2536
- this.layers = u.filter(up.layer.getAll(this.options), this.isRenderableLayer);
2537
- this.origin = this.options.origin;
2538
- this.preview = this.options.preview;
2539
- this.mode = this.options.mode;
2540
- if (this.origin) {
2541
- this.originLayer = up.layer.get(this.origin);
2542
- }
2543
- }
2544
- isRenderableLayer(layer) {
2545
- return (layer === 'new') || layer.isOpen();
2546
- }
2547
- getPlans() {
2548
- var _a;
2549
- let plans = [];
2550
- if (this.options.fragment) {
2551
- (_a = this.options).target || (_a.target = this.getResponseDoc().rootSelector());
2552
- }
2553
- this.expandIntoPlans(plans, this.layers, this.options.target);
2554
- this.expandIntoPlans(plans, this.layers, this.options.fallback);
2555
- return plans;
2556
- }
2557
- expandIntoPlans(plans, layers, targets) {
2558
- for (let layer of layers) {
2559
- for (let target of this.expandTargets(targets, layer)) {
2560
- const props = { ...this.options, target, layer, defaultPlacement: this.defaultPlacement() };
2561
- const change = layer === 'new' ? new up.Change.OpenLayer(props) : new up.Change.UpdateLayer(props);
2562
- plans.push(change);
2563
- }
2564
- }
2565
- }
2566
- expandTargets(targets, layer) {
2567
- return up.fragment.expandTargets(targets, { layer, mode: this.mode, origin: this.origin });
2568
- }
2569
- execute() {
2570
- if (this.options.preload) {
2571
- return Promise.resolve();
2572
- }
2573
- return this.seekPlan(this.executePlan.bind(this)) || this.cannotMatchPostflightTarget();
2574
- }
2575
- executePlan(matchedPlan) {
2576
- let result = matchedPlan.execute(this.getResponseDoc(), this.onPlanApplicable.bind(this, matchedPlan));
2577
- result.options = this.options;
2578
- return result;
2579
- }
2580
- onPlanApplicable(plan) {
2581
- let primaryPlan = this.getPlans()[0];
2582
- if (plan !== primaryPlan) {
2583
- up.puts('up.render()', 'Could not match primary target "%s". Updating a fallback target "%s".', primaryPlan.target, plan.target);
2584
- }
2585
- }
2586
- getResponseDoc() {
2587
- if (this.preview)
2588
- return;
2589
- const docOptions = u.pick(this.options, [
2590
- 'target',
2591
- 'content',
2592
- 'fragment',
2593
- 'document',
2594
- 'html',
2595
- 'cspNonces',
2596
- 'origin',
2597
- ]);
2598
- up.migrate.handleResponseDocOptions?.(docOptions);
2599
- if (this.defaultPlacement() === 'content') {
2600
- docOptions.target = this.firstExpandedTarget(docOptions.target);
2601
- }
2602
- return new up.ResponseDoc(docOptions);
2603
- }
2604
- defaultPlacement() {
2605
- if (!this.options.document && !this.options.fragment) {
2606
- return 'content';
2607
- }
2608
- }
2609
- firstExpandedTarget(target) {
2610
- return this.expandTargets(target || ':main', this.layers[0])[0];
2611
- }
2612
- getPreflightProps(opts = {}) {
2613
- const getPlanProps = plan => plan.getPreflightProps();
2614
- return this.seekPlan(getPlanProps) || opts.optional || this.cannotMatchPreflightTarget();
2615
- }
2616
- cannotMatchPreflightTarget() {
2617
- this.cannotMatchTarget('Could not find target in current page');
2618
- }
2619
- cannotMatchPostflightTarget() {
2620
- this.cannotMatchTarget('Could not find common target in current page and response');
2621
- }
2622
- cannotMatchTarget(reason) {
2623
- if (this.getPlans().length) {
2624
- const planTargets = u.uniq(u.map(this.getPlans(), 'target'));
2625
- const humanizedLayerOption = up.layer.optionToString(this.options.layer);
2626
- up.fail(reason + " (tried selectors %o in %s)", planTargets, humanizedLayerOption);
2627
- }
2628
- else if (this.layers.length) {
2629
- if (this.options.failPrefixForced) {
2630
- up.fail('No target selector given for failed responses (https://unpoly.com/failed-responses)');
2631
- }
2632
- else {
2633
- up.fail('No target selector given');
2634
- }
2635
- }
2636
- else {
2637
- up.fail('Layer %o does not exist', this.options.layer);
2638
- }
2639
- }
2640
- seekPlan(fn) {
2641
- for (let plan of this.getPlans()) {
2642
- try {
2643
- return fn(plan);
2644
- }
2645
- catch (error) {
2646
- if (!(error instanceof up.CannotMatch)) {
2647
- throw error;
2648
- }
2649
- }
2650
- }
2651
- }
2652
- },
2653
- (() => {
2654
- u.memoizeMethod(_a.prototype, [
2655
- 'getPlans',
2656
- 'getResponseDoc',
2657
- 'getPreflightProps',
2658
- ]);
2659
- })(),
2660
- _a);
2661
-
2662
-
2663
- /***/ }),
2664
- /* 32 */
2665
- /***/ (() => {
2666
-
2667
2544
  var _a;
2668
2545
  const u = up.util;
2669
2546
  up.Change.FromURL = (_a = class FromURL extends up.Change {
@@ -2688,9 +2565,6 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
2688
2565
  }
2689
2566
  return u.always(this.request, responseOrError => this.onRequestSettled(responseOrError));
2690
2567
  }
2691
- deriveFailOptions() {
2692
- return up.RenderOptions.deriveFailOptions(this.options);
2693
- }
2694
2568
  newPageReason() {
2695
2569
  if (u.isCrossOrigin(this.options.url)) {
2696
2570
  return 'Loading cross-origin content in new page';
@@ -2724,7 +2598,41 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
2724
2598
  }
2725
2599
  }
2726
2600
  onRequestSettledWithResponse(response) {
2727
- this.response = response;
2601
+ return new up.Change.FromResponse({ ...this.options, response }).execute();
2602
+ }
2603
+ onRequestSettledWithError(error) {
2604
+ if (error instanceof up.Offline) {
2605
+ this.request.emit('up:fragment:offline', {
2606
+ callback: this.options.onOffline,
2607
+ renderOptions: this.options,
2608
+ retry: (retryOptions) => up.render({ ...this.options, ...retryOptions }),
2609
+ log: ['Cannot load fragment from %s: %s', this.request.description, error.reason],
2610
+ });
2611
+ }
2612
+ throw error;
2613
+ }
2614
+ },
2615
+ (() => {
2616
+ u.memoizeMethod(_a.prototype, [
2617
+ 'getRequestAttrs',
2618
+ ]);
2619
+ })(),
2620
+ _a);
2621
+
2622
+
2623
+ /***/ }),
2624
+ /* 32 */
2625
+ /***/ (() => {
2626
+
2627
+ var _a;
2628
+ const u = up.util;
2629
+ up.Change.FromResponse = (_a = class FromResponse extends up.Change {
2630
+ constructor(options) {
2631
+ super(options);
2632
+ this.response = options.response;
2633
+ this.request = this.response.request;
2634
+ }
2635
+ execute() {
2728
2636
  if (up.fragment.config.skipResponse(this.loadedEventProps())) {
2729
2637
  this.skip();
2730
2638
  }
@@ -2736,40 +2644,12 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
2736
2644
  skip: () => this.skip()
2737
2645
  });
2738
2646
  }
2739
- let fail = u.evalOption(this.options.fail, this.response) ?? !response.ok;
2647
+ let fail = u.evalOption(this.options.fail, this.response) ?? !this.response.ok;
2740
2648
  if (fail) {
2741
2649
  throw this.updateContentFromResponse(this.deriveFailOptions());
2742
2650
  }
2743
2651
  return this.updateContentFromResponse(this.options);
2744
2652
  }
2745
- compilerPassMeta() {
2746
- return u.pick(this.loadedEventProps(), [
2747
- 'revalidating',
2748
- 'response'
2749
- ]);
2750
- }
2751
- loadedEventProps() {
2752
- const { expiredResponse } = this.options;
2753
- return {
2754
- request: this.request,
2755
- response: this.response,
2756
- renderOptions: this.options,
2757
- revalidating: !!expiredResponse,
2758
- expiredResponse,
2759
- };
2760
- }
2761
- onRequestSettledWithError(error) {
2762
- if (error instanceof up.Offline) {
2763
- this.request.emit('up:fragment:offline', {
2764
- callback: this.options.onOffline,
2765
- response: this.response,
2766
- renderOptions: this.options,
2767
- retry: (retryOptions) => up.render({ ...this.options, ...retryOptions }),
2768
- log: ['Cannot load fragment from %s: %s', this.request.description, error.reason],
2769
- });
2770
- }
2771
- throw error;
2772
- }
2773
2653
  skip() {
2774
2654
  up.puts('up.render()', 'Skipping ' + this.response.description);
2775
2655
  this.options.target = ':none';
@@ -2818,6 +2698,22 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
2818
2698
  }
2819
2699
  return renderResult;
2820
2700
  }
2701
+ loadedEventProps() {
2702
+ const { expiredResponse } = this.options;
2703
+ return {
2704
+ request: this.request,
2705
+ response: this.response,
2706
+ renderOptions: this.options,
2707
+ revalidating: !!expiredResponse,
2708
+ expiredResponse,
2709
+ };
2710
+ }
2711
+ compilerPassMeta() {
2712
+ return u.pick(this.loadedEventProps(), [
2713
+ 'revalidating',
2714
+ 'response'
2715
+ ]);
2716
+ }
2821
2717
  augmentOptionsFromResponse(renderOptions) {
2822
2718
  const responseURL = this.response.url;
2823
2719
  let serverLocation = responseURL;
@@ -2844,7 +2740,7 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
2844
2740
  renderOptions.acceptLayer = this.response.acceptLayer;
2845
2741
  renderOptions.dismissLayer = this.response.dismissLayer;
2846
2742
  renderOptions.document = this.response.text;
2847
- if (!renderOptions.document) {
2743
+ if (this.response.none) {
2848
2744
  renderOptions.target = ':none';
2849
2745
  }
2850
2746
  renderOptions.context = u.merge(renderOptions.context, this.response.context);
@@ -2855,7 +2751,6 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
2855
2751
  },
2856
2752
  (() => {
2857
2753
  u.memoizeMethod(_a.prototype, [
2858
- 'getRequestAttrs',
2859
2754
  'loadedEventProps',
2860
2755
  ]);
2861
2756
  })(),
@@ -2866,6 +2761,144 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
2866
2761
  /* 33 */
2867
2762
  /***/ (() => {
2868
2763
 
2764
+ var _a;
2765
+ const u = up.util;
2766
+ up.Change.FromContent = (_a = class FromContent extends up.Change {
2767
+ constructor(options) {
2768
+ super(options);
2769
+ this.layers = u.filter(up.layer.getAll(this.options), this.isRenderableLayer);
2770
+ this.origin = this.options.origin;
2771
+ this.preview = this.options.preview;
2772
+ this.mode = this.options.mode;
2773
+ if (this.origin) {
2774
+ this.originLayer = up.layer.get(this.origin);
2775
+ }
2776
+ }
2777
+ isRenderableLayer(layer) {
2778
+ return (layer === 'new') || layer.isOpen();
2779
+ }
2780
+ getPlans() {
2781
+ var _a;
2782
+ let plans = [];
2783
+ if (this.options.fragment) {
2784
+ (_a = this.options).target || (_a.target = this.getResponseDoc().rootSelector());
2785
+ }
2786
+ this.expandIntoPlans(plans, this.layers, this.options.target);
2787
+ this.expandIntoPlans(plans, this.layers, this.options.fallback);
2788
+ return plans;
2789
+ }
2790
+ expandIntoPlans(plans, layers, targets) {
2791
+ for (let layer of layers) {
2792
+ for (let target of this.expandTargets(targets, layer)) {
2793
+ const props = { ...this.options, target, layer, defaultPlacement: this.defaultPlacement() };
2794
+ const change = layer === 'new' ? new up.Change.OpenLayer(props) : new up.Change.UpdateLayer(props);
2795
+ plans.push(change);
2796
+ }
2797
+ }
2798
+ }
2799
+ expandTargets(targets, layer) {
2800
+ return up.fragment.expandTargets(targets, { layer, mode: this.mode, origin: this.origin });
2801
+ }
2802
+ execute() {
2803
+ if (this.options.preload) {
2804
+ return Promise.resolve();
2805
+ }
2806
+ return this.seekPlan(this.executePlan.bind(this)) || this.cannotMatchPostflightTarget();
2807
+ }
2808
+ executePlan(matchedPlan) {
2809
+ let result = matchedPlan.execute(this.getResponseDoc(), this.onPlanApplicable.bind(this, matchedPlan));
2810
+ result.options = this.options;
2811
+ return result;
2812
+ }
2813
+ onPlanApplicable(plan) {
2814
+ let primaryPlan = this.getPlans()[0];
2815
+ if (plan !== primaryPlan) {
2816
+ up.puts('up.render()', 'Could not match primary target "%s". Updating a fallback target "%s".', primaryPlan.target, plan.target);
2817
+ }
2818
+ }
2819
+ getResponseDoc() {
2820
+ if (this.preview)
2821
+ return;
2822
+ const docOptions = u.pick(this.options, [
2823
+ 'target',
2824
+ 'content',
2825
+ 'fragment',
2826
+ 'document',
2827
+ 'html',
2828
+ 'cspNonces',
2829
+ 'origin',
2830
+ ]);
2831
+ up.migrate.handleResponseDocOptions?.(docOptions);
2832
+ if (this.defaultPlacement() === 'content') {
2833
+ docOptions.target = this.firstExpandedTarget(docOptions.target);
2834
+ }
2835
+ return new up.ResponseDoc(docOptions);
2836
+ }
2837
+ defaultPlacement() {
2838
+ if (!this.options.document && !this.options.fragment) {
2839
+ return 'content';
2840
+ }
2841
+ }
2842
+ firstExpandedTarget(target) {
2843
+ return this.expandTargets(target || ':main', this.layers[0])[0];
2844
+ }
2845
+ getPreflightProps(opts = {}) {
2846
+ const getPlanProps = plan => plan.getPreflightProps();
2847
+ return this.seekPlan(getPlanProps) || opts.optional || this.cannotMatchPreflightTarget();
2848
+ }
2849
+ cannotMatchPreflightTarget() {
2850
+ this.cannotMatchTarget('Could not find target in current page');
2851
+ }
2852
+ cannotMatchPostflightTarget() {
2853
+ this.cannotMatchTarget('Could not find common target in current page and response');
2854
+ }
2855
+ cannotMatchTarget(reason) {
2856
+ let message;
2857
+ if (this.getPlans().length) {
2858
+ const planTargets = u.uniq(u.map(this.getPlans(), 'target'));
2859
+ const humanizedLayerOption = up.layer.optionToString(this.options.layer);
2860
+ message = [reason + " (tried selectors %o in %s)", planTargets, humanizedLayerOption];
2861
+ }
2862
+ else if (this.layers.length) {
2863
+ if (this.options.failPrefixForced) {
2864
+ message = 'No target selector given for failed responses (https://unpoly.com/failed-responses)';
2865
+ }
2866
+ else {
2867
+ message = 'No target selector given';
2868
+ }
2869
+ }
2870
+ else {
2871
+ message = 'Could not find a layer to render in. You may have passed a non-existing layer reference, or a detached element.';
2872
+ }
2873
+ throw new up.CannotMatch(message);
2874
+ }
2875
+ seekPlan(fn) {
2876
+ for (let plan of this.getPlans()) {
2877
+ try {
2878
+ return fn(plan);
2879
+ }
2880
+ catch (error) {
2881
+ if (!(error instanceof up.CannotMatch)) {
2882
+ throw error;
2883
+ }
2884
+ }
2885
+ }
2886
+ }
2887
+ },
2888
+ (() => {
2889
+ u.memoizeMethod(_a.prototype, [
2890
+ 'getPlans',
2891
+ 'getResponseDoc',
2892
+ 'getPreflightProps',
2893
+ ]);
2894
+ })(),
2895
+ _a);
2896
+
2897
+
2898
+ /***/ }),
2899
+ /* 34 */
2900
+ /***/ (() => {
2901
+
2869
2902
  const u = up.util;
2870
2903
  up.CompilerPass = class CompilerPass {
2871
2904
  constructor(root, compilers, { layer, data, dataMap, meta }) {
@@ -2974,7 +3007,7 @@ up.CompilerPass = class CompilerPass {
2974
3007
 
2975
3008
 
2976
3009
  /***/ }),
2977
- /* 34 */
3010
+ /* 35 */
2978
3011
  /***/ (() => {
2979
3012
 
2980
3013
  const u = up.util;
@@ -3085,7 +3118,7 @@ up.CSSTransition = class CSSTransition {
3085
3118
 
3086
3119
 
3087
3120
  /***/ }),
3088
- /* 35 */
3121
+ /* 36 */
3089
3122
  /***/ (() => {
3090
3123
 
3091
3124
  const u = up.util;
@@ -3127,7 +3160,7 @@ up.DestructorPass = class DestructorPass {
3127
3160
 
3128
3161
 
3129
3162
  /***/ }),
3130
- /* 36 */
3163
+ /* 37 */
3131
3164
  /***/ (() => {
3132
3165
 
3133
3166
  const u = up.util;
@@ -3226,7 +3259,7 @@ up.EventEmitter = class EventEmitter extends up.Record {
3226
3259
 
3227
3260
 
3228
3261
  /***/ }),
3229
- /* 37 */
3262
+ /* 38 */
3230
3263
  /***/ (() => {
3231
3264
 
3232
3265
  const u = up.util;
@@ -3328,7 +3361,7 @@ up.EventListener = class EventListener extends up.Record {
3328
3361
 
3329
3362
 
3330
3363
  /***/ }),
3331
- /* 38 */
3364
+ /* 39 */
3332
3365
  /***/ (() => {
3333
3366
 
3334
3367
  const u = up.util;
@@ -3400,7 +3433,7 @@ up.EventListenerGroup = class EventListenerGroup extends up.Record {
3400
3433
 
3401
3434
 
3402
3435
  /***/ }),
3403
- /* 39 */
3436
+ /* 40 */
3404
3437
  /***/ (() => {
3405
3438
 
3406
3439
  const u = up.util;
@@ -3516,7 +3549,7 @@ up.FieldWatcher = class FieldWatcher {
3516
3549
 
3517
3550
 
3518
3551
  /***/ }),
3519
- /* 40 */
3552
+ /* 41 */
3520
3553
  /***/ (() => {
3521
3554
 
3522
3555
  const u = up.util;
@@ -3690,7 +3723,7 @@ up.FormValidator = class FormValidator {
3690
3723
 
3691
3724
 
3692
3725
  /***/ }),
3693
- /* 41 */
3726
+ /* 42 */
3694
3727
  /***/ (() => {
3695
3728
 
3696
3729
  up.FocusCapsule = class FocusCapsule {
@@ -3720,7 +3753,7 @@ up.FocusCapsule = class FocusCapsule {
3720
3753
 
3721
3754
 
3722
3755
  /***/ }),
3723
- /* 42 */
3756
+ /* 43 */
3724
3757
  /***/ (() => {
3725
3758
 
3726
3759
  const u = up.util;
@@ -3784,7 +3817,7 @@ up.FragmentProcessor = class FragmentProcessor extends up.Record {
3784
3817
 
3785
3818
 
3786
3819
  /***/ }),
3787
- /* 43 */
3820
+ /* 44 */
3788
3821
  /***/ (() => {
3789
3822
 
3790
3823
  const DESCENDANT_SELECTOR = /^([^ >+(]+) (.+)$/;
@@ -3827,7 +3860,7 @@ up.FragmentFinder = class FragmentFinder {
3827
3860
 
3828
3861
 
3829
3862
  /***/ }),
3830
- /* 44 */
3863
+ /* 45 */
3831
3864
  /***/ (() => {
3832
3865
 
3833
3866
  const u = up.util;
@@ -3911,7 +3944,7 @@ up.FragmentFocus = class FragmentFocus extends up.FragmentProcessor {
3911
3944
 
3912
3945
 
3913
3946
  /***/ }),
3914
- /* 45 */
3947
+ /* 46 */
3915
3948
  /***/ (() => {
3916
3949
 
3917
3950
  const e = up.element;
@@ -4018,7 +4051,7 @@ up.FragmentPolling = class FragmentPolling {
4018
4051
 
4019
4052
 
4020
4053
  /***/ }),
4021
- /* 46 */
4054
+ /* 47 */
4022
4055
  /***/ (() => {
4023
4056
 
4024
4057
  const u = up.util;
@@ -4082,7 +4115,7 @@ up.FragmentScrolling = class FragmentScrolling extends up.FragmentProcessor {
4082
4115
 
4083
4116
 
4084
4117
  /***/ }),
4085
- /* 47 */
4118
+ /* 48 */
4086
4119
  /***/ (() => {
4087
4120
 
4088
4121
  const e = up.element;
@@ -4305,7 +4338,7 @@ up.Layer = class Layer extends up.Record {
4305
4338
 
4306
4339
 
4307
4340
  /***/ }),
4308
- /* 48 */
4341
+ /* 49 */
4309
4342
  /***/ (() => {
4310
4343
 
4311
4344
  const e = up.element;
@@ -4496,20 +4529,20 @@ up.Layer.Overlay = class Overlay extends up.Layer {
4496
4529
  }
4497
4530
  return this.on(eventTypes, event => {
4498
4531
  event.preventDefault();
4499
- closeFn.call(this, event);
4532
+ closeFn.call(this, event, { response: event.response });
4500
4533
  });
4501
4534
  }
4502
- tryAcceptForLocation() {
4503
- this.tryCloseForLocation(this.acceptLocation, this.accept);
4535
+ tryAcceptForLocation(options) {
4536
+ this.tryCloseForLocation(this.acceptLocation, this.accept, options);
4504
4537
  }
4505
- tryDismissForLocation() {
4506
- this.tryCloseForLocation(this.dismissLocation, this.dismiss);
4538
+ tryDismissForLocation(options) {
4539
+ this.tryCloseForLocation(this.dismissLocation, this.dismiss, options);
4507
4540
  }
4508
- tryCloseForLocation(urlPattern, closeFn) {
4541
+ tryCloseForLocation(urlPattern, closeFn, options) {
4509
4542
  let location, resolution;
4510
4543
  if (urlPattern && (location = this.location) && (resolution = urlPattern.recognize(location))) {
4511
4544
  const closeValue = { ...resolution, location };
4512
- closeFn.call(this, closeValue);
4545
+ closeFn.call(this, closeValue, options);
4513
4546
  }
4514
4547
  }
4515
4548
  teardownHandlers() {
@@ -4580,7 +4613,7 @@ up.Layer.Overlay = class Overlay extends up.Layer {
4580
4613
 
4581
4614
 
4582
4615
  /***/ }),
4583
- /* 49 */
4616
+ /* 50 */
4584
4617
  /***/ (() => {
4585
4618
 
4586
4619
  up.Layer.OverlayWithTether = class OverlayWithTether extends up.Layer.Overlay {
@@ -4617,7 +4650,7 @@ up.Layer.OverlayWithTether = class OverlayWithTether extends up.Layer.Overlay {
4617
4650
 
4618
4651
 
4619
4652
  /***/ }),
4620
- /* 50 */
4653
+ /* 51 */
4621
4654
  /***/ (() => {
4622
4655
 
4623
4656
  var _a;
@@ -4655,7 +4688,7 @@ up.Layer.OverlayWithViewport = (_a = class OverlayWithViewport extends up.Layer.
4655
4688
 
4656
4689
 
4657
4690
  /***/ }),
4658
- /* 51 */
4691
+ /* 52 */
4659
4692
  /***/ (() => {
4660
4693
 
4661
4694
  var _a;
@@ -4701,7 +4734,7 @@ up.Layer.Root = (_a = class Root extends up.Layer {
4701
4734
 
4702
4735
 
4703
4736
  /***/ }),
4704
- /* 52 */
4737
+ /* 53 */
4705
4738
  /***/ (() => {
4706
4739
 
4707
4740
  var _a;
@@ -4712,7 +4745,7 @@ up.Layer.Modal = (_a = class Modal extends up.Layer.OverlayWithViewport {
4712
4745
 
4713
4746
 
4714
4747
  /***/ }),
4715
- /* 53 */
4748
+ /* 54 */
4716
4749
  /***/ (() => {
4717
4750
 
4718
4751
  var _a;
@@ -4723,7 +4756,7 @@ up.Layer.Popup = (_a = class Popup extends up.Layer.OverlayWithTether {
4723
4756
 
4724
4757
 
4725
4758
  /***/ }),
4726
- /* 54 */
4759
+ /* 55 */
4727
4760
  /***/ (() => {
4728
4761
 
4729
4762
  var _a;
@@ -4734,7 +4767,7 @@ up.Layer.Drawer = (_a = class Drawer extends up.Layer.OverlayWithViewport {
4734
4767
 
4735
4768
 
4736
4769
  /***/ }),
4737
- /* 55 */
4770
+ /* 56 */
4738
4771
  /***/ (() => {
4739
4772
 
4740
4773
  var _a;
@@ -4745,7 +4778,7 @@ up.Layer.Cover = (_a = class Cover extends up.Layer.OverlayWithViewport {
4745
4778
 
4746
4779
 
4747
4780
  /***/ }),
4748
- /* 56 */
4781
+ /* 57 */
4749
4782
  /***/ (() => {
4750
4783
 
4751
4784
  const u = up.util;
@@ -4835,7 +4868,7 @@ up.LayerLookup = class LayerLookup {
4835
4868
 
4836
4869
 
4837
4870
  /***/ }),
4838
- /* 57 */
4871
+ /* 58 */
4839
4872
  /***/ (() => {
4840
4873
 
4841
4874
  const u = up.util;
@@ -4948,7 +4981,7 @@ up.LayerStack = class LayerStack extends Array {
4948
4981
 
4949
4982
 
4950
4983
  /***/ }),
4951
- /* 58 */
4984
+ /* 59 */
4952
4985
  /***/ (() => {
4953
4986
 
4954
4987
  up.LinkFeedbackURLs = class LinkFeedbackURLs {
@@ -4979,7 +5012,7 @@ up.LinkFeedbackURLs = class LinkFeedbackURLs {
4979
5012
 
4980
5013
 
4981
5014
  /***/ }),
4982
- /* 59 */
5015
+ /* 60 */
4983
5016
  /***/ (() => {
4984
5017
 
4985
5018
  const u = up.util;
@@ -5047,7 +5080,7 @@ up.LinkPreloader = class LinkPreloader {
5047
5080
 
5048
5081
 
5049
5082
  /***/ }),
5050
- /* 60 */
5083
+ /* 61 */
5051
5084
  /***/ (() => {
5052
5085
 
5053
5086
  const u = up.util;
@@ -5143,7 +5176,7 @@ up.MotionController = class MotionController {
5143
5176
 
5144
5177
 
5145
5178
  /***/ }),
5146
- /* 61 */
5179
+ /* 62 */
5147
5180
  /***/ (() => {
5148
5181
 
5149
5182
  const u = up.util;
@@ -5235,7 +5268,7 @@ up.NonceableCallback = class NonceableCallback {
5235
5268
 
5236
5269
 
5237
5270
  /***/ }),
5238
- /* 62 */
5271
+ /* 63 */
5239
5272
  /***/ (() => {
5240
5273
 
5241
5274
  const u = up.util;
@@ -5312,7 +5345,7 @@ up.OptionsParser = class OptionsParser {
5312
5345
 
5313
5346
 
5314
5347
  /***/ }),
5315
- /* 63 */
5348
+ /* 64 */
5316
5349
  /***/ (() => {
5317
5350
 
5318
5351
  const e = up.element;
@@ -5380,7 +5413,7 @@ up.OverlayFocus = class OverlayFocus {
5380
5413
 
5381
5414
 
5382
5415
  /***/ }),
5383
- /* 64 */
5416
+ /* 65 */
5384
5417
  /***/ (() => {
5385
5418
 
5386
5419
  const u = up.util;
@@ -5611,7 +5644,7 @@ up.Params = class Params {
5611
5644
 
5612
5645
 
5613
5646
  /***/ }),
5614
- /* 65 */
5647
+ /* 66 */
5615
5648
  /***/ (() => {
5616
5649
 
5617
5650
  const e = up.element;
@@ -5661,7 +5694,7 @@ up.ProgressBar = class ProgressBar {
5661
5694
 
5662
5695
 
5663
5696
  /***/ }),
5664
- /* 66 */
5697
+ /* 67 */
5665
5698
  /***/ (() => {
5666
5699
 
5667
5700
  const u = up.util;
@@ -5710,14 +5743,15 @@ up.RenderOptions = (function () {
5710
5743
  ]);
5711
5744
  const CONTENT_KEYS = [
5712
5745
  'url',
5746
+ 'response',
5713
5747
  'content',
5714
5748
  'fragment',
5715
- 'document'
5749
+ 'document',
5716
5750
  ];
5717
5751
  const LATE_KEYS = [
5718
5752
  'history',
5719
5753
  'focus',
5720
- 'scroll'
5754
+ 'scroll',
5721
5755
  ];
5722
5756
  function navigateDefaults(options) {
5723
5757
  if (options.navigate) {
@@ -5784,7 +5818,7 @@ up.RenderOptions = (function () {
5784
5818
 
5785
5819
 
5786
5820
  /***/ }),
5787
- /* 67 */
5821
+ /* 68 */
5788
5822
  /***/ (() => {
5789
5823
 
5790
5824
  up.RenderResult = class RenderResult extends up.Record {
@@ -5812,7 +5846,7 @@ up.RenderResult = class RenderResult extends up.Record {
5812
5846
 
5813
5847
 
5814
5848
  /***/ }),
5815
- /* 68 */
5849
+ /* 69 */
5816
5850
  /***/ (() => {
5817
5851
 
5818
5852
  var _a;
@@ -5884,13 +5918,15 @@ up.Request = (_a = class Request extends up.Record {
5884
5918
  return this._xhr ?? (this._xhr = new XMLHttpRequest());
5885
5919
  }
5886
5920
  get fragments() {
5887
- if (!this._fragments && this.target) {
5921
+ if (this._fragments) {
5922
+ return this._fragments;
5923
+ }
5924
+ else if (this.target) {
5888
5925
  let steps = up.fragment.parseTargetSteps(this.target);
5889
5926
  let selectors = u.map(steps, 'selector');
5890
5927
  let lookupOpts = { origin: this.origin, layer: this.layer };
5891
- this._fragments = u.compact(u.map(selectors, (selector) => up.fragment.get(selector, lookupOpts)));
5928
+ return u.compact(u.map(selectors, (selector) => up.fragment.get(selector, lookupOpts)));
5892
5929
  }
5893
- return this._fragments;
5894
5930
  }
5895
5931
  set fragments(value) {
5896
5932
  this._fragments = value;
@@ -6147,7 +6183,7 @@ up.Request = (_a = class Request extends up.Record {
6147
6183
 
6148
6184
 
6149
6185
  /***/ }),
6150
- /* 69 */
6186
+ /* 70 */
6151
6187
  /***/ (() => {
6152
6188
 
6153
6189
  const u = up.util;
@@ -6237,6 +6273,7 @@ up.Request.Cache = class Cache {
6237
6273
  if (value instanceof up.Response) {
6238
6274
  if (options.force || this.isCacheCompatible(existingRequest, newRequest)) {
6239
6275
  newRequest.fromCache = true;
6276
+ value = u.variant(value, { request: newRequest });
6240
6277
  newRequest.respondWith(value);
6241
6278
  u.delegate(newRequest, ['expired', 'state'], () => existingRequest);
6242
6279
  }
@@ -6286,7 +6323,7 @@ up.Request.Cache = class Cache {
6286
6323
 
6287
6324
 
6288
6325
  /***/ }),
6289
- /* 70 */
6326
+ /* 71 */
6290
6327
  /***/ (() => {
6291
6328
 
6292
6329
  const u = up.util;
@@ -6394,7 +6431,7 @@ up.Request.Queue = class Queue {
6394
6431
 
6395
6432
 
6396
6433
  /***/ }),
6397
- /* 71 */
6434
+ /* 72 */
6398
6435
  /***/ (() => {
6399
6436
 
6400
6437
  const u = up.util;
@@ -6433,7 +6470,7 @@ up.Request.FormRenderer = class FormRenderer {
6433
6470
 
6434
6471
 
6435
6472
  /***/ }),
6436
- /* 72 */
6473
+ /* 73 */
6437
6474
  /***/ (() => {
6438
6475
 
6439
6476
  var _a;
@@ -6505,7 +6542,7 @@ up.Request.XHRRenderer = (_a = class XHRRenderer {
6505
6542
 
6506
6543
 
6507
6544
  /***/ }),
6508
- /* 73 */
6545
+ /* 74 */
6509
6546
  /***/ (() => {
6510
6547
 
6511
6548
  const u = up.util;
@@ -6540,6 +6577,12 @@ up.Response = class Response extends up.Record {
6540
6577
  get ok() {
6541
6578
  return !u.evalOption(this.fail ?? up.network.config.fail, this);
6542
6579
  }
6580
+ get none() {
6581
+ return !this.text;
6582
+ }
6583
+ isCacheable() {
6584
+ return this.ok && !this.none;
6585
+ }
6543
6586
  header(name) {
6544
6587
  return this.headers[name] || this.xhr?.getResponseHeader(name);
6545
6588
  }
@@ -6580,7 +6623,7 @@ up.Response = class Response extends up.Record {
6580
6623
 
6581
6624
 
6582
6625
  /***/ }),
6583
- /* 74 */
6626
+ /* 75 */
6584
6627
  /***/ (() => {
6585
6628
 
6586
6629
  var _a;
@@ -6660,7 +6703,7 @@ up.ResponseDoc = (_a = class ResponseDoc {
6660
6703
 
6661
6704
 
6662
6705
  /***/ }),
6663
- /* 75 */
6706
+ /* 76 */
6664
6707
  /***/ (() => {
6665
6708
 
6666
6709
  const e = up.element;
@@ -6754,7 +6797,7 @@ up.RevealMotion = class RevealMotion {
6754
6797
 
6755
6798
 
6756
6799
  /***/ }),
6757
- /* 76 */
6800
+ /* 77 */
6758
6801
  /***/ (() => {
6759
6802
 
6760
6803
  const u = up.util;
@@ -6795,7 +6838,7 @@ up.Selector = class Selector {
6795
6838
 
6796
6839
 
6797
6840
  /***/ }),
6798
- /* 77 */
6841
+ /* 78 */
6799
6842
  /***/ (() => {
6800
6843
 
6801
6844
  const u = up.util;
@@ -6915,7 +6958,7 @@ up.Tether = class Tether {
6915
6958
 
6916
6959
 
6917
6960
  /***/ }),
6918
- /* 78 */
6961
+ /* 79 */
6919
6962
  /***/ (() => {
6920
6963
 
6921
6964
  const u = up.util;
@@ -6995,7 +7038,7 @@ up.URLPattern = class URLPattern {
6995
7038
 
6996
7039
 
6997
7040
  /***/ }),
6998
- /* 79 */
7041
+ /* 80 */
6999
7042
  /***/ (() => {
7000
7043
 
7001
7044
  up.framework = (function () {
@@ -7079,7 +7122,7 @@ up.boot = up.framework.boot;
7079
7122
 
7080
7123
 
7081
7124
  /***/ }),
7082
- /* 80 */
7125
+ /* 81 */
7083
7126
  /***/ (() => {
7084
7127
 
7085
7128
  up.event = (function () {
@@ -7182,7 +7225,7 @@ up.emit = up.event.emit;
7182
7225
 
7183
7226
 
7184
7227
  /***/ }),
7185
- /* 81 */
7228
+ /* 82 */
7186
7229
  /***/ (() => {
7187
7230
 
7188
7231
  up.protocol = (function () {
@@ -7323,7 +7366,7 @@ up.protocol = (function () {
7323
7366
 
7324
7367
 
7325
7368
  /***/ }),
7326
- /* 82 */
7369
+ /* 83 */
7327
7370
  /***/ (() => {
7328
7371
 
7329
7372
  up.log = (function () {
@@ -7408,7 +7451,7 @@ up.warn = up.log.warn;
7408
7451
 
7409
7452
 
7410
7453
  /***/ }),
7411
- /* 83 */
7454
+ /* 84 */
7412
7455
  /***/ (() => {
7413
7456
 
7414
7457
  up.syntax = (function () {
@@ -7558,7 +7601,7 @@ up.hello = up.syntax.hello;
7558
7601
 
7559
7602
 
7560
7603
  /***/ }),
7561
- /* 84 */
7604
+ /* 85 */
7562
7605
  /***/ (() => {
7563
7606
 
7564
7607
  up.history = (function () {
@@ -7694,10 +7737,10 @@ up.history = (function () {
7694
7737
 
7695
7738
 
7696
7739
  /***/ }),
7697
- /* 85 */
7740
+ /* 86 */
7698
7741
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
7699
7742
 
7700
- __webpack_require__(86);
7743
+ __webpack_require__(87);
7701
7744
  const u = up.util;
7702
7745
  const e = up.element;
7703
7746
  up.fragment = (function () {
@@ -8224,7 +8267,7 @@ u.delegate(up, ['context'], () => up.layer.current);
8224
8267
 
8225
8268
 
8226
8269
  /***/ }),
8227
- /* 86 */
8270
+ /* 87 */
8228
8271
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8229
8272
 
8230
8273
  "use strict";
@@ -8233,10 +8276,10 @@ __webpack_require__.r(__webpack_exports__);
8233
8276
 
8234
8277
 
8235
8278
  /***/ }),
8236
- /* 87 */
8279
+ /* 88 */
8237
8280
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
8238
8281
 
8239
- __webpack_require__(88);
8282
+ __webpack_require__(89);
8240
8283
  up.viewport = (function () {
8241
8284
  const u = up.util;
8242
8285
  const e = up.element;
@@ -8556,7 +8599,7 @@ up.reveal = up.viewport.reveal;
8556
8599
 
8557
8600
 
8558
8601
  /***/ }),
8559
- /* 88 */
8602
+ /* 89 */
8560
8603
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8561
8604
 
8562
8605
  "use strict";
@@ -8565,7 +8608,7 @@ __webpack_require__.r(__webpack_exports__);
8565
8608
 
8566
8609
 
8567
8610
  /***/ }),
8568
- /* 89 */
8611
+ /* 90 */
8569
8612
  /***/ (() => {
8570
8613
 
8571
8614
  up.motion = (function () {
@@ -8820,10 +8863,10 @@ up.animate = up.motion.animate;
8820
8863
 
8821
8864
 
8822
8865
  /***/ }),
8823
- /* 90 */
8866
+ /* 91 */
8824
8867
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
8825
8868
 
8826
- __webpack_require__(91);
8869
+ __webpack_require__(92);
8827
8870
  const u = up.util;
8828
8871
  up.network = (function () {
8829
8872
  const config = new up.Config(() => ({
@@ -8891,19 +8934,19 @@ up.network = (function () {
8891
8934
  cache.put(request);
8892
8935
  request.onLoading = () => cache.put(request);
8893
8936
  }
8894
- u.always(request, function (response) {
8895
- let expireCache = response.expireCache ?? request.expireCache ?? u.evalOption(config.expireCache, request, response);
8937
+ u.always(request, function (responseOrError) {
8938
+ let expireCache = responseOrError.expireCache ?? request.expireCache ?? u.evalOption(config.expireCache, request, responseOrError);
8896
8939
  if (expireCache) {
8897
8940
  cache.expire(expireCache, { except: request });
8898
8941
  }
8899
- let evictCache = response.evictCache ?? request.evictCache ?? u.evalOption(config.evictCache, request, response);
8942
+ let evictCache = responseOrError.evictCache ?? request.evictCache ?? u.evalOption(config.evictCache, request, responseOrError);
8900
8943
  if (evictCache) {
8901
8944
  cache.evict(evictCache, { except: request });
8902
8945
  }
8903
8946
  if (cache.get(request)) {
8904
8947
  cache.put(request);
8905
8948
  }
8906
- if (!response.ok) {
8949
+ if (!responseOrError.isCacheable?.()) {
8907
8950
  cache.evict(request);
8908
8951
  }
8909
8952
  });
@@ -8927,7 +8970,7 @@ up.network = (function () {
8927
8970
  }
8928
8971
  function registerAliasForRedirect(request, response) {
8929
8972
  if (request.cache && response.url && request.url !== response.url) {
8930
- const newRequest = request.variant({
8973
+ const newRequest = u.variant(request, {
8931
8974
  method: response.method,
8932
8975
  url: response.url
8933
8976
  });
@@ -8966,7 +9009,7 @@ up.cache = up.network.cache;
8966
9009
 
8967
9010
 
8968
9011
  /***/ }),
8969
- /* 91 */
9012
+ /* 92 */
8970
9013
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8971
9014
 
8972
9015
  "use strict";
@@ -8975,10 +9018,10 @@ __webpack_require__.r(__webpack_exports__);
8975
9018
 
8976
9019
 
8977
9020
  /***/ }),
8978
- /* 92 */
9021
+ /* 93 */
8979
9022
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
8980
9023
 
8981
- __webpack_require__(93);
9024
+ __webpack_require__(94);
8982
9025
  const u = up.util;
8983
9026
  const e = up.element;
8984
9027
  up.layer = (function () {
@@ -9122,7 +9165,7 @@ up.layer = (function () {
9122
9165
  return e.callbackAttr(link, attr, { exposedKeys: ['layer'] });
9123
9166
  }
9124
9167
  function closeCallbackAttr(link, attr) {
9125
- return e.callbackAttr(link, attr, { exposedKeys: ['layer', 'value'] });
9168
+ return e.callbackAttr(link, attr, { exposedKeys: ['layer', 'value', 'response'] });
9126
9169
  }
9127
9170
  function reset() {
9128
9171
  config.reset();
@@ -9219,7 +9262,7 @@ up.layer = (function () {
9219
9262
 
9220
9263
 
9221
9264
  /***/ }),
9222
- /* 93 */
9265
+ /* 94 */
9223
9266
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9224
9267
 
9225
9268
  "use strict";
@@ -9228,10 +9271,10 @@ __webpack_require__.r(__webpack_exports__);
9228
9271
 
9229
9272
 
9230
9273
  /***/ }),
9231
- /* 94 */
9274
+ /* 95 */
9232
9275
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
9233
9276
 
9234
- __webpack_require__(95);
9277
+ __webpack_require__(96);
9235
9278
  up.link = (function () {
9236
9279
  const u = up.util;
9237
9280
  const e = up.element;
@@ -9239,7 +9282,7 @@ up.link = (function () {
9239
9282
  let lastMousedownTarget = null;
9240
9283
  const LINKS_WITH_LOCAL_HTML = ['a[up-content]', 'a[up-fragment]', 'a[up-document]'];
9241
9284
  const LINKS_WITH_REMOTE_HTML = ['a[href]', '[up-href]'];
9242
- const ATTRIBUTES_SUGGESTING_FOLLOW = ['[up-follow]', '[up-target]', '[up-layer]', '[up-transition]', '[up-preload]', '[up-instant]'];
9285
+ const ATTRIBUTES_SUGGESTING_FOLLOW = ['[up-follow]', '[up-target]', '[up-layer]', '[up-transition]', '[up-preload]', '[up-instant]', '[up-href]'];
9243
9286
  function combineFollowableSelectors(elementSelectors, attributeSelectors) {
9244
9287
  return u.flatMap(elementSelectors, elementSelector => attributeSelectors.map(attrSelector => elementSelector + attrSelector));
9245
9288
  }
@@ -9526,7 +9569,7 @@ up.follow = up.link.follow;
9526
9569
 
9527
9570
 
9528
9571
  /***/ }),
9529
- /* 95 */
9572
+ /* 96 */
9530
9573
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9531
9574
 
9532
9575
  "use strict";
@@ -9535,7 +9578,7 @@ __webpack_require__.r(__webpack_exports__);
9535
9578
 
9536
9579
 
9537
9580
  /***/ }),
9538
- /* 96 */
9581
+ /* 97 */
9539
9582
  /***/ (() => {
9540
9583
 
9541
9584
  up.form = (function () {
@@ -9550,7 +9593,7 @@ up.form = (function () {
9550
9593
  submitButtonSelectors: ['input[type=submit]', 'input[type=image]', 'button[type=submit]', 'button:not([type])'],
9551
9594
  watchInputEvents: ['input', 'change'],
9552
9595
  watchInputDelay: 0,
9553
- watchChangeEvents: (field) => field.matches('input[type=date]') ? ['blur'] : ['change'],
9596
+ watchChangeEvents: ['change'],
9554
9597
  }));
9555
9598
  function fullSubmitSelector() {
9556
9599
  return config.submitSelectors.join(',');
@@ -9929,7 +9972,7 @@ up.validate = up.form.validate;
9929
9972
 
9930
9973
 
9931
9974
  /***/ }),
9932
- /* 97 */
9975
+ /* 98 */
9933
9976
  /***/ (() => {
9934
9977
 
9935
9978
  up.feedback = (function () {
@@ -10046,7 +10089,7 @@ up.feedback = (function () {
10046
10089
 
10047
10090
 
10048
10091
  /***/ }),
10049
- /* 98 */
10092
+ /* 99 */
10050
10093
  /***/ (() => {
10051
10094
 
10052
10095
  up.radio = (function () {
@@ -10123,7 +10166,7 @@ up.radio = (function () {
10123
10166
 
10124
10167
 
10125
10168
  /***/ }),
10126
- /* 99 */
10169
+ /* 100 */
10127
10170
  /***/ (() => {
10128
10171
 
10129
10172
  (function () {
@@ -10272,15 +10315,16 @@ __webpack_require__(82);
10272
10315
  __webpack_require__(83);
10273
10316
  __webpack_require__(84);
10274
10317
  __webpack_require__(85);
10275
- __webpack_require__(87);
10276
- __webpack_require__(89);
10318
+ __webpack_require__(86);
10319
+ __webpack_require__(88);
10277
10320
  __webpack_require__(90);
10278
- __webpack_require__(92);
10279
- __webpack_require__(94);
10280
- __webpack_require__(96);
10321
+ __webpack_require__(91);
10322
+ __webpack_require__(93);
10323
+ __webpack_require__(95);
10281
10324
  __webpack_require__(97);
10282
10325
  __webpack_require__(98);
10283
10326
  __webpack_require__(99);
10327
+ __webpack_require__(100);
10284
10328
  up.framework.onEvaled();
10285
10329
 
10286
10330
  })();