unpoly-rails 3.10.0.rc1 → 3.10.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.10.0-rc1'
8
+ version: '3.10.0'
9
9
  };
10
10
 
11
11
 
@@ -2212,18 +2212,16 @@ up.RenderJob = (_a = class RenderJob {
2212
2212
  }
2213
2213
  }
2214
2214
  _getChange() {
2215
- if (this.options.url) {
2216
- let onRequestProcessed = (request) => this._handleAbortOption(request);
2217
- return new up.Change.FromURL({ ...this.options, onRequestProcessed });
2215
+ let handleAbort = u.memoize((request) => this._handleAbortOption(request));
2216
+ let renderOptions = { ...this.options, handleAbort };
2217
+ if (renderOptions.url) {
2218
+ return new up.Change.FromURL(renderOptions);
2219
+ }
2220
+ else if (renderOptions.response) {
2221
+ return new up.Change.FromResponse(renderOptions);
2218
2222
  }
2219
2223
  else {
2220
- let onRender = () => this._handleAbortOption(null);
2221
- if (this.options.response) {
2222
- return new up.Change.FromResponse({ ...this.options, onRender });
2223
- }
2224
- else {
2225
- return new up.Change.FromContent({ ...this.options, onRender });
2226
- }
2224
+ return new up.Change.FromContent(renderOptions);
2227
2225
  }
2228
2226
  }
2229
2227
  _emitGuardEvent() {
@@ -2928,16 +2926,13 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
2928
2926
  up.network.loadPage(this.options);
2929
2927
  return u.unresolvablePromise();
2930
2928
  }
2931
- this.request = up.request(this._getRequestAttrs());
2932
- if (this.options.preload) {
2933
- return this.request;
2934
- }
2935
- this._onRequestProcessed();
2936
- return await u.always(this.request, responseOrError => this._onRequestSettled(responseOrError));
2937
- }
2938
- _onRequestProcessed() {
2939
- this.options.onRequestProcessed?.(this.request);
2940
- this.request.runPreviews(this.options);
2929
+ let request = this.request = up.request(this._getRequestAttrs());
2930
+ this.options.onRequestKnown?.(request);
2931
+ if (this.options.preload)
2932
+ return request;
2933
+ this.options.handleAbort?.(request);
2934
+ request.runPreviews(this.options);
2935
+ return await u.always(request, responseOrError => this._onRequestSettled(responseOrError));
2941
2936
  }
2942
2937
  _newPageReason() {
2943
2938
  if (u.isCrossOrigin(this.options.url)) {
@@ -2954,7 +2949,6 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
2954
2949
  ...this.options,
2955
2950
  ...successAttrs,
2956
2951
  ...u.withRenamedKeys(failAttrs, up.fragment.failKey),
2957
- onProcessed: this._onRequestProcessed.bind(this),
2958
2952
  };
2959
2953
  }
