unpoly-rails 3.8.0.1 → 3.9.1
Sign up to get free protection for your applications and to get access to all the features.
- 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) {
|