unpoly-rails 3.10.0.rc1 → 3.10.0

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.
@@ -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);