2960
2954
  getPreflightProps() {
@@ -3203,7 +3197,7 @@ up.Change.FromContent = (_a = class FromContent extends up.Change {
3203
3197
  if (assets) {
3204
3198
  up.script.assertAssetsOK(assets, plan.options);
3205
3199
  }
3206
- this.options.onRender?.();
3200
+ this.options.handleAbort?.(null);
3207
3201
  }
3208
3202
  _getResponseDoc() {
3209
3203
  if (this._preflight)
@@ -5534,12 +5528,13 @@ up.LinkFollowIntent = class LinkFollowIntent {
5534
5528
  constructor(link, callback) {
5535
5529
  this._link = link;
5536
5530
  this._callback = callback;
5531
+ this._lastRequest = null;
5537
5532
  this._on('mouseenter mousedown touchstart', (event) => this._scheduleCallback(event));
5538
5533
  this._on('mouseleave', () => this._unscheduleCallback());
5539
5534
  up.fragment.onAborted(this._link, () => this._unscheduleCallback());
5540
5535
  }
5541
- _on(eventType, callback) {
5542
- up.on(this._link, eventType, { passive: true }, callback);
5536
+ _on(eventType, fn) {
5537
+ up.on(this._link, eventType, { passive: true }, fn);
5543
5538
  }
5544
5539
  _scheduleCallback(event) {
5545
5540
  if (!up.link.shouldFollowEvent(event, this._link))
@@ -5556,14 +5551,16 @@ up.LinkFollowIntent = class LinkFollowIntent {
5556
5551
  }
5557
5552
  _unscheduleCallback() {
5558
5553
  clearTimeout(this._timer);
5559
- up.network.abort((request) => (request.origin === this._link) && request.background);
5554
+ if (this._lastRequest?.background)
5555
+ this._lastRequest.abort();
5556
+ this._lastRequest = null;
5560
5557
  }
5561
5558
  _parseDelay() {
5562
5559
  return e.numberAttr(this._link, 'up-preload-delay') ?? up.link.config.preloadDelay;
5563
5560
  }
5564
5561
  _runCallback(event) {
5565
5562
  up.log.putsEvent(event);
5566
- up.error.muteUncriticalRejection(this._callback());
5563
+ this._callback({ onRequestKnown: (request) => this._lastRequest = request });
5567
5564
  }
5568
5565
  };
5569
5566
 
@@ -5680,17 +5677,15 @@ up.NonceableCallback = class NonceableCallback {
5680
5677
  return new this(match[3], match[2]);
5681
5678
  }
5682
5679
  toFunction(...argNames) {
5683
- let scriptExpression = this.script;
5684
- if (!/\b(;|return|throw)\b/.test(scriptExpression))
5685
- scriptExpression = `return ${scriptExpression}`;
5680
+ let script = this.script;
5686
5681
  if (this.nonce) {
5687
5682
  let callbackThis = this;
5688
5683
  return function (...args) {
5689
- return callbackThis._runAsNoncedFunction(scriptExpression, this, argNames, args);
5684
+ return callbackThis._runAsNoncedFunction(script, this, argNames, args);
5690
5685
  };
5691
5686
  }
5692
5687
  else {
5693
- return new Function(...argNames, scriptExpression);
5688
+ return new Function(...argNames, script);
5694
5689
  }
5695
5690
  }
5696
5691
  toString() {
@@ -8059,7 +8054,10 @@ up.protocol = (function () {
8059
8054
  return u.normalizeMethod(up.browser.popCookie('_up_method'));
8060
8055
  });
8061
8056
  function locationFromXHR(xhr) {
8062
- return extractHeader(xhr, 'location') || xhr.responseURL;
8057
+ let location = extractHeader(xhr, 'location') || xhr.responseURL;
8058
+ if (location) {
8059
+ return u.normalizeURL(location);
8060
+ }
8063
8061
  }
8064
8062
  const config = new up.Config(() => ({
8065
8063
  methodParam: '_method',
@@ -8234,7 +8232,6 @@ up.script = (function () {
8234
8232
  'up-on-finished',
8235
8233
  'up-on-error',
8236
8234
  'up-on-offline',
8237
- 'up-placeholder',
8238
8235
  ],
8239
8236
  scriptSelectors: [
8240
8237
  'script:not([type])',
@@ -9004,7 +9001,7 @@ up.fragment = (function () {
9004
9001
  continue;
9005
9002
  let placement = defaultPlacement;
9006
9003
  let maybe = defaultMaybe;
9007
- selector = selector.replace(/\b::?(before|after)\b/, (_match, customPlacement) => {
9004
+ selector = selector.replace(/\b::?(before|after|content)\b/, (_match, customPlacement) => {
9008
9005
  placement = customPlacement;
9009
9006
  return '';
9010
9007
  });
@@ -9468,7 +9465,7 @@ up.viewport = (function () {
9468
9465
  function firstHashTarget(hash, options = {}) {
9469
9466
  if (hash = pureHash(hash)) {
9470
9467
  const selector = [
9471
- e.attrSelector('id', hash),
9468
+ e.idSelector(hash),
9472
9469
  'a' + e.attrSelector('name', hash)
9473
9470
  ].join();
9474
9471
  return f.get(selector, options);
@@ -10488,7 +10485,7 @@ up.link = (function () {
10488
10485
  return follow(link, forcedOptions, { defaults });
10489
10486
  }
10490
10487
  up.attribute('up-defer', { defaultValue: 'insert' }, function (link, condition) {
10491
- let doLoad = () => up.error.muteUncriticalRejection(loadDeferred(link));
10488
+ let doLoad = (options) => up.error.muteUncriticalRejection(loadDeferred(link, options));
10492
10489
  onLoadCondition(condition, link, doLoad);
10493
10490
  });
10494
10491
  up.on('up:click', config.selectorFn('followSelectors'), function (event, link) {
@@ -10511,7 +10508,7 @@ up.link = (function () {
10511
10508
  });
10512
10509
  up.compiler(config.selectorFn('preloadSelectors'), function (link) {
10513
10510
  if (!isPreloadDisabled(link)) {
10514
- let doPreload = () => up.error.muteUncriticalRejection(preload(link));
10511
+ let doPreload = (options) => up.error.muteUncriticalRejection(preload(link, options));
10515
10512
  let condition = e.booleanOrStringAttr(link, 'up-preload');
10516
10513
  if (condition === true || u.isUndefined(condition))
10517
10514
  condition = 'hover';
@@ -10650,16 +10647,10 @@ up.form = (function () {
10650
10647
  else {
10651
10648
  control.disabled = true;
10652
10649
  }
10653
- return () => {
10654
- control.disabled = false;
10655
- if (focusFallback && document.activeElement === focusFallback && control.isConnected) {
10656
- up.focus(control, { preventScroll: true });
10657
- }
10658
- };
10650
+ return () => { control.disabled = false; };
10659
10651
  }
10660
10652
  function getDisableContainers(disable, origin) {
10661
- let givenOrigin = () => origin || up.fail('Missing { origin }');
10662
- let originScope = () => getScope(givenOrigin());
10653
+ let originScope = () => getScope(origin);
10663
10654
  if (disable === true) {
10664
10655
  return [originScope()];
10665
10656
  }
@@ -10848,8 +10839,13 @@ up.form = (function () {
10848
10839
  const element = up.fragment.get(elementOrSelector, options);
10849
10840
  return element.form || element.closest('form');
10850
10841
  }
10851
- function getScope(element, options) {
10852
- return getForm(element, options) || up.layer.get(element).element;
10842
+ function getScope(origin, options) {
10843
+ if (origin) {
10844
+ return getForm(origin, options) || up.layer.get(origin).element;
10845
+ }
10846
+ else {
10847
+ return up.layer.current.element;
10848
+ }
10853
10849
  }
10854
10850
  function focusedField() {
10855
10851
  return u.presence(document.activeElement, isField);