unpoly-rails 3.8.0.1 → 3.9.1
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.
- checksums.yaml +4 -4
- data/assets/unpoly/unpoly-migrate.js +151 -96
- data/assets/unpoly/unpoly-migrate.min.js +1 -1
- data/assets/unpoly/unpoly.css +5 -1
- data/assets/unpoly/unpoly.es6.js +242 -239
- data/assets/unpoly/unpoly.es6.min.js +1 -1
- data/assets/unpoly/unpoly.js +237 -234
- data/assets/unpoly/unpoly.min.css +1 -1
- data/assets/unpoly/unpoly.min.js +1 -1
- data/lib/unpoly/rails/version.rb +1 -1
- metadata +2 -2
data/assets/unpoly/unpoly.es6.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
/***/ (() => {
|
6
6
|
|
7
7
|
window.up = {
|
8
|
-
version: '3.
|
8
|
+
version: '3.9.1'
|
9
9
|
};
|
10
10
|
|
11
11
|
|
@@ -51,11 +51,8 @@ up.util = (function () {
|
|
51
51
|
}
|
52
52
|
};
|
53
53
|
}
|
54
|
-
const NORMALIZE_URL_DEFAULTS = {
|
55
|
-
host: 'cross-domain',
|
56
|
-
};
|
57
54
|
function normalizeURL(url, options) {
|
58
|
-
options = newOptions(options,
|
55
|
+
options = newOptions(options, { host: 'cross-domain' });
|
59
56
|
const parts = parseURL(url);
|
60
57
|
let normalized = '';
|
61
58
|
if (options.host === 'cross-domain') {
|
@@ -77,8 +74,22 @@ up.util = (function () {
|
|
77
74
|
}
|
78
75
|
return normalized;
|
79
76
|
}
|
80
|
-
function matchURLs(leftURL, rightURL) {
|
81
|
-
return
|
77
|
+
function matchURLs(leftURL, rightURL, options) {
|
78
|
+
return matchableURL(leftURL, options) === matchableURL(rightURL, options);
|
79
|
+
}
|
80
|
+
function matchableURL(url, options) {
|
81
|
+
if (!url)
|
82
|
+
return;
|
83
|
+
return normalizeURL(url, Object.assign({ hash: false, trailingSlash: false }, options));
|
84
|
+
}
|
85
|
+
function matchableURLPatternAtom(patternAtom) {
|
86
|
+
if (patternAtom.endsWith('/'))
|
87
|
+
return [patternAtom, patternAtom.slice(0, -1)];
|
88
|
+
if (patternAtom.includes('/?'))
|
89
|
+
return [patternAtom, patternAtom.replace('/?', '?')];
|
90
|
+
if (patternAtom.endsWith('/*'))
|
91
|
+
return [patternAtom, patternAtom.slice(0, -2), patternAtom.slice(0, -2) + '?*'];
|
92
|
+
return patternAtom;
|
82
93
|
}
|
83
94
|
const APP_PROTOCOL = location.protocol;
|
84
95
|
const APP_HOSTNAME = location.hostname;
|
@@ -730,6 +741,8 @@ up.util = (function () {
|
|
730
741
|
return {
|
731
742
|
parseURL,
|
732
743
|
normalizeURL,
|
744
|
+
matchableURL,
|
745
|
+
matchableURLPatternAtom,
|
733
746
|
matchURLs,
|
734
747
|
normalizeMethod,
|
735
748
|
methodAllowsPayload,
|
@@ -1829,7 +1842,7 @@ up.BodyShifter = class BodyShifter {
|
|
1829
1842
|
if (!this._isShifted())
|
1830
1843
|
return;
|
1831
1844
|
let originalValue = e.style(element, styleProp);
|
1832
|
-
this._cleaners.push(e.setTemporaryStyle(
|
1845
|
+
this._cleaners.push(e.setTemporaryStyle(element, { ['--up-original-' + styleProp]: originalValue }), e.addTemporaryClass(element, SHIFT_CLASS));
|
1833
1846
|
}
|
1834
1847
|
_unshiftNow() {
|
1835
1848
|
let cleaner;
|
@@ -1922,7 +1935,7 @@ up.Change.Addition = class Addition extends up.Change {
|
|
1922
1935
|
source = (oldElement && up.fragment.source(oldElement));
|
1923
1936
|
}
|
1924
1937
|
if (source) {
|
1925
|
-
e.setMissingAttr(newElement, 'up-source',
|
1938
|
+
e.setMissingAttr(newElement, 'up-source', up.fragment.normalizeSource(source));
|
1926
1939
|
}
|
1927
1940
|
}
|
1928
1941
|
setTime({ newElement, time }) {
|
@@ -1962,7 +1975,7 @@ var _a;
|
|
1962
1975
|
const u = up.util;
|
1963
1976
|
up.RenderJob = (_a = class RenderJob {
|
1964
1977
|
constructor(options) {
|
1965
|
-
this.options =
|
1978
|
+
this.options = options;
|
1966
1979
|
}
|
1967
1980
|
execute() {
|
1968
1981
|
this._rendered = this._executePromise();
|
@@ -1972,6 +1985,7 @@ up.RenderJob = (_a = class RenderJob {
|
|
1972
1985
|
return __awaiter(this, void 0, void 0, function* () {
|
1973
1986
|
try {
|
1974
1987
|
this._guardRender();
|
1988
|
+
this.options = up.RenderOptions.preprocess(this.options);
|
1975
1989
|
let result = yield this._getChange().execute();
|
1976
1990
|
this._handleResult(result);
|
1977
1991
|
return result;
|
@@ -2429,9 +2443,6 @@ up.Change.UpdateLayer = (_a = class UpdateLayer extends up.Change.Addition {
|
|
2429
2443
|
step.scroll = false;
|
2430
2444
|
step.focus = false;
|
2431
2445
|
}
|
2432
|
-
if ((step.placement === 'swap') || (step.placement === 'content')) {
|
2433
|
-
step.scrollBehavior = 'instant';
|
2434
|
-
}
|
2435
2446
|
});
|
2436
2447
|
}
|
2437
2448
|
_hasHistory() {
|
@@ -2740,11 +2751,6 @@ up.Change.CloseLayer = class CloseLayer extends up.Change.Removal {
|
|
2740
2751
|
var _a;
|
2741
2752
|
const u = up.util;
|
2742
2753
|
up.Change.FromURL = (_a = class FromURL extends up.Change {
|
2743
|
-
constructor(options) {
|
2744
|
-
super(options);
|
2745
|
-
this.options.layer = up.layer.getAll(this.options);
|
2746
|
-
this.options.normalizeLayerOptions = false;
|
2747
|
-
}
|
2748
2754
|
execute() {
|
2749
2755
|
var _b, _c;
|
2750
2756
|
let _newPageReason = this._newPageReason();
|
@@ -2958,12 +2964,13 @@ const u = up.util;
|
|
2958
2964
|
up.Change.FromContent = (_a = class FromContent extends up.Change {
|
2959
2965
|
constructor(options) {
|
2960
2966
|
super(options);
|
2961
|
-
this._origin =
|
2962
|
-
this._preview =
|
2967
|
+
this._origin = options.origin;
|
2968
|
+
this._preview = options.preview;
|
2969
|
+
this._layers = options.layers;
|
2963
2970
|
}
|
2964
2971
|
_getPlans() {
|
2965
2972
|
let plans = [];
|
2966
|
-
this.
|
2973
|
+
this._filterLayers();
|
2967
2974
|
this._improveOptionsFromResponseDoc();
|
2968
2975
|
this._expandIntoPlans(plans, this._layers, this.options.target);
|
2969
2976
|
this._expandIntoPlans(plans, this._layers, this.options.fallback);
|
@@ -2972,9 +2979,8 @@ up.Change.FromContent = (_a = class FromContent extends up.Change {
|
|
2972
2979
|
_isRenderableLayer(layer) {
|
2973
2980
|
return (layer === 'new') || layer.isOpen();
|
2974
2981
|
}
|
2975
|
-
|
2976
|
-
this.
|
2977
|
-
this._layers = u.filter(this._allLayers, this._isRenderableLayer);
|
2982
|
+
_filterLayers() {
|
2983
|
+
this._layers = u.filter(this._layers, this._isRenderableLayer);
|
2978
2984
|
}
|
2979
2985
|
_expandIntoPlans(plans, layers, targets) {
|
2980
2986
|
for (let layer of layers) {
|
@@ -4304,12 +4310,6 @@ up.FragmentPolling = class FragmentPolling {
|
|
4304
4310
|
up.puts('[up-poll]', 'Will not poll hidden fragment');
|
4305
4311
|
return;
|
4306
4312
|
}
|
4307
|
-
if (up.emit(this._fragment, 'up:fragment:poll', { log: ['Polling fragment', this._fragment] }).defaultPrevented) {
|
4308
|
-
up.puts('[up-poll]', 'User prevented up:fragment:poll event');
|
4309
|
-
this._satisfyInterval();
|
4310
|
-
this._scheduleRemainingTime();
|
4311
|
-
return;
|
4312
|
-
}
|
4313
4313
|
this._reloadNow();
|
4314
4314
|
}
|
4315
4315
|
_getFullDelay() {
|
@@ -4329,21 +4329,20 @@ up.FragmentPolling = class FragmentPolling {
|
|
4329
4329
|
}
|
4330
4330
|
_reloadNow() {
|
4331
4331
|
this._clearReloadTimer();
|
4332
|
-
let reloadOptions = {
|
4333
|
-
url: this._options.url,
|
4334
|
-
fail: false,
|
4335
|
-
background: true,
|
4336
|
-
};
|
4337
4332
|
let oldAbortable = this._abortable;
|
4338
4333
|
try {
|
4339
4334
|
this._abortable = false;
|
4340
4335
|
this._loading = true;
|
4341
|
-
up.reload(this._fragment,
|
4336
|
+
up.reload(this._fragment, this._reloadOptions()).then(this._onReloadSuccess.bind(this), this._onReloadFailure.bind(this));
|
4342
4337
|
}
|
4343
4338
|
finally {
|
4344
4339
|
this._abortable = oldAbortable;
|
4345
4340
|
}
|
4346
4341
|
}
|
4342
|
+
_reloadOptions() {
|
4343
|
+
let guardEvent = up.event.build('up:fragment:poll', { log: ['Polling fragment', this._fragment] });
|
4344
|
+
return Object.assign(Object.assign({}, this._options), { guardEvent });
|
4345
|
+
}
|
4347
4346
|
_onFragmentAborted({ newLayer }) {
|
4348
4347
|
if (this._abortable && !newLayer) {
|
4349
4348
|
this._stop();
|
@@ -4561,8 +4560,8 @@ up.Layer = class Layer extends up.Record {
|
|
4561
4560
|
_containsEventTarget(event) {
|
4562
4561
|
return this.contains(event.target);
|
4563
4562
|
}
|
4564
|
-
wasHitByMouseEvent(
|
4565
|
-
const hittableElement = document.elementFromPoint(
|
4563
|
+
wasHitByMouseEvent({ clientX, clientY }) {
|
4564
|
+
const hittableElement = document.elementFromPoint(clientX, clientY);
|
4566
4565
|
return !hittableElement || this.contains(hittableElement);
|
4567
4566
|
}
|
4568
4567
|
_buildEventEmitter(args) {
|
@@ -4673,7 +4672,7 @@ up.Layer = class Layer extends up.Record {
|
|
4673
4672
|
}
|
4674
4673
|
set location(location) {
|
4675
4674
|
const previousLocation = this.location;
|
4676
|
-
location =
|
4675
|
+
location = u.normalizeURL(location);
|
4677
4676
|
if (previousLocation !== location || this.opening) {
|
4678
4677
|
this.savedLocation = location;
|
4679
4678
|
if (this.showsLiveHistory()) {
|
@@ -4881,7 +4880,7 @@ up.Layer.Overlay = class Overlay extends up.Layer {
|
|
4881
4880
|
up.log.putsEvent(event);
|
4882
4881
|
if (halt)
|
4883
4882
|
up.event.halt(event);
|
4884
|
-
this.dismiss(':outside', { origin: event.target });
|
4883
|
+
up.error.muteUncriticalSync(() => this.dismiss(':outside', { origin: event.target }));
|
4885
4884
|
}
|
4886
4885
|
onEscapePressed(event) {
|
4887
4886
|
if (this.isFront()) {
|
@@ -4891,7 +4890,7 @@ up.Layer.Overlay = class Overlay extends up.Layer {
|
|
4891
4890
|
}
|
4892
4891
|
else if (this._supportsDismissMethod('key')) {
|
4893
4892
|
up.event.halt(event, { log: true });
|
4894
|
-
this.dismiss(':key');
|
4893
|
+
up.error.muteUncriticalSync(() => this.dismiss(':key'));
|
4895
4894
|
}
|
4896
4895
|
}
|
4897
4896
|
}
|
@@ -4916,7 +4915,7 @@ up.Layer.Overlay = class Overlay extends up.Layer {
|
|
4916
4915
|
}
|
4917
4916
|
return this.on(eventTypes, event => {
|
4918
4917
|
event.preventDefault();
|
4919
|
-
closeFn.call(this, event, { response: event.response });
|
4918
|
+
up.error.muteUncriticalSync(() => closeFn.call(this, event, { response: event.response }));
|
4920
4919
|
});
|
4921
4920
|
}
|
4922
4921
|
tryAcceptForLocation(options) {
|
@@ -4929,7 +4928,7 @@ up.Layer.Overlay = class Overlay extends up.Layer {
|
|
4929
4928
|
let location, resolution;
|
4930
4929
|
if (urlPattern && (location = this.location) && (resolution = urlPattern.recognize(location))) {
|
4931
4930
|
const closeValue = Object.assign(Object.assign({}, resolution), { location });
|
4932
|
-
closeFn.call(this, closeValue, options);
|
4931
|
+
up.error.muteUncriticalSync(() => closeFn.call(this, closeValue, options));
|
4933
4932
|
}
|
4934
4933
|
}
|
4935
4934
|
teardownHandlers() {
|
@@ -5164,92 +5163,110 @@ up.Layer.Cover = (_a = class Cover extends up.Layer.OverlayWithViewport {
|
|
5164
5163
|
/* 58 */
|
5165
5164
|
/***/ (() => {
|
5166
5165
|
|
5166
|
+
var _a;
|
5167
5167
|
const u = up.util;
|
5168
5168
|
const e = up.element;
|
5169
|
-
up.LayerLookup = class LayerLookup {
|
5170
|
-
|
5171
|
-
|
5172
|
-
|
5173
|
-
|
5174
|
-
|
5175
|
-
|
5176
|
-
|
5177
|
-
this._origin = options.origin;
|
5178
|
-
this._baseLayer = options.baseLayer || this._originLayer() || this._stack.current;
|
5179
|
-
if (u.isString(this._baseLayer)) {
|
5180
|
-
const recursiveOptions = Object.assign(Object.assign({}, options), { baseLayer: this._stack.current, normalizeLayerOptions: false });
|
5181
|
-
this._baseLayer = new this.constructor(this._stack, this._baseLayer, recursiveOptions).first();
|
5169
|
+
up.LayerLookup = (_a = class LayerLookup {
|
5170
|
+
constructor(stack, options) {
|
5171
|
+
this._stack = stack;
|
5172
|
+
if (options.normalizeLayerOptions !== false) {
|
5173
|
+
up.layer.normalizeOptions(options);
|
5174
|
+
}
|
5175
|
+
this._options = options;
|
5176
|
+
this._values = u.parseTokens(options.layer);
|
5182
5177
|
}
|
5183
|
-
|
5184
|
-
|
5185
|
-
|
5186
|
-
|
5178
|
+
all() {
|
5179
|
+
let results = u.flatMap(this._values, value => this._resolveValue(value));
|
5180
|
+
results = u.compact(results);
|
5181
|
+
results = u.uniq(results);
|
5182
|
+
return results;
|
5187
5183
|
}
|
5188
|
-
|
5189
|
-
|
5190
|
-
|
5191
|
-
|
5192
|
-
|
5193
|
-
|
5194
|
-
|
5195
|
-
results = u.uniq(results);
|
5196
|
-
return results;
|
5197
|
-
}
|
5198
|
-
_forElement(element) {
|
5199
|
-
element = e.get(element);
|
5200
|
-
return u.find(this._stack.reversed(), layer => layer.contains(element));
|
5201
|
-
}
|
5202
|
-
_forIndex(value) {
|
5203
|
-
return this._stack.at(value);
|
5204
|
-
}
|
5205
|
-
_resolveValue(value) {
|
5206
|
-
if (value instanceof up.Layer) {
|
5207
|
-
return value;
|
5184
|
+
static all(stack, ...args) {
|
5185
|
+
const options = u.parseArgIntoOptions(args, 'layer');
|
5186
|
+
const { layer } = options;
|
5187
|
+
if (layer instanceof up.Layer) {
|
5188
|
+
return [layer];
|
5189
|
+
}
|
5190
|
+
return new this(stack, options).all();
|
5208
5191
|
}
|
5209
|
-
|
5210
|
-
|
5192
|
+
_forElement(element) {
|
5193
|
+
element = e.get(element);
|
5194
|
+
return u.find(this._stack.reversed(), layer => layer.contains(element));
|
5211
5195
|
}
|
5212
|
-
|
5213
|
-
return this.
|
5196
|
+
_forIndex(value) {
|
5197
|
+
return this._stack.at(value);
|
5214
5198
|
}
|
5215
|
-
|
5216
|
-
|
5199
|
+
_resolveValue(value) {
|
5200
|
+
if (value instanceof up.Layer) {
|
5201
|
+
return value;
|
5202
|
+
}
|
5203
|
+
if (u.isNumber(value)) {
|
5204
|
+
return this._forIndex(value);
|
5205
|
+
}
|
5206
|
+
if (/^\d+$/.test(value)) {
|
5207
|
+
return this._forIndex(Number(value));
|
5208
|
+
}
|
5209
|
+
if (u.isElementish(value)) {
|
5210
|
+
return this._forElement(value);
|
5211
|
+
}
|
5212
|
+
switch (value) {
|
5213
|
+
case 'any':
|
5214
|
+
return [this._getBaseLayer(), ...this._stack.reversed()];
|
5215
|
+
case 'current':
|
5216
|
+
return this._getBaseLayer();
|
5217
|
+
case 'closest':
|
5218
|
+
return this._stack.selfAndAncestorsOf(this._getBaseLayer());
|
5219
|
+
case 'parent':
|
5220
|
+
return this._getBaseLayer().parent;
|
5221
|
+
case 'ancestor':
|
5222
|
+
case 'ancestors':
|
5223
|
+
return this._getBaseLayer().ancestors;
|
5224
|
+
case 'child':
|
5225
|
+
return this._getBaseLayer().child;
|
5226
|
+
case 'descendant':
|
5227
|
+
case 'descendants':
|
5228
|
+
return this._getBaseLayer().descendants;
|
5229
|
+
case 'subtree':
|
5230
|
+
return this._getBaseLayer().subtree;
|
5231
|
+
case 'new':
|
5232
|
+
return 'new';
|
5233
|
+
case 'root':
|
5234
|
+
return this._stack.root;
|
5235
|
+
case 'overlay':
|
5236
|
+
case 'overlays':
|
5237
|
+
return u.reverse(this._stack.overlays);
|
5238
|
+
case 'front':
|
5239
|
+
return this._stack.front;
|
5240
|
+
case 'origin':
|
5241
|
+
return this._getOriginLayer();
|
5242
|
+
default:
|
5243
|
+
return up.fail("Unknown { layer } option: %o", value);
|
5244
|
+
}
|
5245
|
+
}
|
5246
|
+
_getOriginLayer() {
|
5247
|
+
let { origin } = this._options;
|
5248
|
+
if (origin) {
|
5249
|
+
return this._forElement(origin);
|
5250
|
+
}
|
5217
5251
|
}
|
5218
|
-
|
5219
|
-
|
5220
|
-
|
5221
|
-
|
5222
|
-
return this.
|
5223
|
-
|
5224
|
-
|
5225
|
-
|
5226
|
-
|
5227
|
-
case 'ancestor':
|
5228
|
-
case 'ancestors':
|
5229
|
-
return this._baseLayer.ancestors;
|
5230
|
-
case 'child':
|
5231
|
-
return this._baseLayer.child;
|
5232
|
-
case 'descendant':
|
5233
|
-
case 'descendants':
|
5234
|
-
return this._baseLayer.descendants;
|
5235
|
-
case 'subtree':
|
5236
|
-
return this._baseLayer.subtree;
|
5237
|
-
case 'new':
|
5238
|
-
return 'new';
|
5239
|
-
case 'root':
|
5240
|
-
return this._stack.root;
|
5241
|
-
case 'overlay':
|
5242
|
-
case 'overlays':
|
5243
|
-
return u.reverse(this._stack.overlays);
|
5244
|
-
case 'front':
|
5245
|
-
return this._stack.front;
|
5246
|
-
case 'origin':
|
5247
|
-
return this._originLayer();
|
5248
|
-
default:
|
5249
|
-
return up.fail("Unknown { layer } option: %o", value);
|
5252
|
+
_getBaseLayer() {
|
5253
|
+
let { baseLayer } = this._options;
|
5254
|
+
if (u.isString(baseLayer)) {
|
5255
|
+
const recursiveOptions = Object.assign(Object.assign({}, this._options), { baseLayer: this._stack.current, normalizeLayerOptions: false, layer: baseLayer });
|
5256
|
+
return this.constructor.all(this._stack, recursiveOptions)[0];
|
5257
|
+
}
|
5258
|
+
else {
|
5259
|
+
return baseLayer || this._getOriginLayer() || this._stack.current;
|
5260
|
+
}
|
5250
5261
|
}
|
5251
|
-
}
|
5252
|
-
|
5262
|
+
},
|
5263
|
+
(() => {
|
5264
|
+
u.memoizeMethod(_a.prototype, {
|
5265
|
+
_getBaseLayer: true,
|
5266
|
+
_getOriginLayer: true,
|
5267
|
+
});
|
5268
|
+
})(),
|
5269
|
+
_a);
|
5253
5270
|
|
5254
5271
|
|
5255
5272
|
/***/ }),
|
@@ -5317,7 +5334,7 @@ up.LayerStack = class LayerStack {
|
|
5317
5334
|
return this.getAll(...args)[0];
|
5318
5335
|
}
|
5319
5336
|
getAll(...args) {
|
5320
|
-
return
|
5337
|
+
return up.LayerLookup.all(this, ...args);
|
5321
5338
|
}
|
5322
5339
|
sync() {
|
5323
5340
|
for (let layer of this.layers) {
|
@@ -5370,22 +5387,22 @@ up.LayerStack = class LayerStack {
|
|
5370
5387
|
/* 60 */
|
5371
5388
|
/***/ (() => {
|
5372
5389
|
|
5390
|
+
const u = up.util;
|
5373
5391
|
up.LinkFeedbackURLs = class LinkFeedbackURLs {
|
5374
5392
|
constructor(link) {
|
5375
|
-
const normalize = up.feedback.normalizeURL;
|
5376
5393
|
this._isSafe = up.link.isSafe(link);
|
5377
5394
|
if (this._isSafe) {
|
5378
5395
|
const href = link.getAttribute('href');
|
5379
5396
|
if (href && (href !== '#')) {
|
5380
|
-
this.
|
5397
|
+
this._href = u.matchableURL(href);
|
5381
5398
|
}
|
5382
5399
|
const upHREF = link.getAttribute('up-href');
|
5383
5400
|
if (upHREF) {
|
5384
|
-
this._upHREF =
|
5401
|
+
this._upHREF = u.matchableURL(upHREF);
|
5385
5402
|
}
|
5386
5403
|
const alias = link.getAttribute('up-alias');
|
5387
5404
|
if (alias) {
|
5388
|
-
this._aliasPattern = new up.URLPattern(alias
|
5405
|
+
this._aliasPattern = new up.URLPattern(alias);
|
5389
5406
|
}
|
5390
5407
|
}
|
5391
5408
|
}
|
@@ -5394,7 +5411,7 @@ up.LinkFeedbackURLs = class LinkFeedbackURLs {
|
|
5394
5411
|
if (!normalizedLocation) {
|
5395
5412
|
return false;
|
5396
5413
|
}
|
5397
|
-
return !!(this.
|
5414
|
+
return !!(this._href === normalizedLocation ||
|
5398
5415
|
this._upHREF === normalizedLocation ||
|
5399
5416
|
((_b = (_a = this._aliasPattern) === null || _a === void 0 ? void 0 : _a.test) === null || _b === void 0 ? void 0 : _b.call(_a, normalizedLocation, false)));
|
5400
5417
|
}
|
@@ -6039,6 +6056,7 @@ up.RenderOptions = (function () {
|
|
6039
6056
|
'source',
|
6040
6057
|
'saveScroll',
|
6041
6058
|
'navigate',
|
6059
|
+
'baseLayer',
|
6042
6060
|
]);
|
6043
6061
|
const CONTENT_KEYS = [
|
6044
6062
|
'url',
|
@@ -6066,7 +6084,13 @@ up.RenderOptions = (function () {
|
|
6066
6084
|
var _a, _b;
|
6067
6085
|
(_b = (_a = up.migrate).preprocessRenderOptions) === null || _b === void 0 ? void 0 : _b.call(_a, options);
|
6068
6086
|
const defaults = u.merge(GLOBAL_DEFAULTS, navigateDefaults(options));
|
6069
|
-
return u.merge(u.omit(defaults, LATE_KEYS), { defaults }, { inputDevice: up.event.inputDevice }, options, preloadOverrides(options));
|
6087
|
+
return u.merge(u.omit(defaults, LATE_KEYS), { defaults }, { inputDevice: up.event.inputDevice }, options, lookupLayers(options), preloadOverrides(options));
|
6088
|
+
}
|
6089
|
+
function lookupLayers(options) {
|
6090
|
+
return {
|
6091
|
+
layers: up.layer.getAll(options),
|
6092
|
+
normalizeLayerOptions: false,
|
6093
|
+
};
|
6070
6094
|
}
|
6071
6095
|
function finalize(preprocessedOptions, lateDefaults) {
|
6072
6096
|
return u.merge(preprocessedOptions.defaults, lateDefaults, preprocessedOptions);
|
@@ -6093,11 +6117,13 @@ up.RenderOptions = (function () {
|
|
6093
6117
|
return overrides;
|
6094
6118
|
}
|
6095
6119
|
function deriveFailOptions(preprocessedOptions) {
|
6120
|
+
let overrides = failOverrides(preprocessedOptions);
|
6121
|
+
let layers = lookupLayers(overrides);
|
6096
6122
|
if (preprocessedOptions.failOptions) {
|
6097
|
-
return Object.assign(Object.assign(Object.assign(Object.assign({}, preprocessedOptions.defaults), u.pick(preprocessedOptions, SHARED_KEYS)),
|
6123
|
+
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, preprocessedOptions.defaults), u.pick(preprocessedOptions, SHARED_KEYS)), overrides), layers), { failPrefixForced: true });
|
6098
6124
|
}
|
6099
6125
|
else {
|
6100
|
-
return Object.assign(Object.assign({}, preprocessedOptions),
|
6126
|
+
return Object.assign(Object.assign(Object.assign({}, preprocessedOptions), overrides), layers);
|
6101
6127
|
}
|
6102
6128
|
}
|
6103
6129
|
return {
|
@@ -7163,16 +7189,16 @@ const e = up.element;
|
|
7163
7189
|
const u = up.util;
|
7164
7190
|
up.RevealMotion = class RevealMotion {
|
7165
7191
|
constructor(element, options = {}) {
|
7166
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
7192
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
7167
7193
|
this._element = element;
|
7168
7194
|
this._viewport = e.get(options.viewport) || up.viewport.get(this._element);
|
7169
7195
|
this._obstructionsLayer = up.layer.get(this._viewport);
|
7170
|
-
this._behavior = (_a = options.
|
7196
|
+
this._behavior = (_b = (_a = options.scrollBehavior) !== null && _a !== void 0 ? _a : options.behavior) !== null && _b !== void 0 ? _b : 'instant';
|
7171
7197
|
const viewportConfig = up.viewport.config;
|
7172
|
-
this._snap = (
|
7173
|
-
this._padding = (
|
7174
|
-
this._top = (
|
7175
|
-
this._max = (
|
7198
|
+
this._snap = (_d = (_c = options.snap) !== null && _c !== void 0 ? _c : options.revealSnap) !== null && _d !== void 0 ? _d : viewportConfig.revealSnap;
|
7199
|
+
this._padding = (_f = (_e = options.padding) !== null && _e !== void 0 ? _e : options.revealPadding) !== null && _f !== void 0 ? _f : viewportConfig.revealPadding;
|
7200
|
+
this._top = (_h = (_g = options.top) !== null && _g !== void 0 ? _g : options.revealTop) !== null && _h !== void 0 ? _h : viewportConfig.revealTop;
|
7201
|
+
this._max = (_k = (_j = options.max) !== null && _j !== void 0 ? _j : options.revealMax) !== null && _k !== void 0 ? _k : viewportConfig.revealMax;
|
7176
7202
|
this._topObstructionSelector = viewportConfig.selector('fixedTopSelectors');
|
7177
7203
|
this._bottomObstructionSelector = viewportConfig.selector('fixedBottomSelectors');
|
7178
7204
|
}
|
@@ -7441,8 +7467,7 @@ up.Tether = class Tether {
|
|
7441
7467
|
|
7442
7468
|
const u = up.util;
|
7443
7469
|
up.URLPattern = class URLPattern {
|
7444
|
-
constructor(fullPattern
|
7445
|
-
this._normalizeURL = normalizeURL;
|
7470
|
+
constructor(fullPattern) {
|
7446
7471
|
this._groups = [];
|
7447
7472
|
const positiveList = [];
|
7448
7473
|
const negativeList = [];
|
@@ -7461,14 +7486,8 @@ up.URLPattern = class URLPattern {
|
|
7461
7486
|
if (!list.length) {
|
7462
7487
|
return;
|
7463
7488
|
}
|
7464
|
-
list = list.
|
7465
|
-
|
7466
|
-
url = '/' + url;
|
7467
|
-
}
|
7468
|
-
url = this._normalizeURL(url);
|
7469
|
-
url = u.escapeRegExp(url);
|
7470
|
-
return url;
|
7471
|
-
});
|
7489
|
+
list = u.flatMap(list, u.matchableURLPatternAtom);
|
7490
|
+
list = list.map(u.escapeRegExp);
|
7472
7491
|
let reCode = list.join('|');
|
7473
7492
|
reCode = reCode.replace(/\\\*/g, '.*?');
|
7474
7493
|
reCode = reCode.replace(/(:|\\\$)([a-z][\w-]*)/ig, (match, type, name) => {
|
@@ -7489,13 +7508,13 @@ up.URLPattern = class URLPattern {
|
|
7489
7508
|
}
|
7490
7509
|
test(url, doNormalize = true) {
|
7491
7510
|
if (doNormalize) {
|
7492
|
-
url =
|
7511
|
+
url = u.matchableURL(url);
|
7493
7512
|
}
|
7494
7513
|
return this._positiveRegexp.test(url) && !this._isExcluded(url);
|
7495
7514
|
}
|
7496
7515
|
recognize(url, doNormalize = true) {
|
7497
7516
|
if (doNormalize) {
|
7498
|
-
url =
|
7517
|
+
url = u.matchableURL(url);
|
7499
7518
|
}
|
7500
7519
|
let match = this._positiveRegexp.exec(url);
|
7501
7520
|
if (match && !this._isExcluded(url)) {
|
@@ -7631,9 +7650,8 @@ up.event = (function () {
|
|
7631
7650
|
}
|
7632
7651
|
function build(...args) {
|
7633
7652
|
const props = u.extractOptions(args);
|
7634
|
-
const type = args[0] || props.type || up.fail('
|
7635
|
-
const event =
|
7636
|
-
event.initEvent(type, true, true);
|
7653
|
+
const type = args[0] || props.type || up.fail('Missing event type');
|
7654
|
+
const event = new Event(type, { bubbles: true, cancelable: true });
|
7637
7655
|
Object.assign(event, u.omit(props, ['type', 'target']));
|
7638
7656
|
return event;
|
7639
7657
|
}
|
@@ -7658,8 +7676,11 @@ up.event = (function () {
|
|
7658
7676
|
return (u.isUndefined(event.button) || (event.button === 0)) &&
|
7659
7677
|
!u.some(keyModifiers, modifier => event[modifier]);
|
7660
7678
|
}
|
7679
|
+
function isSyntheticClick(event) {
|
7680
|
+
return u.isMissing(event.clientX);
|
7681
|
+
}
|
7661
7682
|
function fork(originalEvent, newType, copyKeys = []) {
|
7662
|
-
const newEvent =
|
7683
|
+
const newEvent = build(newType, u.pick(originalEvent, copyKeys));
|
7663
7684
|
newEvent.originalEvent = originalEvent;
|
7664
7685
|
['stopPropagation', 'stopImmediatePropagation', 'preventDefault'].forEach(function (key) {
|
7665
7686
|
const originalMethod = newEvent[key];
|
@@ -7683,7 +7704,7 @@ up.event = (function () {
|
|
7683
7704
|
Object.assign(forkedEvent, eventProps);
|
7684
7705
|
up.emit(element, forkedEvent);
|
7685
7706
|
}
|
7686
|
-
on('up:click', '
|
7707
|
+
on('up:click', '[up-emit]', executeEmitAttr);
|
7687
7708
|
let inputDevices = ['unknown'];
|
7688
7709
|
function getInputDevice() {
|
7689
7710
|
return u.last(inputDevices);
|
@@ -7704,6 +7725,7 @@ up.event = (function () {
|
|
7704
7725
|
onEscape,
|
7705
7726
|
halt,
|
7706
7727
|
isUnmodified,
|
7728
|
+
isSyntheticClick,
|
7707
7729
|
fork,
|
7708
7730
|
keyModifiers,
|
7709
7731
|
get inputDevice() { return getInputDevice(); }
|
@@ -7954,7 +7976,7 @@ up.script = (function () {
|
|
7954
7976
|
}));
|
7955
7977
|
const SYSTEM_MACRO_PRIORITIES = {
|
7956
7978
|
'[up-back]': -100,
|
7957
|
-
'[up-
|
7979
|
+
'[up-clickable]': -200,
|
7958
7980
|
'[up-drawer]': -200,
|
7959
7981
|
'[up-modal]': -200,
|
7960
7982
|
'[up-cover]': -200,
|
@@ -8167,13 +8189,8 @@ up.history = (function () {
|
|
8167
8189
|
nextPreviousLocation = undefined;
|
8168
8190
|
trackCurrentLocation();
|
8169
8191
|
}
|
8170
|
-
|
8171
|
-
|
8172
|
-
options = u.merge(DEFAULT_NORMALIZE_OPTIONS, options);
|
8173
|
-
return u.normalizeURL(url, options);
|
8174
|
-
}
|
8175
|
-
function currentLocation(normalizeOptions) {
|
8176
|
-
return normalizeURL(location.href, normalizeOptions);
|
8192
|
+
function currentLocation() {
|
8193
|
+
return u.normalizeURL(location.href);
|
8177
8194
|
}
|
8178
8195
|
function trackCurrentLocation() {
|
8179
8196
|
const url = currentLocation();
|
@@ -8183,19 +8200,17 @@ up.history = (function () {
|
|
8183
8200
|
}
|
8184
8201
|
}
|
8185
8202
|
trackCurrentLocation();
|
8186
|
-
const ADDITIONAL_NORMALIZE_OPTIONS_FOR_COMPARISON = { trailingSlash: false };
|
8187
8203
|
function isLocation(url, options) {
|
8188
|
-
|
8189
|
-
return normalizeURL(url, options) === currentLocation(options);
|
8204
|
+
return u.matchURLs(url, location.href, Object.assign({ hash: true }, options));
|
8190
8205
|
}
|
8191
8206
|
function replace(location, options = {}) {
|
8192
|
-
location = normalizeURL(location);
|
8207
|
+
location = u.normalizeURL(location);
|
8193
8208
|
if (manipulate('replaceState', location) && (options.event !== false)) {
|
8194
8209
|
emitLocationChanged({ location, reason: 'replace', log: `Replaced state for ${location}` });
|
8195
8210
|
}
|
8196
8211
|
}
|
8197
8212
|
function push(location) {
|
8198
|
-
location = normalizeURL(location);
|
8213
|
+
location = u.normalizeURL(location);
|
8199
8214
|
if (!isLocation(location) && manipulate('pushState', location)) {
|
8200
8215
|
emitLocationChanged({ location, reason: 'push', log: `Advanced to location ${location}` });
|
8201
8216
|
}
|
@@ -8223,7 +8238,7 @@ up.history = (function () {
|
|
8223
8238
|
return;
|
8224
8239
|
}
|
8225
8240
|
let location = currentLocation();
|
8226
|
-
up.render({
|
8241
|
+
up.error.muteUncriticalRejection(up.render({
|
8227
8242
|
guardEvent: up.event.build('up:location:restore', { location, log: `Restoring location ${location}` }),
|
8228
8243
|
url: location,
|
8229
8244
|
target: config.restoreTargets,
|
@@ -8238,7 +8253,7 @@ up.history = (function () {
|
|
8238
8253
|
scroll: ['restore', 'auto'],
|
8239
8254
|
saveFocus: false,
|
8240
8255
|
focus: ['restore', 'auto'],
|
8241
|
-
});
|
8256
|
+
}));
|
8242
8257
|
}
|
8243
8258
|
function onPop(event) {
|
8244
8259
|
trackCurrentLocation();
|
@@ -8283,7 +8298,7 @@ up.history = (function () {
|
|
8283
8298
|
function updateLang(newLang) {
|
8284
8299
|
e.toggleAttr(e.root, 'lang', newLang, !!newLang);
|
8285
8300
|
}
|
8286
|
-
up.macro('
|
8301
|
+
up.macro('[up-back]', function (link) {
|
8287
8302
|
if (previousLocation) {
|
8288
8303
|
e.setMissingAttrs(link, {
|
8289
8304
|
'up-href': previousLocation,
|
@@ -8300,7 +8315,6 @@ up.history = (function () {
|
|
8300
8315
|
replace,
|
8301
8316
|
get location() { return currentLocation(); },
|
8302
8317
|
get previousLocation() { return previousLocation; },
|
8303
|
-
normalizeURL,
|
8304
8318
|
isLocation,
|
8305
8319
|
findMetaTags,
|
8306
8320
|
updateMetaTags,
|
@@ -8375,6 +8389,9 @@ up.fragment = (function () {
|
|
8375
8389
|
element = getSmart(element, options);
|
8376
8390
|
return e.closestAttr(element, 'up-source');
|
8377
8391
|
}
|
8392
|
+
function normalizeSource(source) {
|
8393
|
+
return u.normalizeURL(source, { hash: false });
|
8394
|
+
}
|
8378
8395
|
function timeOf(element) {
|
8379
8396
|
let value = e.closestAttr(element, 'up-time');
|
8380
8397
|
if (value && value !== 'false') {
|
@@ -8809,7 +8826,7 @@ up.fragment = (function () {
|
|
8809
8826
|
}
|
8810
8827
|
up.on('up:framework:boot', function () {
|
8811
8828
|
const { documentElement } = document;
|
8812
|
-
documentElement.setAttribute('up-source',
|
8829
|
+
documentElement.setAttribute('up-source', normalizeSource(location.href));
|
8813
8830
|
up.hello(documentElement);
|
8814
8831
|
if (!up.browser.canPushState()) {
|
8815
8832
|
return up.warn('Cannot push history changes. Next fragment update will load in a new page.');
|
@@ -8828,6 +8845,7 @@ up.fragment = (function () {
|
|
8828
8845
|
contains,
|
8829
8846
|
closest,
|
8830
8847
|
source: sourceOf,
|
8848
|
+
normalizeSource,
|
8831
8849
|
visit,
|
8832
8850
|
markAsDestroying: markFragmentAsDestroying,
|
8833
8851
|
emitInserted: emitFragmentInserted,
|
@@ -9042,7 +9060,7 @@ up.viewport = (function () {
|
|
9042
9060
|
}
|
9043
9061
|
}
|
9044
9062
|
function newStateCache() {
|
9045
|
-
return new up.FIFOCache({ capacity: 30, normalizeKey:
|
9063
|
+
return new up.FIFOCache({ capacity: 30, normalizeKey: u.matchableURL });
|
9046
9064
|
}
|
9047
9065
|
function parseOptions(args) {
|
9048
9066
|
const options = u.copy(u.extractOptions(args));
|
@@ -9721,8 +9739,10 @@ up.layer = (function () {
|
|
9721
9739
|
return [config[mode], config.overlay, config.any];
|
9722
9740
|
}
|
9723
9741
|
}
|
9724
|
-
function
|
9742
|
+
function normalizeLayerOption(options) {
|
9725
9743
|
var _a, _b;
|
9744
|
+
if (options.layer instanceof up.Layer)
|
9745
|
+
return;
|
9726
9746
|
(_b = (_a = up.migrate).handleLayerOptions) === null || _b === void 0 ? void 0 : _b.call(_a, options);
|
9727
9747
|
if (u.isGiven(options.layer)) {
|
9728
9748
|
let match = String(options.layer).match(/^(new|shatter|swap)( (\w+))?/);
|
@@ -9741,25 +9761,30 @@ up.layer = (function () {
|
|
9741
9761
|
}
|
9742
9762
|
}
|
9743
9763
|
}
|
9744
|
-
else {
|
9745
|
-
|
9746
|
-
|
9747
|
-
|
9748
|
-
|
9749
|
-
options.layer = stack.get(options.target, { normalizeLayerOptions: false });
|
9750
|
-
}
|
9751
|
-
else if (options.origin) {
|
9752
|
-
options.layer = 'origin';
|
9753
|
-
}
|
9754
|
-
else {
|
9755
|
-
options.layer = 'current';
|
9756
|
-
}
|
9764
|
+
else if (options.mode) {
|
9765
|
+
options.layer = 'new';
|
9766
|
+
}
|
9767
|
+
else if (u.isElementish(options.target)) {
|
9768
|
+
options.layer = stack.get(options.target, { normalizeLayerOptions: false });
|
9757
9769
|
}
|
9758
|
-
if (
|
9759
|
-
options.
|
9770
|
+
else if (options.origin) {
|
9771
|
+
options.layer = 'origin';
|
9760
9772
|
}
|
9773
|
+
else {
|
9774
|
+
options.layer = 'current';
|
9775
|
+
}
|
9776
|
+
}
|
9777
|
+
function setBaseLayerOption(options) {
|
9778
|
+
if (options.baseLayer instanceof up.Layer)
|
9779
|
+
return;
|
9761
9780
|
options.baseLayer = stack.get('current', Object.assign(Object.assign({}, options), { normalizeLayerOptions: false }));
|
9762
9781
|
}
|
9782
|
+
function normalizeOptions(options) {
|
9783
|
+
var _a;
|
9784
|
+
normalizeLayerOption(options);
|
9785
|
+
(_a = options.context) !== null && _a !== void 0 ? _a : (options.context = {});
|
9786
|
+
setBaseLayerOption(options);
|
9787
|
+
}
|
9763
9788
|
function build(options, beforeNew) {
|
9764
9789
|
var _a;
|
9765
9790
|
const { mode } = options;
|
@@ -9888,20 +9913,18 @@ up.link = (function () {
|
|
9888
9913
|
const u = up.util;
|
9889
9914
|
const e = up.element;
|
9890
9915
|
let lastMousedownTarget = null;
|
9891
|
-
const
|
9892
|
-
const
|
9893
|
-
const
|
9894
|
-
function combineFollowableSelectors(elementSelectors, attributeSelectors) {
|
9895
|
-
return u.flatMap(elementSelectors, elementSelector => attributeSelectors.map(attrSelector => elementSelector + attrSelector));
|
9896
|
-
}
|
9916
|
+
const ATTRS_WITH_LOCAL_HTML = '[up-content], [up-fragment], [up-document]';
|
9917
|
+
const ATTRS_SUGGESTING_FOLLOW = `${ATTRS_WITH_LOCAL_HTML}, [up-target], [up-layer], [up-transition], [up-preload]`;
|
9918
|
+
const DEFAULT_INTERACTIVE_ELEMENT = 'a[href], button';
|
9897
9919
|
const config = new up.Config(() => ({
|
9898
|
-
followSelectors:
|
9899
|
-
noFollowSelectors: ['[up-follow=false]', 'a[download]', 'a[target]', 'a[href^="
|
9920
|
+
followSelectors: ['[up-follow]', `a:is(${ATTRS_SUGGESTING_FOLLOW})`],
|
9921
|
+
noFollowSelectors: ['[up-follow=false]', 'a[download]', 'a[target]', 'a[href^="javascript:"]', 'a[href^="mailto:"]', `a[href^="#"]:not(${ATTRS_WITH_LOCAL_HTML})`, e.crossOriginSelector('href'), e.crossOriginSelector('up-href')],
|
9900
9922
|
instantSelectors: ['[up-instant]'],
|
9901
9923
|
noInstantSelectors: ['[up-instant=false]', '[onclick]'],
|
9902
|
-
preloadSelectors:
|
9924
|
+
preloadSelectors: ['[up-preload]'],
|
9903
9925
|
noPreloadSelectors: ['[up-preload=false]'],
|
9904
|
-
clickableSelectors:
|
9926
|
+
clickableSelectors: ['[up-clickable]', '[up-follow]', '[up-emit]', '[up-accept]', '[up-dismiss]', `a:is(${ATTRS_SUGGESTING_FOLLOW})`],
|
9927
|
+
noClickableSelectors: ['[up-clickable=false]', DEFAULT_INTERACTIVE_ELEMENT],
|
9905
9928
|
preloadDelay: 90,
|
9906
9929
|
}));
|
9907
9930
|
function isPreloadDisabled(link) {
|
@@ -10035,18 +10058,15 @@ up.link = (function () {
|
|
10035
10058
|
link.setAttribute('up-follow', '');
|
10036
10059
|
}
|
10037
10060
|
}
|
10038
|
-
function makeClickable(
|
10039
|
-
|
10040
|
-
|
10041
|
-
}
|
10042
|
-
let role = link.matches('a') ? 'link' : 'button';
|
10043
|
-
e.setMissingAttrs(link, {
|
10061
|
+
function makeClickable(element) {
|
10062
|
+
let role = element.matches('a, [up-follow]') ? 'link' : 'button';
|
10063
|
+
e.setMissingAttrs(element, {
|
10044
10064
|
tabindex: '0',
|
10045
10065
|
role,
|
10046
10066
|
'up-clickable': ''
|
10047
10067
|
});
|
10048
|
-
|
10049
|
-
if ((event.key === 'Enter') || (event.key === 'Space')) {
|
10068
|
+
element.addEventListener('keydown', function (event) {
|
10069
|
+
if ((event.key === 'Enter') || (element.role === 'button' && event.key === 'Space')) {
|
10050
10070
|
return forkEventAsUpClick(event);
|
10051
10071
|
}
|
10052
10072
|
});
|
@@ -10056,7 +10076,7 @@ up.link = (function () {
|
|
10056
10076
|
if (event.defaultPrevented) {
|
10057
10077
|
return false;
|
10058
10078
|
}
|
10059
|
-
const betterTargetSelector = `a, [up-
|
10079
|
+
const betterTargetSelector = `a, [up-follow], ${up.form.fieldSelector()}`;
|
10060
10080
|
const betterTarget = event.target.closest(betterTargetSelector);
|
10061
10081
|
return !betterTarget || (betterTarget === link);
|
10062
10082
|
}
|
@@ -10075,7 +10095,7 @@ up.link = (function () {
|
|
10075
10095
|
if (isInstant(element) && lastMousedownTarget) {
|
10076
10096
|
up.event.halt(event);
|
10077
10097
|
}
|
10078
|
-
else if (layer.wasHitByMouseEvent(event) && !didUserDragAway(event)) {
|
10098
|
+
else if (up.event.inputDevice === 'key' || up.event.isSyntheticClick(event) || (layer.wasHitByMouseEvent(event) && !didUserDragAway(event))) {
|
10079
10099
|
forkEventAsUpClick(event);
|
10080
10100
|
}
|
10081
10101
|
return lastMousedownTarget = null;
|
@@ -10161,6 +10181,7 @@ up.link = (function () {
|
|
10161
10181
|
return {
|
10162
10182
|
follow,
|
10163
10183
|
followOptions,
|
10184
|
+
requestOptions: parseRequestOptions,
|
10164
10185
|
preload,
|
10165
10186
|
makeFollowable,
|
10166
10187
|
isSafe,
|
@@ -10168,7 +10189,6 @@ up.link = (function () {
|
|
10168
10189
|
shouldFollowEvent,
|
10169
10190
|
convertClicks,
|
10170
10191
|
config,
|
10171
|
-
combineFollowableSelectors,
|
10172
10192
|
loadDeferred,
|
10173
10193
|
};
|
10174
10194
|
})();
|
@@ -10189,11 +10209,10 @@ up.deferred = { load: up.link.loadDeferred };
|
|
10189
10209
|
up.form = (function () {
|
10190
10210
|
const u = up.util;
|
10191
10211
|
const e = up.element;
|
10192
|
-
const ATTRIBUTES_SUGGESTING_SUBMIT = ['[up-submit]', '[up-target]', '[up-layer]', '[up-transition]'];
|
10193
10212
|
const config = new up.Config(() => ({
|
10194
10213
|
groupSelectors: ['[up-form-group]', 'fieldset', 'label', 'form'],
|
10195
10214
|
fieldSelectors: ['select', 'input:not([type=submit]):not([type=image])', 'button[type]:not([type=submit])', 'textarea'],
|
10196
|
-
submitSelectors:
|
10215
|
+
submitSelectors: ['form:is([up-submit], [up-target], [up-layer], [up-transition])'],
|
10197
10216
|
noSubmitSelectors: ['[up-submit=false]', '[target]', e.crossOriginSelector('action')],
|
10198
10217
|
submitButtonSelectors: ['input[type=submit]', 'input[type=image]', 'button[type=submit]', 'button:not([type])'],
|
10199
10218
|
watchInputEvents: ['input', 'change'],
|
@@ -10220,15 +10239,8 @@ up.form = (function () {
|
|
10220
10239
|
function findSubmitButtons(root) {
|
10221
10240
|
return e.subtree(root, submitButtonSelector());
|
10222
10241
|
}
|
10223
|
-
function
|
10224
|
-
|
10225
|
-
const focusedElement = document.activeElement;
|
10226
|
-
if (focusedElement && focusedElement.form === form) {
|
10227
|
-
if (focusedElement.matches(selector)) {
|
10228
|
-
return focusedElement;
|
10229
|
-
}
|
10230
|
-
}
|
10231
|
-
return e.get(form, selector);
|
10242
|
+
function isSubmitButton(element) {
|
10243
|
+
return element === null || element === void 0 ? void 0 : element.matches(submitButtonSelector());
|
10232
10244
|
}
|
10233
10245
|
function submitButtonSelector() {
|
10234
10246
|
return config.selector('submitButtonSelectors');
|
@@ -10330,15 +10342,15 @@ up.form = (function () {
|
|
10330
10342
|
return u.sequence(containers.map(disableContainer));
|
10331
10343
|
}
|
10332
10344
|
function destinationOptions(form, options, parserOptions) {
|
10345
|
+
var _a;
|
10333
10346
|
options = u.options(options);
|
10334
10347
|
form = getForm(form);
|
10335
10348
|
const parser = new up.OptionsParser(form, options, parserOptions);
|
10336
10349
|
parser.string('contentType', { attr: 'enctype' });
|
10337
10350
|
parser.json('headers');
|
10338
10351
|
const params = up.Params.fromForm(form);
|
10339
|
-
const submitButton =
|
10352
|
+
const submitButton = ((_a = options.submitButton) !== null && _a !== void 0 ? _a : (options.submitButton = findSubmitButtons(form)[0]));
|
10340
10353
|
if (submitButton) {
|
10341
|
-
options.submitButton = submitButton;
|
10342
10354
|
params.addField(submitButton);
|
10343
10355
|
options.method || (options.method = submitButton.getAttribute('formmethod'));
|
10344
10356
|
options.url || (options.url = submitButton.getAttribute('formaction'));
|
@@ -10356,12 +10368,6 @@ up.form = (function () {
|
|
10356
10368
|
}
|
10357
10369
|
return options;
|
10358
10370
|
}
|
10359
|
-
up.on('up:click', submitButtonSelector, function (event, button) {
|
10360
|
-
const form = getForm(button);
|
10361
|
-
if (form && isSubmittable(form)) {
|
10362
|
-
button.focus();
|
10363
|
-
}
|
10364
|
-
});
|
10365
10371
|
function watch(root, ...args) {
|
10366
10372
|
root = up.element.get(root);
|
10367
10373
|
const callback = u.extractCallback(args) || watchCallbackFromElement(root) || up.fail('No callback given for up.watch()');
|
@@ -10514,8 +10520,9 @@ up.form = (function () {
|
|
10514
10520
|
up.on('submit', config.selectorFn('submitSelectors'), function (event, form) {
|
10515
10521
|
if (event.defaultPrevented)
|
10516
10522
|
return;
|
10523
|
+
const submitButton = u.presence(event.submitter, isSubmitButton);
|
10517
10524
|
up.event.halt(event, { log: true });
|
10518
|
-
up.error.muteUncriticalRejection(submit(form));
|
10525
|
+
up.error.muteUncriticalRejection(submit(form, { submitButton }));
|
10519
10526
|
});
|
10520
10527
|
up.compiler(validatingFieldSelector, function (fieldOrForm) {
|
10521
10528
|
let validator = up.FormValidator.forElement(fieldOrForm);
|
@@ -10586,17 +10593,12 @@ up.feedback = (function () {
|
|
10586
10593
|
const CLASS_ACTIVE = 'up-active';
|
10587
10594
|
const CLASS_LOADING = 'up-loading';
|
10588
10595
|
const SELECTOR_LINK = 'a, [up-href]';
|
10589
|
-
function normalizeURL(url) {
|
10590
|
-
if (url) {
|
10591
|
-
return u.normalizeURL(url, { trailingSlash: false, hash: false });
|
10592
|
-
}
|
10593
|
-
}
|
10594
10596
|
function linkURLs(link) {
|
10595
10597
|
return link.upFeedbackURLs || (link.upFeedbackURLs = new up.LinkFeedbackURLs(link));
|
10596
10598
|
}
|
10597
10599
|
function updateFragment(fragment, { layer } = {}) {
|
10598
10600
|
layer || (layer = up.layer.get(fragment));
|
10599
|
-
let layerLocation =
|
10601
|
+
let layerLocation = getMatchableLayerLocation(layer);
|
10600
10602
|
const navSelector = config.selector('navSelectors');
|
10601
10603
|
const navLinkSelector = `${navSelector} :is(${SELECTOR_LINK}), ${navSelector}:is(${SELECTOR_LINK})`;
|
10602
10604
|
const links = up.fragment.all(navLinkSelector, { layer });
|
@@ -10608,8 +10610,8 @@ up.feedback = (function () {
|
|
10608
10610
|
e.toggleAttr(link, 'aria-current', 'page', isCurrent);
|
10609
10611
|
}
|
10610
10612
|
}
|
10611
|
-
function
|
10612
|
-
return layer.feedbackLocation ||
|
10613
|
+
function getMatchableLayerLocation(layer) {
|
10614
|
+
return layer.feedbackLocation || u.matchableURL(layer.location);
|
10613
10615
|
}
|
10614
10616
|
function findActivatableArea(element) {
|
10615
10617
|
return e.ancestor(element, SELECTOR_LINK) || element;
|
@@ -10635,7 +10637,7 @@ up.feedback = (function () {
|
|
10635
10637
|
}
|
10636
10638
|
function updateLayerIfLocationChanged(layer) {
|
10637
10639
|
const processedLocation = layer.feedbackLocation;
|
10638
|
-
const layerLocation =
|
10640
|
+
const layerLocation = getMatchableLayerLocation(layer.location);
|
10639
10641
|
if (!processedLocation || (processedLocation !== layerLocation)) {
|
10640
10642
|
layer.feedbackLocation = layerLocation;
|
10641
10643
|
updateFragment(layer.element, { layer });
|
@@ -10660,7 +10662,6 @@ up.feedback = (function () {
|
|
10660
10662
|
return {
|
10661
10663
|
config,
|
10662
10664
|
showAroundRequest,
|
10663
|
-
normalizeURL,
|
10664
10665
|
};
|
10665
10666
|
})();
|
10666
10667
|
|
@@ -10714,9 +10715,11 @@ up.radio = (function () {
|
|
10714
10715
|
up.FragmentPolling.forFragment(element).forceStop();
|
10715
10716
|
}
|
10716
10717
|
function pollOptions(fragment, options = {}) {
|
10717
|
-
const
|
10718
|
+
const defaults = { background: true };
|
10719
|
+
const parser = new up.OptionsParser(fragment, options, { defaults });
|
10718
10720
|
parser.number('interval', { default: config.pollInterval });
|
10719
10721
|
parser.string('ifLayer', { default: 'front' });
|
10722
|
+
parser.include(up.link.requestOptions);
|
10720
10723
|
return options;
|
10721
10724
|
}
|
10722
10725
|
up.attribute('up-poll', function (fragment) {
|