unpoly-rails 2.7.1 → 3.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,95 +1,114 @@
1
- /******/ (function() { // webpackBootstrap
1
+ /******/ (() => { // webpackBootstrap
2
2
  /******/ var __webpack_modules__ = ([
3
3
  /* 0 */,
4
4
  /* 1 */
5
- /***/ (function() {
5
+ /***/ (() => {
6
6
 
7
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
8
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
9
- if (ar || !(i in from)) {
10
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
11
- ar[i] = from[i];
12
- }
13
- }
14
- return to.concat(ar || Array.prototype.slice.call(from));
15
- };
16
- var u = up.util;
17
- /*-
18
- @module up.migrate
19
- */
7
+ const u = up.util;
20
8
  up.migrate = (function () {
21
- var config = new up.Config(function () { return ({
9
+ const config = new up.Config(() => ({
22
10
  logLevel: 'warn'
23
- }); });
11
+ }));
24
12
  function renamedProperty(object, oldKey, newKey) {
25
- var warning = function () { return warn('Property { %s } has been renamed to { %s } (found in %o)', oldKey, newKey, object); };
26
- return Object.defineProperty(object, oldKey, {
27
- get: function () {
13
+ const warning = () => warn('Property { %s } has been renamed to { %s } (found in %o)', oldKey, newKey, object);
14
+ Object.defineProperty(object, oldKey, {
15
+ get() {
28
16
  warning();
29
17
  return this[newKey];
30
18
  },
31
- set: function (newValue) {
19
+ set(newValue) {
32
20
  warning();
33
21
  this[newKey] = newValue;
34
22
  }
35
23
  });
36
24
  }
25
+ function removedProperty(object, key) {
26
+ const warning = () => warn('Property { %s } has been removed without replacement (found in %o)', key, object);
27
+ Object.defineProperty(object, key, {
28
+ get() {
29
+ warning();
30
+ return this[key];
31
+ },
32
+ set(newValue) {
33
+ warning();
34
+ this[key] = newValue;
35
+ }
36
+ });
37
+ }
38
+ function renamedAttribute(oldAttr, newAttr, { scope, mapValue } = {}) {
39
+ let selector = scope || `[${oldAttr}]`;
40
+ up.macro(selector, { priority: -1000 }, function (element) {
41
+ if (element.hasAttribute(oldAttr)) {
42
+ warn('Attribute [%s] has been renamed to [%s] (found in %o)', oldAttr, newAttr, element);
43
+ let value = element.getAttribute(oldAttr);
44
+ if (mapValue) {
45
+ value = mapValue(value);
46
+ }
47
+ element.setAttribute(newAttr, value);
48
+ element.removeAttribute(oldAttr);
49
+ }
50
+ });
51
+ }
37
52
  function fixKey(object, oldKey, newKey) {
38
53
  if (u.isDefined(object[oldKey])) {
39
54
  warn('Property { %s } has been renamed to { %s } (found in %o)', oldKey, newKey, object);
40
55
  u.renameKey(object, oldKey, newKey);
41
56
  }
42
57
  }
43
- // Maps old event type to new event type
44
- var renamedEvents = {};
58
+ const renamedEvents = {};
45
59
  function renamedEvent(oldType, newType) {
46
60
  renamedEvents[oldType] = newType;
47
61
  }
62
+ const removedEvents = {};
63
+ function removedEvent(type, replacementExpression = null) {
64
+ removedEvents[type] = replacementExpression;
65
+ }
48
66
  function fixEventType(eventType) {
49
- var newEventType = renamedEvents[eventType];
67
+ let newEventType = renamedEvents[eventType];
50
68
  if (newEventType) {
51
- warn("Event ".concat(eventType, " has been renamed to ").concat(newEventType));
69
+ warn(`Event ${eventType} has been renamed to ${newEventType}`);
52
70
  return newEventType;
53
71
  }
72
+ else if (eventType in removedEvents) {
73
+ let message = `Event ${eventType} has been removed`;
74
+ let replacementExpression = removedEvents[eventType];
75
+ if (replacementExpression) {
76
+ message += `. Use ${replacementExpression} instead.`;
77
+ }
78
+ warn(message);
79
+ return eventType;
80
+ }
54
81
  else {
55
82
  return eventType;
56
83
  }
57
84
  }
58
85
  function fixEventTypes(eventTypes) {
59
- // Remove duplicates as e.g. up:history:pushed and up:history:replaced
60
- // both map to up:location:changed.
61
86
  return u.uniq(u.map(eventTypes, fixEventType));
62
87
  }
63
88
  function renamedPackage(oldName, newName) {
64
89
  Object.defineProperty(up, oldName, {
65
- get: function () {
66
- warn("up.".concat(oldName, " has been renamed to up.").concat(newName));
90
+ get() {
91
+ warn(`up.${oldName} has been renamed to up.${newName}`);
67
92
  return up[newName];
68
93
  }
69
94
  });
70
95
  }
71
- var warnedMessages = {};
72
- function warn(message) {
73
- var _a;
74
- var args = [];
75
- for (var _i = 1; _i < arguments.length; _i++) {
76
- args[_i - 1] = arguments[_i];
77
- }
78
- var formattedMessage = u.sprintf.apply(u, __spreadArray([message], args, false));
96
+ const warnedMessages = {};
97
+ function warn(message, ...args) {
98
+ const formattedMessage = u.sprintf(message, ...args);
79
99
  if (!warnedMessages[formattedMessage]) {
80
100
  warnedMessages[formattedMessage] = true;
81
- (_a = up.log)[config.logLevel].apply(_a, __spreadArray(['unpoly-migrate', message], args, false));
101
+ up.log[config.logLevel]('unpoly-migrate', message, ...args);
82
102
  }
83
103
  }
84
104
  function deprecated(deprecatedExpression, replacementExpression) {
85
- warn("".concat(deprecatedExpression, " has been deprecated. Use ").concat(replacementExpression, " instead."));
105
+ warn(`${deprecatedExpression} has been deprecated. Use ${replacementExpression} instead.`);
86
106
  }
87
- // Returns a resolved promise that prints a warning when #then() is called.
88
107
  function formerlyAsync(label) {
89
- var promise = Promise.resolve();
90
- var oldThen = promise.then;
108
+ const promise = Promise.resolve();
109
+ const oldThen = promise.then;
91
110
  promise.then = function () {
92
- warn("".concat(label, " is now a sync function"));
111
+ warn(`${label} no longer returns a promise`);
93
112
  return oldThen.apply(this, arguments);
94
113
  };
95
114
  return promise;
@@ -99,290 +118,193 @@ up.migrate = (function () {
99
118
  }
100
119
  up.on('up:framework:reset', reset);
101
120
  return {
102
- deprecated: deprecated,
103
- renamedPackage: renamedPackage,
104
- renamedProperty: renamedProperty,
105
- formerlyAsync: formerlyAsync,
106
- renamedEvent: renamedEvent,
107
- fixEventTypes: fixEventTypes,
108
- fixKey: fixKey,
109
- warn: warn,
121
+ deprecated,
122
+ renamedPackage,
123
+ renamedProperty,
124
+ removedProperty,
125
+ renamedAttribute,
126
+ formerlyAsync,
127
+ renamedEvent,
128
+ removedEvent,
129
+ fixEventTypes,
130
+ fixKey,
131
+ warn,
110
132
  loaded: true,
111
- config: config
133
+ config
112
134
  };
113
135
  })();
114
136
 
115
137
 
116
138
  /***/ }),
117
139
  /* 2 */
118
- /***/ (function() {
140
+ /***/ (() => {
119
141
 
120
- /*-
121
- @module up.util
122
- */
123
- /*-
124
- Returns a copy of the given object that only contains
125
- the given keys.
126
-
127
- @function up.util.only
128
- @param {Object} object
129
- @param {Array} ...keys
130
- @deprecated
131
- Use `up.util.pick()` instead.
132
- */
133
- up.util.only = function (object) {
134
- var keys = [];
135
- for (var _i = 1; _i < arguments.length; _i++) {
136
- keys[_i - 1] = arguments[_i];
137
- }
142
+ up.util.only = function (object, ...keys) {
138
143
  up.migrate.deprecated('up.util.only(object, ...keys)', 'up.util.pick(object, keys)');
139
144
  return up.util.pick(object, keys);
140
145
  };
141
- /*-
142
- Returns a copy of the given object that contains all except
143
- the given keys.
144
-
145
- @function up.util.except
146
- @param {Object} object
147
- @param {Array} ...keys
148
- @deprecated
149
- Use `up.util.omit(object, keys)` (with an array argument) instead of `up.util.object(...keys)` (with rest arguments).
150
- */
151
- up.util.except = function (object) {
152
- var keys = [];
153
- for (var _i = 1; _i < arguments.length; _i++) {
154
- keys[_i - 1] = arguments[_i];
155
- }
146
+ up.util.except = function (object, ...keys) {
156
147
  up.migrate.deprecated('up.util.except(object, ...keys)', 'up.util.omit(object, keys)');
157
148
  return up.util.omit(object, keys);
158
149
  };
159
- up.util.parseUrl = function () {
160
- var _a;
161
- var args = [];
162
- for (var _i = 0; _i < arguments.length; _i++) {
163
- args[_i] = arguments[_i];
164
- }
165
- up.migrate.warn('up.util.parseUrl() has been renamed to up.util.parseURL()');
166
- return (_a = up.util).parseURL.apply(_a, args);
150
+ up.util.parseUrl = function (...args) {
151
+ up.migrate.deprecated('up.util.parseUrl()', 'up.util.parseURL()');
152
+ return up.util.parseURL(...args);
167
153
  };
168
- up.util.any = function () {
169
- var _a;
170
- var args = [];
171
- for (var _i = 0; _i < arguments.length; _i++) {
172
- args[_i] = arguments[_i];
173
- }
174
- up.migrate.warn('up.util.any() has been renamed to up.util.some()');
175
- return (_a = up.util).some.apply(_a, args);
154
+ up.util.any = function (...args) {
155
+ up.migrate.deprecated('up.util.any()', 'up.util.some()');
156
+ return up.util.some(...args);
176
157
  };
177
- up.util.all = function () {
178
- var _a;
179
- var args = [];
180
- for (var _i = 0; _i < arguments.length; _i++) {
181
- args[_i] = arguments[_i];
182
- }
183
- up.migrate.warn('up.util.all() has been renamed to up.util.every()');
184
- return (_a = up.util).every.apply(_a, args);
158
+ up.util.all = function (...args) {
159
+ up.migrate.deprecated('up.util.all()', 'up.util.every()');
160
+ return up.util.every(...args);
185
161
  };
186
- up.util.detect = function () {
187
- var _a;
188
- var args = [];
189
- for (var _i = 0; _i < arguments.length; _i++) {
190
- args[_i] = arguments[_i];
191
- }
192
- up.migrate.warn('up.util.detect() has been renamed to up.util.find()');
193
- return (_a = up.util).find.apply(_a, args);
162
+ up.util.detect = function (...args) {
163
+ up.migrate.deprecated('up.util.detect()', 'up.util.find()');
164
+ return up.util.find(...args);
194
165
  };
195
- up.util.select = function () {
196
- var _a;
197
- var args = [];
198
- for (var _i = 0; _i < arguments.length; _i++) {
199
- args[_i] = arguments[_i];
200
- }
201
- up.migrate.warn('up.util.select() has been renamed to up.util.filter()');
202
- return (_a = up.util).filter.apply(_a, args);
166
+ up.util.select = function (...args) {
167
+ up.migrate.deprecated('up.util.select()', 'up.util.filter()');
168
+ return up.util.filter(...args);
203
169
  };
204
- up.util.setTimer = function () {
205
- var _a;
206
- var args = [];
207
- for (var _i = 0; _i < arguments.length; _i++) {
208
- args[_i] = arguments[_i];
209
- }
210
- up.migrate.warn('up.util.setTimer() has been renamed to up.util.timer()');
211
- return (_a = up.util).timer.apply(_a, args);
170
+ up.util.setTimer = function (...args) {
171
+ up.migrate.deprecated('up.util.setTimer()', 'up.util.timer()');
172
+ return up.util.timer(...args);
212
173
  };
213
- up.util.escapeHtml = function () {
214
- var _a;
215
- var args = [];
216
- for (var _i = 0; _i < arguments.length; _i++) {
217
- args[_i] = arguments[_i];
218
- }
219
- up.migrate.deprecated('up.util.escapeHtml', 'up.util.escapeHTML');
220
- return (_a = up.util).escapeHTML.apply(_a, args);
174
+ up.util.escapeHtml = function (...args) {
175
+ up.migrate.deprecated('up.util.escapeHtml()', 'up.util.escapeHTML()');
176
+ return up.util.escapeHTML(...args);
221
177
  };
222
- up.util.selectorForElement = function () {
223
- var _a;
224
- var args = [];
225
- for (var _i = 0; _i < arguments.length; _i++) {
226
- args[_i] = arguments[_i];
227
- }
228
- up.migrate.warn('up.util.selectorForElement() has been renamed to up.fragment.toTarget()');
229
- return (_a = up.fragment).toTarget.apply(_a, args);
178
+ up.util.selectorForElement = function (...args) {
179
+ up.migrate.deprecated('up.util.selectorForElement()', 'up.fragment.toTarget()');
180
+ return up.fragment.toTarget(...args);
230
181
  };
231
- up.util.nextFrame = function () {
232
- var _a;
233
- var args = [];
234
- for (var _i = 0; _i < arguments.length; _i++) {
235
- args[_i] = arguments[_i];
236
- }
237
- up.migrate.warn('up.util.nextFrame() has been renamed to up.util.task()');
238
- return (_a = up.util).task.apply(_a, args);
182
+ up.util.nextFrame = function (...args) {
183
+ up.migrate.deprecated('up.util.nextFrame()', 'up.util.task()');
184
+ return up.util.task(...args);
239
185
  };
240
- /*-
241
- Calls the given function for the given number of times.
242
-
243
- @function up.util.times
244
- @param {number} count
245
- @param {Function()} block
246
- @deprecated
247
- Use a `for` loop instead.
248
- */
249
186
  up.util.times = function (count, block) {
250
- for (var i = 0; i < count; i++) {
187
+ up.migrate.deprecated('up.util.times()', 'a `for` loop');
188
+ for (let i = 0; i < count; i++) {
251
189
  block();
252
190
  }
253
191
  };
192
+ up.util.assign = function (...args) {
193
+ up.migrate.deprecated('up.util.assign()', 'Object.assign()');
194
+ return Object.assign(...args);
195
+ };
196
+ up.util.values = function (...args) {
197
+ up.migrate.deprecated('up.util.values()', 'Object.values()');
198
+ return Object.values(...args);
199
+ };
254
200
 
255
201
 
256
202
  /***/ }),
257
203
  /* 3 */
258
- /***/ (function() {
204
+ /***/ (() => {
259
205
 
260
- up.browser.loadPage = function () {
261
- var _a;
262
- var args = [];
263
- for (var _i = 0; _i < arguments.length; _i++) {
264
- args[_i] = arguments[_i];
265
- }
266
- up.migrate.deprecated('up.browser.loadPage', 'up.network.loadPage');
267
- return (_a = up.network).loadPage.apply(_a, args);
206
+ up.browser.loadPage = function (...args) {
207
+ up.migrate.deprecated('up.browser.loadPage()', 'up.network.loadPage()');
208
+ return up.network.loadPage(...args);
268
209
  };
269
- up.browser.isSupported = function () {
270
- var _a;
271
- var args = [];
272
- for (var _i = 0; _i < arguments.length; _i++) {
273
- args[_i] = arguments[_i];
274
- }
275
- up.migrate.deprecated('up.browser.isSupported', 'up.framework.isSupported');
276
- return (_a = up.framework).isSupported.apply(_a, args);
210
+ up.browser.isSupported = function (...args) {
211
+ up.migrate.deprecated('up.browser.isSupported()', 'up.framework.isSupported()');
212
+ return up.framework.isSupported(...args);
277
213
  };
278
214
 
279
215
 
280
216
  /***/ }),
281
217
  /* 4 */
282
- /***/ (function() {
283
-
284
- /*-
285
- @module up.element
286
- */
287
- /*-
288
- Returns the first descendant element matching the given selector.
218
+ /***/ (() => {
289
219
 
290
- @function up.element.first
291
- @param {Element} [parent=document]
292
- The parent element whose descendants to search.
293
-
294
- If omitted, all elements in the `document` will be searched.
295
- @param {string} selector
296
- The CSS selector to match.
297
- @return {Element|undefined|null}
298
- The first element matching the selector.
299
-
300
- Returns `null` or `undefined` if no element macthes.
301
- @deprecated
302
- Use `up.element.get()` instead.
303
- */
304
- up.element.first = function () {
305
- var _a;
306
- var args = [];
307
- for (var _i = 0; _i < arguments.length; _i++) {
308
- args[_i] = arguments[_i];
309
- }
220
+ up.element.first = function (...args) {
310
221
  up.migrate.deprecated('up.element.first()', 'up.element.get()');
311
- return (_a = up.element).get.apply(_a, args);
222
+ return up.element.get(...args);
312
223
  };
313
- up.element.createFromHtml = function () {
314
- var _a;
315
- var args = [];
316
- for (var _i = 0; _i < arguments.length; _i++) {
317
- args[_i] = arguments[_i];
224
+ up.element.createFromHtml = function (...args) {
225
+ up.migrate.deprecated('up.element.createFromHtml()', 'up.element.createFromHTML()');
226
+ return up.element.createFromHTML(...args);
227
+ };
228
+ up.element.remove = function (element) {
229
+ up.migrate.deprecated('up.element.remove()', 'Element#remove()');
230
+ return element.remove();
231
+ };
232
+ up.element.matches = function (element, selector) {
233
+ up.migrate.deprecated('up.element.matches()', 'Element#matches()');
234
+ return element.matches(selector);
235
+ };
236
+ up.element.closest = function (element, selector) {
237
+ up.migrate.deprecated('up.element.closest()', 'Element#closest()');
238
+ return element.closest(selector);
239
+ };
240
+ up.element.replace = function (oldElement, newElement) {
241
+ up.migrate.deprecated('up.element.replace()', 'Element#replaceWith()');
242
+ return oldElement.replaceWith(newElement);
243
+ };
244
+ up.element.all = function (...args) {
245
+ up.migrate.deprecated('up.element.all()', 'Document#querySelectorAll() or Element#querySelectorAll()');
246
+ const selector = args.pop();
247
+ const root = args[0] || document;
248
+ return root.querySelectorAll(selector);
249
+ };
250
+ up.element.toggleClass = function (element, klass, newPresent) {
251
+ const list = element.classList;
252
+ if (newPresent == null) {
253
+ newPresent = !list.contains(klass);
254
+ }
255
+ if (newPresent) {
256
+ return list.add(klass);
318
257
  }
319
- up.migrate.deprecated('up.element.createFromHtml', 'up.element.createFromHTML');
320
- return (_a = up.element).createFromHTML.apply(_a, args);
258
+ else {
259
+ return list.remove(klass);
260
+ }
261
+ };
262
+ up.element.toSelector = function (...args) {
263
+ up.migrate.deprecated('up.element.toSelector()', 'up.fragment.toTarget()');
264
+ return up.fragment.toTarget(...args);
265
+ };
266
+ up.element.isAttached = function (element) {
267
+ up.migrate.deprecated('up.element.isAttached()', 'element.isConnected');
268
+ return element.isConnected;
269
+ };
270
+ up.element.isDetached = function (element) {
271
+ up.migrate.deprecated('up.element.isDetached()', '!element.isConnected');
272
+ return !element.isConnected;
321
273
  };
322
274
 
323
275
 
324
276
  /***/ }),
325
277
  /* 5 */
326
- /***/ (function() {
278
+ /***/ (() => {
327
279
 
328
- /*-
329
- @module up.event
330
- */
331
280
  up.migrate.renamedPackage('bus', 'event');
332
- /*-
333
- [Emits an event](/up.emit) and returns whether no listener
334
- has prevented the default action.
335
-
336
- ### Example
337
-
338
- ```javascript
339
- if (up.event.nobodyPrevents('disk:erase')) {
340
- Disk.erase()
341
- })
342
- ```
343
-
344
- @function up.event.nobodyPrevents
345
- @param {string} eventType
346
- @param {Object} eventProps
347
- @return {boolean}
348
- whether no listener has prevented the default action
349
- @deprecated
350
- Use `!up.emit(type).defaultPrevented` instead.
351
- */
352
- up.event.nobodyPrevents = function () {
353
- var args = [];
354
- for (var _i = 0; _i < arguments.length; _i++) {
355
- args[_i] = arguments[_i];
356
- }
281
+ up.event.nobodyPrevents = function (...args) {
357
282
  up.migrate.deprecated('up.event.nobodyPrevents(type)', '!up.emit(type).defaultPrevented');
358
- var event = up.emit.apply(up, args);
283
+ const event = up.emit(...args);
359
284
  return !event.defaultPrevented;
360
285
  };
361
286
 
362
287
 
363
288
  /***/ }),
364
289
  /* 6 */
365
- /***/ (function() {
290
+ /***/ (() => {
366
291
 
367
- var u = up.util;
368
- var e = up.element;
292
+ const u = up.util;
293
+ const e = up.element;
369
294
  up.migrate.postCompile = function (elements, compiler) {
370
- // up.compiler() has a legacy { keep } option that will automatically
371
- // set [up-keep] on the elements it compiles
372
- var keepValue;
295
+ let keepValue;
373
296
  if (keepValue = compiler.keep) {
374
297
  up.migrate.warn('The { keep: true } option for up.compiler() has been removed. Have the compiler set [up-keep] attribute instead.');
375
- var value = u.isString(keepValue) ? keepValue : '';
376
- for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {
377
- var element = elements_1[_i];
298
+ const value = u.isString(keepValue) ? keepValue : '';
299
+ for (let element of elements) {
378
300
  element.setAttribute('up-keep', value);
379
301
  }
380
302
  }
381
303
  };
382
304
  up.migrate.targetMacro = function (queryAttr, fixedResultAttrs, callback) {
383
- up.macro("[".concat(queryAttr, "]"), function (link) {
384
- var optionalTarget;
385
- var resultAttrs = u.copy(fixedResultAttrs);
305
+ up.macro(`[${queryAttr}]`, function (link) {
306
+ let optionalTarget;
307
+ const resultAttrs = u.copy(fixedResultAttrs);
386
308
  if ((optionalTarget = link.getAttribute(queryAttr))) {
387
309
  resultAttrs['up-target'] = optionalTarget;
388
310
  }
@@ -398,200 +320,181 @@ up.migrate.targetMacro = function (queryAttr, fixedResultAttrs, callback) {
398
320
 
399
321
  /***/ }),
400
322
  /* 7 */
401
- /***/ (function() {
323
+ /***/ (() => {
402
324
 
403
- /*-
404
- @module up.form
405
- */
406
325
  up.migrate.renamedProperty(up.form.config, 'fields', 'fieldSelectors');
407
326
  up.migrate.renamedProperty(up.form.config, 'submitButtons', 'submitButtonSelectors');
327
+ up.migrate.renamedProperty(up.form.config, 'validateTargets', 'groupSelectors');
328
+ up.migrate.renamedProperty(up.form.config, 'observeDelay', 'watchInputDelay');
329
+ up.migrate.migratedFormGroupSelectors = function () {
330
+ return up.form.config.groupSelectors.map((originalSelector) => {
331
+ let migratedSelector = originalSelector.replace(/:has\(:origin\)$/, '');
332
+ if (originalSelector !== migratedSelector) {
333
+ up.migrate.warn('Selectors in up.form.config.groupSelectors must not contain ":has(:origin)". The suffix is added automatically where required. Found in "%s".', originalSelector);
334
+ }
335
+ return migratedSelector;
336
+ });
337
+ };
338
+ up.migrate.renamedAttribute('up-observe', 'up-watch');
339
+ up.migrate.renamedAttribute('up-fieldset', 'up-form-group');
340
+ up.migrate.renamedAttribute('up-delay', 'up-watch-delay', { scope: '[up-autosubmit]' });
341
+ up.migrate.renamedAttribute('up-delay', 'up-watch-delay', { scope: '[up-watch]' });
342
+ up.migrate.renamedAttribute('up-restore-scroll', 'up-scroll', { mapValue: (value) => (value === 'true' ? 'restore' : 'reset') });
343
+ up.observe = function (...args) {
344
+ up.migrate.deprecated('up.observe()', 'up.watch()');
345
+ if (up.util.isList(args[0]) && args[0].length > 1) {
346
+ let list = args.shift();
347
+ up.migrate.warn('Calling up.observe() with a list of multiple elements is no longer supported by up.watch()');
348
+ let unwatchFns = up.util.map(list, (firstArg) => up.watch(firstArg, ...args));
349
+ return up.util.sequence(unwatchFns);
350
+ }
351
+ return up.watch(...args);
352
+ };
408
353
 
409
354
 
410
355
  /***/ }),
411
356
  /* 8 */
412
- /***/ (function() {
357
+ /***/ (() => {
413
358
 
414
- var __assign = (this && this.__assign) || function () {
415
- __assign = Object.assign || function(t) {
416
- for (var s, i = 1, n = arguments.length; i < n; i++) {
417
- s = arguments[i];
418
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
419
- t[p] = s[p];
420
- }
421
- return t;
422
- };
423
- return __assign.apply(this, arguments);
424
- };
425
- var u = up.util;
426
- /*-
427
- @module up.fragment
428
- */
359
+ const u = up.util;
429
360
  up.migrate.renamedPackage('flow', 'fragment');
430
361
  up.migrate.renamedPackage('dom', 'fragment');
431
362
  up.migrate.renamedProperty(up.fragment.config, 'fallbacks', 'mainTargets');
432
- up.migrate.handleResponseDocOptions = function (docOptions) { return up.migrate.fixKey(docOptions, 'html', 'document'); };
433
- /*-
434
- Replaces elements on the current page with corresponding elements
435
- from a new page fetched from the server.
436
-
437
- @function up.replace
438
- @param {string|Element|jQuery} target
439
- The CSS selector to update. You can also pass a DOM element or jQuery element
440
- here, in which case a selector will be inferred from the element's class and ID.
441
- @param {string} url
442
- The URL to fetch from the server.
443
- @param {Object} [options]
444
- See `options` for `up.render()`.
445
- @return {Promise}
446
- A promise that fulfills when the page has been updated.
447
- @deprecated
448
- Use `up.render()` or `up.navigate()` instead.
449
- */
363
+ up.migrate.handleResponseDocOptions = docOptions => up.migrate.fixKey(docOptions, 'html', 'document');
450
364
  up.replace = function (target, url, options) {
451
365
  up.migrate.deprecated('up.replace(target, url)', 'up.navigate(target, { url })');
452
- return up.navigate(__assign(__assign({}, options), { target: target, url: url }));
366
+ return up.navigate(Object.assign(Object.assign({}, options), { target, url }));
453
367
  };
454
- /*-
455
- Updates a selector on the current page with the
456
- same selector from the given HTML string.
457
-
458
- ### Example
459
-
460
- Let's say your current HTML looks like this:
461
-
462
- <div class="one">old one</div>
463
- <div class="two">old two</div>
464
-
465
- We now replace the second `<div>`, using an HTML string
466
- as the source:
467
-
468
- html = '<div class="one">new one</div>' +
469
- '<div class="two">new two</div>'
470
-
471
- up.extract('.two', html)
472
-
473
- Unpoly looks for the selector `.two` in the strings and updates its
474
- contents in the current page. The current page now looks like this:
475
-
476
- <div class="one">old one</div>
477
- <div class="two">new two</div>
478
-
479
- Note how only `.two` has changed. The update for `.one` was
480
- discarded, since it didn't match the selector.
481
-
482
- @function up.extract
483
- @param {string|Element|jQuery} target
484
- @param {string} html
485
- @param {Object} [options]
486
- See options for [`up.render()`](/up.render).
487
- @return {Promise}
488
- A promise that will be fulfilled when the selector was updated.
489
- @deprecated
490
- Use `up.render()` or `up.navigate()` instead.
491
- */
492
368
  up.extract = function (target, document, options) {
493
369
  up.migrate.deprecated('up.extract(target, document)', 'up.navigate(target, { document })');
494
- return up.navigate(__assign(__assign({}, options), { target: target, document: document }));
370
+ return up.navigate(Object.assign(Object.assign({}, options), { target, document }));
495
371
  };
496
- /*-
497
- Returns the first element matching the given selector, but
498
- ignores elements that are being [destroyed](/up.destroy) or that are being
499
- removed by a [transition](/up.morph).
500
-
501
- Returns `undefined` if no element matches these conditions.
502
-
503
- @function up.fragment.first
504
- @param {Element|jQuery} [root=document]
505
- The root element for the search. Only the root's children will be matched.
506
-
507
- May be omitted to search through all elements in the `document`.
508
- @param {string} selector
509
- The selector to match
510
- @param {string} [options.layer='current']
511
- The the layer in which to find the element.
512
-
513
- @see layer-option
514
- @param {string|Element|jQuery} [options.origin]
515
- An second element or selector that can be referenced as `:origin` in the first selector:
516
- @return {Element|undefined}
517
- The first element that is neither a ghost or being destroyed,
518
- or `undefined` if no such element was found.
519
- @deprecated
520
- Use `up.fragment.get()` instead.
521
- */
522
- up.fragment.first = function () {
523
- var _a;
524
- var args = [];
525
- for (var _i = 0; _i < arguments.length; _i++) {
526
- args[_i] = arguments[_i];
527
- }
372
+ up.fragment.first = function (...args) {
528
373
  up.migrate.deprecated('up.fragment.first()', 'up.fragment.get()');
529
- return (_a = up.fragment).get.apply(_a, args);
374
+ return up.fragment.get(...args);
530
375
  };
531
376
  up.first = up.fragment.first;
532
- up.migrate.handleScrollOptions = function (options) {
533
- if (u.isUndefined(options.scroll)) {
534
- // Rewrite deprecated { reveal } option (it had multiple variants)
535
- if (u.isString(options.reveal)) {
536
- up.migrate.deprecated("Option { reveal: '".concat(options.reveal, "' }"), "{ scroll: '".concat(options.reveal, "' }"));
537
- options.scroll = options.reveal;
538
- }
539
- else if (options.reveal === true) {
540
- up.migrate.deprecated('Option { reveal: true }', "{ scroll: 'target' }");
541
- options.scroll = 'target';
542
- }
543
- else if (options.reveal === false) {
544
- up.migrate.deprecated('Option { reveal: false }', "{ scroll: false }");
545
- options.scroll = false;
546
- }
547
- // Rewrite deprecated { resetScroll } option
548
- if (u.isDefined(options.resetScroll)) {
549
- up.migrate.deprecated('Option { resetScroll: true }', "{ scroll: 'reset' }");
550
- options.scroll = 'teset';
551
- }
552
- // Rewrite deprecated { restoreScroll } option
553
- if (u.isDefined(options.restoreScroll)) {
554
- up.migrate.deprecated('Option { restoreScroll: true }', "{ scroll: 'restore' }");
555
- options.scroll = 'restore';
556
- }
557
- }
558
- };
559
- up.migrate.handleHistoryOption = function (options) {
377
+ up.migrate.preprocessRenderOptions = function (options) {
560
378
  if (u.isString(options.history) && (options.history !== 'auto')) {
561
379
  up.migrate.warn("Passing a URL as { history } option is deprecated. Pass it as { location } instead.");
562
380
  options.location = options.history;
563
- // Also the URL in { history } is truthy, keeping a value in there would also inherit to failOptions,
564
- // where it would be expanded to { failLocation }.
565
381
  options.history = 'auto';
566
382
  }
567
- };
568
- up.migrate.preprocessRenderOptions = function (options) {
569
- up.migrate.handleHistoryOption(options);
570
- for (var _i = 0, _a = ['target', 'origin']; _i < _a.length; _i++) {
571
- var prop = _a[_i];
383
+ for (let prop of ['target', 'origin']) {
572
384
  if (u.isJQuery(options[prop])) {
573
385
  up.migrate.warn('Passing a jQuery collection as { %s } is deprecated. Pass it as a native element instead.', prop);
574
386
  options[prop] = up.element.get(options[prop]);
575
387
  }
576
388
  }
389
+ if (options.fail === 'auto') {
390
+ up.migrate.warn("The option { fail: 'auto' } is deprecated. Omit the option instead.");
391
+ delete options.fail;
392
+ }
393
+ let solo = u.pluckKey(options, 'solo');
394
+ if (u.isString(solo)) {
395
+ up.migrate.warn("The up.render() option { solo } has been replaced by { abort } and { abort } no longer accepts a URL pattern. Check if you can use { abort: 'target'} or use up.network.abort(pattern) instead.");
396
+ options.abort = (options) => up.network.abort(solo, options);
397
+ }
398
+ else if (u.isFunction(solo)) {
399
+ up.migrate.warn("The up.render() option { solo } has been replaced by { abort } and { abort } no longer accepts a Function(up.Request): boolean. Check if you can use { abort: 'target'} or use up.network.abort(fn) instead.");
400
+ options.abort = (options) => { up.network.abort(solo, options); };
401
+ }
402
+ else if (solo === true) {
403
+ up.migrate.warn('Option { solo: true }', "{ abort: 'all' }");
404
+ options.abort = 'all';
405
+ }
406
+ else if (solo === false) {
407
+ up.migrate.warn('Option { solo: false }', "{ abort: false }");
408
+ options.abort = false;
409
+ }
410
+ up.migrate.fixKey(options, 'keep', 'useKeep');
411
+ up.migrate.fixKey(options, 'hungry', 'useHungry');
412
+ up.migrate.fixKey(options, 'failOnFinished', 'onFailFinished');
413
+ if (u.isString(options.reveal)) {
414
+ up.migrate.deprecated(`Option { reveal: '${options.reveal}' }`, `{ scroll: '${options.reveal}' }`);
415
+ options.scroll = options.reveal;
416
+ }
417
+ else if (options.reveal === true) {
418
+ up.migrate.deprecated('Option { reveal: true }', "{ scroll: 'target' }");
419
+ options.scroll = 'target';
420
+ }
421
+ else if (options.reveal === false) {
422
+ up.migrate.deprecated('Option { reveal: false }', "{ scroll: false }");
423
+ options.scroll = false;
424
+ }
425
+ if (u.isDefined(options.resetScroll)) {
426
+ up.migrate.deprecated('Option { resetScroll: true }', "{ scroll: 'reset' }");
427
+ options.scroll = 'teset';
428
+ }
429
+ if (u.isDefined(options.restoreScroll)) {
430
+ up.migrate.deprecated('Option { restoreScroll: true }', "{ scroll: 'restore' }");
431
+ options.scroll = 'restore';
432
+ }
433
+ };
434
+ up.migrate.postprocessReloadOptions = function (options) {
435
+ var _a;
436
+ let lastModified = (_a = options.headers) === null || _a === void 0 ? void 0 : _a['If-Modified-Since'];
437
+ let legacyHeader;
438
+ if (lastModified) {
439
+ legacyHeader = Math.floor(new Date(lastModified) * 0.001).toString();
440
+ }
441
+ else {
442
+ legacyHeader = '0';
443
+ }
444
+ options.headers[up.protocol.headerize('reloadFromTime')] = legacyHeader;
445
+ };
446
+ const ATTR_SELECTOR_PATTERN = /\[([\w-]+)(?:([~|^$*]?=)(["'])?([^\3\]]*?)\3)?]/g;
447
+ up.migrate.resolveOrigin = function (target, { origin } = {}) {
448
+ let pattern = new RegExp(ATTR_SELECTOR_PATTERN.source + '|&|:origin\\b', 'g');
449
+ return target.replace(pattern, function (variant) {
450
+ if (variant === ':origin' || variant === '&') {
451
+ if (variant === '&') {
452
+ up.migrate.deprecated("Origin shorthand '&'", ':origin');
453
+ }
454
+ if (origin) {
455
+ return up.fragment.toTarget(origin);
456
+ }
457
+ else {
458
+ up.fail('Missing { origin } element to resolve "%s" reference (found in %s)', variant, target);
459
+ }
460
+ }
461
+ else {
462
+ return variant;
463
+ }
464
+ });
577
465
  };
466
+ up.migrate.removedEvent('up:fragment:kept', 'up:fragment:keep');
467
+ let runScripts = up.fragment.config.runScripts;
468
+ let runScriptsSet = false;
469
+ Object.defineProperty(up.fragment.config, 'runScripts', {
470
+ get() {
471
+ return runScripts;
472
+ },
473
+ set(value) {
474
+ runScripts = value;
475
+ runScriptsSet = true;
476
+ }
477
+ });
478
+ up.on('up:framework:boot', function () {
479
+ if (!runScriptsSet) {
480
+ up.migrate.warn('Scripts within fragments are now executed. Configure up.fragment.config.runScripts to remove this warning.');
481
+ }
482
+ });
483
+ up.compiler('[up-keep]', function (element) {
484
+ let selector = up.element.booleanOrStringAttr(element, 'up-keep');
485
+ if (u.isString(selector)) {
486
+ up.migrate.warn('The [up-keep] attribute no longer supports a selector value. Elements will be matched by their derived target. You may prevent keeping with [up-on-keep="if(condition) event.preventDefault()"]. ');
487
+ up.element.setMissingAttr(element, 'up-on-keep', `if (!newFragment.matches(${JSON.stringify(selector)})) event.preventDefault()`);
488
+ element.setAttribute('up-keep', '');
489
+ }
490
+ });
578
491
 
579
492
 
580
493
  /***/ }),
581
494
  /* 9 */
582
- /***/ (function() {
495
+ /***/ (() => {
583
496
 
584
- /*-
585
- @module up.history
586
- */
587
497
  up.migrate.renamedProperty(up.history.config, 'popTargets', 'restoreTargets');
588
- /*-
589
- Returns a normalized URL for the current history entry.
590
-
591
- @function up.history.url
592
- @return {string}
593
- @deprecated Use the `up.history.location` property instead.
594
- */
595
498
  up.history.url = function () {
596
499
  up.migrate.deprecated('up.history.url()', 'up.history.location');
597
500
  return up.history.location;
@@ -600,83 +503,48 @@ up.migrate.renamedEvent('up:history:push', 'up:location:changed');
600
503
  up.migrate.renamedEvent('up:history:pushed', 'up:location:changed');
601
504
  up.migrate.renamedEvent('up:history:restore', 'up:location:changed');
602
505
  up.migrate.renamedEvent('up:history:restored', 'up:location:changed');
603
- // There was never an up:history:replace (present tense) event
604
506
  up.migrate.renamedEvent('up:history:replaced', 'up:location:changed');
605
507
 
606
508
 
607
509
  /***/ }),
608
510
  /* 10 */
609
- /***/ (function() {
511
+ /***/ (() => {
610
512
 
611
- /*-
612
- @module up.feedback
613
- */
614
513
  up.migrate.renamedPackage('navigation', 'feedback');
615
514
  up.migrate.renamedProperty(up.feedback.config, 'navs', 'navSelectors');
616
515
 
617
516
 
618
517
  /***/ }),
619
518
  /* 11 */
620
- /***/ (function() {
519
+ /***/ (() => {
621
520
 
622
- /*-
623
- @module up.link
624
- */
625
521
  up.migrate.parseFollowOptions = function (parser) {
626
- parser.string('flavor'); // Renamed to { mode }.
627
- parser.string('width'); // Removed overlay option.
628
- parser.string('height'); // Removed overlay option.
629
- parser.boolean('closable'); // Renamed to { dismissable }.
630
- parser.booleanOrString('reveal'); // legacy option for { scroll: 'target' }
631
- parser.boolean('resetScroll'); // legacy option for { scroll: 'top' }
632
- parser.boolean('restoreScroll'); // legacy option for { scroll: 'restore' }
633
- parser.booleanOrString('historyVisible'); // short-lived legacy option for { history }
522
+ parser.string('flavor');
523
+ parser.string('width');
524
+ parser.string('height');
525
+ parser.boolean('closable');
526
+ parser.booleanOrString('solo');
527
+ parser.booleanOrString('reveal');
528
+ parser.boolean('resetScroll');
529
+ parser.boolean('restoreScroll');
530
+ parser.booleanOrString('historyVisible');
531
+ parser.booleanOrString('clearCache');
634
532
  };
635
- /*-
636
- [Follows](/up.follow) this link as fast as possible.
637
-
638
- This is done by:
639
-
640
- - [Following the link through AJAX](/a-up-follow) instead of a full page load
641
- - [Preloading the link's destination URL](/a-up-preload)
642
- - [Triggering the link on `mousedown`](/a-up-instant) instead of on `click`
643
-
644
- ### Example
645
-
646
- Use `[up-dash]` like this:
647
-
648
- <a href="/users" up-dash=".main">User list</a>
649
-
650
- This is shorthand for:
651
-
652
- <a href="/users" up-target=".main" up-instant up-preload>User list</a>
653
-
654
- @selector a[up-dash]
655
- @param [up-dash='body']
656
- The CSS selector to replace
657
-
658
- Inside the CSS selector you may refer to this link as `&` ([like in Sass](https://sass-lang.com/documentation/file.SASS_REFERENCE.html#parent-selector)).
659
- @deprecated
660
- To accelerate all links use `up.link.config.instantSelectors` and `up.link.config.preloadSelectors`.
661
- */
662
- up.migrate.targetMacro('up-dash', { 'up-preload': '', 'up-instant': '' }, function () { return up.migrate.deprecated('a[up-dash]', 'up.link.config.instantSelectors or up.link.config.preloadSelectors'); });
533
+ up.migrate.targetMacro('up-dash', { 'up-preload': '', 'up-instant': '' }, () => up.migrate.deprecated('a[up-dash]', 'up.link.config.instantSelectors and up.link.config.preloadSelectors'));
534
+ up.migrate.renamedAttribute('up-delay', 'up-preload-delay', { scope: up.link.preloadSelector });
663
535
 
664
536
 
665
537
  /***/ }),
666
538
  /* 12 */
667
- /***/ (function() {
539
+ /***/ (() => {
668
540
 
669
- /*-
670
- @module up.layer
671
- */
672
541
  up.migrate.handleLayerOptions = function (options) {
673
542
  up.migrate.fixKey(options, 'flavor', 'mode');
674
543
  up.migrate.fixKey(options, 'closable', 'dismissable');
675
544
  up.migrate.fixKey(options, 'closeLabel', 'dismissLabel');
676
- for (var _i = 0, _a = ['width', 'maxWidth', 'height']; _i < _a.length; _i++) {
677
- var dimensionKey = _a[_i];
545
+ for (let dimensionKey of ['width', 'maxWidth', 'height']) {
678
546
  if (options[dimensionKey]) {
679
- up.migrate.warn("Layer option { ".concat(dimensionKey, " } has been removed. Use { size } or { class } instead."));
547
+ up.migrate.warn(`Layer option { ${dimensionKey} } has been removed. Use { size } or { class } instead.`);
680
548
  }
681
549
  }
682
550
  if (options.sticky) {
@@ -690,39 +558,23 @@ up.migrate.handleLayerOptions = function (options) {
690
558
  options.layer = 'root';
691
559
  }
692
560
  if ((options.layer === 'modal') || (options.layer === 'popup')) {
693
- up.migrate.warn("Option { layer: '".concat(options.layer, "' } has been removed. Did you mean { layer: 'overlay' }?"));
561
+ up.migrate.warn(`Option { layer: '${options.layer}' } has been removed. Did you mean { layer: 'overlay' }?`);
694
562
  options.layer = 'overlay';
695
563
  }
696
564
  };
697
565
  up.migrate.handleTetherOptions = function (options) {
698
- var _a = options.position.split('-'), position = _a[0], align = _a[1];
566
+ const [position, align] = options.position.split('-');
699
567
  if (align) {
700
- up.migrate.warn('The position value %o is deprecated. Use %o instead.', options.position, { position: position, align: align });
568
+ up.migrate.warn('The position value %o is deprecated. Use %o instead.', options.position, { position, align });
701
569
  options.position = position;
702
570
  options.align = align;
703
571
  }
704
572
  };
705
- /*-
706
- When this element is clicked, closes a currently open overlay.
707
-
708
- Does nothing if no overlay is currently open.
709
-
710
- To make a link that closes the current overlay, but follows to
711
- a fallback destination on the root layer:
712
-
713
- <a href="/fallback" up-close>Okay</a>
714
-
715
- @selector a[up-close]
716
- @deprecated
717
- Use `a[up-dismiss]` instead.
718
- */
719
- up.migrate.registerLayerCloser = function (layer) {
720
- return layer.registerClickCloser('up-close', function (value, closeOptions) {
721
- up.migrate.deprecated('[up-close]', '[up-dismiss]');
722
- layer.dismiss(value, closeOptions);
723
- });
724
- };
725
- up.migrate.handleLayerConfig = function (config) { return up.migrate.fixKey(config, 'historyVisible', 'history'); };
573
+ up.migrate.registerLayerCloser = layer => layer.registerClickCloser('up-close', (value, closeOptions) => {
574
+ up.migrate.deprecated('[up-close]', '[up-dismiss]');
575
+ layer.dismiss(value, closeOptions);
576
+ });
577
+ up.migrate.handleLayerConfig = config => up.migrate.fixKey(config, 'historyVisible', 'history');
726
578
  up.util.getter(up.Layer.prototype, 'historyVisible', function () {
727
579
  up.migrate.deprecated('up.Layer#historyVisible', 'up.Layer#history');
728
580
  return this.history;
@@ -731,161 +583,52 @@ up.util.getter(up.Layer.prototype, 'historyVisible', function () {
731
583
 
732
584
  /***/ }),
733
585
  /* 13 */
734
- /***/ (function() {
586
+ /***/ (() => {
735
587
 
736
- /*-
737
- @module up.layer
738
- */
739
- var __assign = (this && this.__assign) || function () {
740
- __assign = Object.assign || function(t) {
741
- for (var s, i = 1, n = arguments.length; i < n; i++) {
742
- s = arguments[i];
743
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
744
- t[p] = s[p];
745
- }
746
- return t;
747
- };
748
- return __assign.apply(this, arguments);
749
- };
750
- var FLAVORS_ERROR = new Error('up.modal.flavors has been removed without direct replacement. You may give new layers a { class } or modify layer elements on up:layer:open.');
588
+ const FLAVORS_ERROR = new Error('up.modal.flavors has been removed without direct replacement. You may give new layers a { class } or modify layer elements on up:layer:open.');
751
589
  up.modal = {
752
- /*-
753
- Opens a modal overlay for the given URL.
754
-
755
- @function up.modal.visit
756
- @param {string} url
757
- The URL to load.
758
- @param {Object} options
759
- See options for `up.render()`.
760
- @deprecated
761
- Use `up.layer.open({ url, mode: "modal" })` instead.
762
- */
763
- visit: function (url, options) {
764
- if (options === void 0) { options = {}; }
590
+ visit(url, options = {}) {
765
591
  up.migrate.deprecated('up.modal.visit(url)', 'up.layer.open({ url, mode: "modal" })');
766
- return up.layer.open(__assign(__assign({}, options), { url: url, mode: 'modal' }));
592
+ return up.layer.open(Object.assign(Object.assign({}, options), { url, mode: 'modal' }));
767
593
  },
768
- /*-
769
- Opens the given link's destination in a modal overlay.
770
-
771
- @function up.modal.follow
772
- @param {Element|jQuery|string} linkOrSelector
773
- The link to follow.
774
- @param {string} [options]
775
- See options for `up.render()`.
776
- @return {Promise}
777
- A promise that will be fulfilled when the modal has been opened.
778
- @deprecated
779
- Use `up.follow(link, { layer: "modal" })` instead.
780
- */
781
- follow: function (link, options) {
782
- if (options === void 0) { options = {}; }
594
+ follow(link, options = {}) {
783
595
  up.migrate.deprecated('up.modal.follow(link)', 'up.follow(link, { layer: "modal" })');
784
- return up.follow(link, __assign(__assign({}, options), { layer: 'modal' }));
596
+ return up.follow(link, Object.assign(Object.assign({}, options), { layer: 'modal' }));
785
597
  },
786
- /*-
787
- [Extracts](/up.extract) the given CSS selector from the given HTML string and
788
- opens the results in a modal overlay.
789
-
790
- @function up.modal.extract
791
- @param {string} selector
792
- The CSS selector to extract from the HTML.
793
- @param {string} document
794
- The HTML containing the modal content.
795
- @param {Object} options
796
- See options for [`up.modal.follow()`](/up.modal.follow).
797
- @return {Promise}
798
- A promise that will be fulfilled when the modal has been opened.
799
- @deprecated
800
- Use `up.layer.open({ document, mode: "modal" })` instead.
801
- */
802
- extract: function (target, html, options) {
803
- if (options === void 0) { options = {}; }
598
+ extract(target, html, options = {}) {
804
599
  up.migrate.deprecated('up.modal.extract(target, document)', 'up.layer.open({ document, mode: "modal" })');
805
- return up.layer.open(__assign(__assign({}, options), { target: target, html: html, layer: 'modal' }));
600
+ return up.layer.open(Object.assign(Object.assign({}, options), { target, html, layer: 'modal' }));
806
601
  },
807
- /*-
808
- Closes a currently open overlay.
809
-
810
- @function up.modal.close
811
- @param {Object} options
812
- @return {Promise}
813
- @deprecated
814
- Use `up.layer.dismiss()` instead.
815
- */
816
- close: function (options) {
817
- if (options === void 0) { options = {}; }
602
+ close(options = {}) {
818
603
  up.migrate.deprecated('up.modal.close()', 'up.layer.dismiss()');
819
604
  up.layer.dismiss(null, options);
820
605
  return up.migrate.formerlyAsync('up.layer.dismiss()');
821
606
  },
822
- /*-
823
- Returns the location URL of the fragment displayed in the current overlay.
824
-
825
- @function up.modal.url
826
- @return {string}
827
- @deprecated
828
- Use `up.layer.location` instead.
829
- */
830
- url: function () {
607
+ url() {
831
608
  up.migrate.deprecated('up.modal.url()', 'up.layer.location');
832
609
  return up.layer.location;
833
610
  },
834
- /*-
835
- Returns the location URL of the layer behind the current overlay.
836
-
837
- @function up.modal.coveredUrl
838
- @return {string}
839
- @deprecated
840
- Use `up.layer.parent.location` instead.
841
- */
842
- coveredUrl: function () {
611
+ coveredUrl() {
843
612
  var _a;
844
613
  up.migrate.deprecated('up.modal.coveredUrl()', 'up.layer.parent.location');
845
614
  return (_a = up.layer.parent) === null || _a === void 0 ? void 0 : _a.location;
846
615
  },
847
- /*-
848
- Sets default options for future modal overlays.
849
-
850
- @property up.modal.config
851
- @deprecated
852
- Use `up.layer.config.modal` instead.
853
- */
854
616
  get config() {
855
617
  up.migrate.deprecated('up.modal.config', 'up.layer.config.modal');
856
618
  return up.layer.config.modal;
857
619
  },
858
- /*-
859
- Returns whether the given element or selector is contained
860
- within the current layer.
861
-
862
- @function up.modal.contains
863
- @param {string} elementOrSelector
864
- The element to test
865
- @return {boolean}
866
- @deprecated
867
- Use `up.layer.contains()` instead.
868
- */
869
- contains: function (element) {
620
+ contains(element) {
870
621
  up.migrate.deprecated('up.modal.contains()', 'up.layer.contains()');
871
622
  return up.layer.contains(element);
872
623
  },
873
- /*-
874
- Returns whether an overlay is currently open.
875
-
876
- @function up.modal.isOpen
877
- @return {boolean}
878
- @deprecated
879
- Use `up.layer.isOverlay()` instead.
880
- */
881
- isOpen: function () {
624
+ isOpen() {
882
625
  up.migrate.deprecated('up.modal.isOpen()', 'up.layer.isOverlay()');
883
626
  return up.layer.isOverlay();
884
627
  },
885
628
  get flavors() {
886
629
  throw FLAVORS_ERROR;
887
630
  },
888
- flavor: function () {
631
+ flavor() {
889
632
  throw FLAVORS_ERROR;
890
633
  }
891
634
  };
@@ -893,150 +636,47 @@ up.migrate.renamedEvent('up:modal:open', 'up:layer:open');
893
636
  up.migrate.renamedEvent('up:modal:opened', 'up:layer:opened');
894
637
  up.migrate.renamedEvent('up:modal:close', 'up:layer:dismiss');
895
638
  up.migrate.renamedEvent('up:modal:closed', 'up:layer:dismissed');
896
- /*-
897
- Clicking this link will load the destination via AJAX and open
898
- the given selector in a modal overlay.
899
-
900
- @selector a[up-modal]
901
- @params-note
902
- All attributes for `a[up-layer=new]` may also be used.
903
- @param {string} up-modal
904
- The CSS selector that will be extracted from the response and displayed in a modal dialog.
905
- @deprecated
906
- Use `a[up-layer="new modal"]` instead.
907
- */
908
- up.migrate.targetMacro('up-modal', { 'up-layer': 'new modal' }, function () { return up.migrate.deprecated('a[up-modal]', 'a[up-layer="new modal"]'); });
909
- /*-
910
- Clicking this link will load the destination via AJAX and open
911
- the given selector in a modal drawer that slides in from the edge of the screen.
912
-
913
- @selector a[up-drawer]
914
- @params-note
915
- All attributes for `a[up-layer=new]` may also be used.
916
- @param {string} up-drawer
917
- The CSS selector that will be extracted from the response and displayed in a modal dialog.
918
- @deprecated
919
- Use `a[up-layer="new drawer"]` instead.
920
- */
921
- up.migrate.targetMacro('up-drawer', { 'up-layer': 'new drawer' }, function () { return up.migrate.deprecated('a[up-drawer]', 'a[up-layer="new drawer"]'); });
639
+ up.migrate.targetMacro('up-modal', { 'up-layer': 'new modal' }, () => up.migrate.deprecated('a[up-modal]', 'a[up-layer="new modal"]'));
640
+ up.migrate.targetMacro('up-drawer', { 'up-layer': 'new drawer' }, () => up.migrate.deprecated('a[up-drawer]', 'a[up-layer="new drawer"]'));
922
641
 
923
642
 
924
643
  /***/ }),
925
644
  /* 14 */
926
- /***/ (function() {
645
+ /***/ (() => {
927
646
 
928
- /*-
929
- @module up.layer
930
- */
931
- var __assign = (this && this.__assign) || function () {
932
- __assign = Object.assign || function(t) {
933
- for (var s, i = 1, n = arguments.length; i < n; i++) {
934
- s = arguments[i];
935
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
936
- t[p] = s[p];
937
- }
938
- return t;
939
- };
940
- return __assign.apply(this, arguments);
941
- };
942
647
  up.popup = {
943
- /*-
944
- Attaches a popup overlay to the given element or selector.
945
-
946
- @function up.popup.attach
947
- @param {Element|jQuery|string} anchor
948
- The element to which the popup will be attached.
949
- @param {Object} [options]
950
- See options for `up.render()`.
951
- @return {Promise}
952
- @deprecated
953
- Use `up.layer.open({ origin, layer: 'popup' })` instead.
954
- */
955
- attach: function (origin, options) {
956
- if (options === void 0) { options = {}; }
648
+ attach(origin, options = {}) {
957
649
  origin = up.fragment.get(origin);
958
650
  up.migrate.deprecated('up.popup.attach(origin)', "up.layer.open({ origin, layer: 'popup' })");
959
- return up.layer.open(__assign(__assign({}, options), { origin: origin, layer: 'popup' }));
651
+ return up.layer.open(Object.assign(Object.assign({}, options), { origin, layer: 'popup' }));
960
652
  },
961
- /*-
962
- Closes a currently open overlay.
963
-
964
- @function up.popup.close
965
- @param {Object} options
966
- @return {Promise}
967
- @deprecated
968
- Use `up.layer.dismiss()` instead.
969
- */
970
- close: function (options) {
971
- if (options === void 0) { options = {}; }
653
+ close(options = {}) {
972
654
  up.migrate.deprecated('up.popup.close()', 'up.layer.dismiss()');
973
655
  up.layer.dismiss(null, options);
974
656
  return up.migrate.formerlyAsync('up.layer.dismiss()');
975
657
  },
976
- /*-
977
- Returns the location URL of the fragment displayed in the current overlay.
978
-
979
- @function up.popup.url
980
- @return {string}
981
- @deprecated
982
- Use `up.layer.location` instead.
983
- */
984
- url: function () {
658
+ url() {
985
659
  up.migrate.deprecated('up.popup.url()', 'up.layer.location');
986
660
  return up.layer.location;
987
661
  },
988
- /*-
989
- Returns the location URL of the layer behind the current overlay.
990
-
991
- @function up.popup.coveredUrl
992
- @return {string}
993
- @deprecated
994
- Use `up.layer.parent.location` instead.
995
- */
996
- coveredUrl: function () {
662
+ coveredUrl() {
997
663
  var _a;
998
664
  up.migrate.deprecated('up.popup.coveredUrl()', 'up.layer.parent.location');
999
665
  return (_a = up.layer.parent) === null || _a === void 0 ? void 0 : _a.location;
1000
666
  },
1001
- /*-
1002
- Sets default options for future popup overlays.
1003
-
1004
- @property up.popup.config
1005
- @deprecated
1006
- Use `up.layer.config.popup` instead.
1007
- */
1008
667
  get config() {
1009
668
  up.migrate.deprecated('up.popup.config', 'up.layer.config.popup');
1010
669
  return up.layer.config.popup;
1011
670
  },
1012
- /*-
1013
- Returns whether the given element or selector is contained
1014
- within the current layer.
1015
-
1016
- @function up.popup.contains
1017
- @param {string} elementOrSelector
1018
- The element to test
1019
- @return {boolean}
1020
- @deprecated
1021
- Use `up.layer.contains()` instead.
1022
- */
1023
- contains: function (element) {
671
+ contains(element) {
1024
672
  up.migrate.deprecated('up.popup.contains()', 'up.layer.contains()');
1025
673
  return up.layer.contains(element);
1026
674
  },
1027
- /*-
1028
- Returns whether an overlay is currently open.
1029
-
1030
- @function up.popup.isOpen
1031
- @return {boolean}
1032
- @deprecated
1033
- Use `up.layer.isOverlay()` instead.
1034
- */
1035
- isOpen: function () {
675
+ isOpen() {
1036
676
  up.migrate.deprecated('up.popup.isOpen()', 'up.layer.isOverlay()');
1037
677
  return up.layer.isOverlay();
1038
678
  },
1039
- sync: function () {
679
+ sync() {
1040
680
  up.migrate.deprecated('up.popup.sync()', 'up.layer.sync()');
1041
681
  return up.layer.sync();
1042
682
  }
@@ -1045,22 +685,13 @@ up.migrate.renamedEvent('up:popup:open', 'up:layer:open');
1045
685
  up.migrate.renamedEvent('up:popup:opened', 'up:layer:opened');
1046
686
  up.migrate.renamedEvent('up:popup:close', 'up:layer:dismiss');
1047
687
  up.migrate.renamedEvent('up:popup:closed', 'up:layer:dismissed');
1048
- up.migrate.targetMacro('up-popup', { 'up-layer': 'new popup' }, function () { return up.migrate.deprecated('[up-popup]', '[up-layer="new popup"]'); });
688
+ up.migrate.targetMacro('up-popup', { 'up-layer': 'new popup' }, () => up.migrate.deprecated('[up-popup]', '[up-layer="new popup"]'));
1049
689
 
1050
690
 
1051
691
  /***/ }),
1052
692
  /* 15 */
1053
- /***/ (function() {
1054
-
1055
- /*-
1056
- Tooltips
1057
- ========
1058
-
1059
- Unpoly used to come with a basic tooltip implementation.
1060
- This feature is now deprecated.
693
+ /***/ (() => {
1061
694
 
1062
- @module up.tooltip
1063
- */
1064
695
  up.macro('[up-tooltip]', function (opener) {
1065
696
  up.migrate.warn('[up-tooltip] has been deprecated. A [title] was set instead.');
1066
697
  up.element.setMissingAttr(opener, 'title', opener.getAttribute('up-tooltip'));
@@ -1069,133 +700,107 @@ up.macro('[up-tooltip]', function (opener) {
1069
700
 
1070
701
  /***/ }),
1071
702
  /* 16 */
1072
- /***/ (function() {
703
+ /***/ (() => {
1073
704
 
1074
- var u = up.util;
1075
- /*-
1076
- @module up.network
1077
- */
705
+ up.migrate.clearCacheFromXHR = function (xhr) {
706
+ let value = xhr.getResponseHeader('X-Up-Clear-Cache');
707
+ if (value) {
708
+ up.migrate.deprecated('X-Up-Clear-Cache', 'X-Up-Expire-Cache');
709
+ if (value === 'false') {
710
+ return false;
711
+ }
712
+ else {
713
+ return value;
714
+ }
715
+ }
716
+ };
717
+
718
+
719
+ /***/ }),
720
+ /* 17 */
721
+ /***/ (() => {
722
+
723
+ const u = up.util;
1078
724
  up.migrate.renamedPackage('proxy', 'network');
1079
- up.migrate.renamedEvent('up:proxy:load', 'up:request:load'); // renamed in 1.0.0
1080
- up.migrate.renamedEvent('up:proxy:received', 'up:request:loaded'); // renamed in 0.50.0
1081
- up.migrate.renamedEvent('up:proxy:loaded', 'up:request:loaded'); // renamed in 1.0.0
1082
- up.migrate.renamedEvent('up:proxy:fatal', 'up:request:fatal'); // renamed in 1.0.0
1083
- up.migrate.renamedEvent('up:proxy:aborted', 'up:request:aborted'); // renamed in 1.0.0
1084
- up.migrate.renamedEvent('up:proxy:slow', 'up:request:late'); // renamed in 1.0.0
1085
- up.migrate.renamedEvent('up:proxy:recover', 'up:request:recover'); // renamed in 1.0.0
1086
- var preloadDelayMoved = function () { return up.migrate.deprecated('up.proxy.config.preloadDelay', 'up.link.config.preloadDelay'); };
725
+ up.migrate.renamedEvent('up:proxy:load', 'up:request:load');
726
+ up.migrate.renamedEvent('up:proxy:received', 'up:request:loaded');
727
+ up.migrate.renamedEvent('up:proxy:loaded', 'up:request:loaded');
728
+ up.migrate.renamedEvent('up:proxy:fatal', 'up:request:offline');
729
+ up.migrate.renamedEvent('up:request:fatal', 'up:request:offline');
730
+ up.migrate.renamedEvent('up:proxy:aborted', 'up:request:aborted');
731
+ up.migrate.renamedEvent('up:proxy:slow', 'up:network:late');
732
+ up.migrate.renamedEvent('up:proxy:recover', 'up:network:recover');
733
+ up.migrate.renamedEvent('up:request:late', 'up:network:late');
734
+ up.migrate.renamedEvent('up:request:recover', 'up:network:recover');
735
+ const preloadDelayMoved = () => up.migrate.deprecated('up.proxy.config.preloadDelay', 'up.link.config.preloadDelay');
1087
736
  Object.defineProperty(up.network.config, 'preloadDelay', {
1088
- get: function () {
737
+ get() {
1089
738
  preloadDelayMoved();
1090
739
  return up.link.config.preloadDelay;
1091
740
  },
1092
- set: function (value) {
741
+ set(value) {
1093
742
  preloadDelayMoved();
1094
743
  up.link.config.preloadDelay = value;
1095
744
  }
1096
745
  });
1097
746
  up.migrate.renamedProperty(up.network.config, 'maxRequests', 'concurrency');
1098
747
  up.migrate.renamedProperty(up.network.config, 'slowDelay', 'badResponseTime');
1099
- up.migrate.handleRequestOptions = function (options) { return up.migrate.fixKey(options, 'data', 'params'); };
1100
- /*-
1101
- Makes an AJAX request to the given URL and caches the response.
1102
-
1103
- The function returns a promise that fulfills with the response text.
1104
-
1105
- ### Example
1106
-
1107
- ```
1108
- up.ajax('/search', { params: { query: 'sunshine' } }).then(function(text) {
1109
- console.log('The response text is %o', text)
1110
- }).catch(function() {
1111
- console.error('The request failed')
1112
- })
1113
- ```
1114
-
1115
- @function up.ajax
1116
- @param {string} [url]
1117
- The URL for the request.
1118
-
1119
- Instead of passing the URL as a string argument, you can also pass it as an `{ url }` option.
1120
- @param {Object} [options]
1121
- See options for `up.request()`.
1122
- @return {Promise<string>}
1123
- A promise for the response text.
1124
- @deprecated
1125
- Use `up.request()` instead.
1126
- */
1127
- up.ajax = function () {
1128
- var args = [];
1129
- for (var _i = 0; _i < arguments.length; _i++) {
1130
- args[_i] = arguments[_i];
748
+ up.migrate.renamedProperty(up.network.config, 'cacheExpiry', 'cacheExpireAge');
749
+ up.migrate.renamedProperty(up.network.config, 'clearCache', 'expireCache');
750
+ up.migrate.handleRequestOptions = function (options) {
751
+ up.migrate.fixKey(options, 'clearCache', 'expireCache');
752
+ if (options.solo) {
753
+ up.migrate.warn('The option up.request({ solo }) has been removed. Use up.network.abort() or up.fragment.abort() instead.');
1131
754
  }
755
+ };
756
+ up.ajax = function (...args) {
1132
757
  up.migrate.deprecated('up.ajax()', 'up.request()');
1133
- var pickResponseText = function (response) { return response.text; };
1134
- return up.request.apply(up, args).then(pickResponseText);
758
+ const pickResponseText = response => response.text;
759
+ return up.request(...args).then(pickResponseText);
1135
760
  };
1136
- /*-
1137
- Removes all cache entries.
1138
-
1139
- @function up.proxy.clear
1140
- @deprecated
1141
- Use `up.cache.clear()` instead.
1142
- */
1143
761
  up.network.clear = function () {
1144
- up.migrate.deprecated('up.proxy.clear()', 'up.cache.clear()');
1145
- up.cache.clear();
762
+ up.migrate.deprecated('up.proxy.clear()', 'up.cache.expire()');
763
+ up.cache.expire();
1146
764
  };
1147
- up.network.preload = function () {
1148
- var _a;
1149
- var args = [];
1150
- for (var _i = 0; _i < arguments.length; _i++) {
1151
- args[_i] = arguments[_i];
1152
- }
765
+ up.Request.Cache.prototype.clear = function (...args) {
766
+ up.migrate.deprecated('up.cache.clear()', 'up.cache.expire()');
767
+ this.expire(...args);
768
+ };
769
+ up.network.preload = function (...args) {
1153
770
  up.migrate.deprecated('up.proxy.preload(link)', 'up.link.preload(link)');
1154
- return (_a = up.link).preload.apply(_a, args);
771
+ return up.link.preload(...args);
772
+ };
773
+ up.migrate.preprocessAbortArgs = function (args) {
774
+ if (args.length === 2 && u.isString(args[1])) {
775
+ up.migrate.warn('up.network.abort() no longer takes a reason as a second argument. Pass it as { reason } option instead.');
776
+ args[1] = { reason: args[1] };
777
+ }
778
+ };
779
+ up.network.isIdle = function () {
780
+ up.migrate.deprecated('up.network.isIdle()', '!up.network.isBusy()');
781
+ return !up.network.isBusy();
1155
782
  };
1156
- /*-
1157
- @class up.Request
1158
- */
1159
783
  up.Request.prototype.navigate = function () {
1160
784
  up.migrate.deprecated('up.Request#navigate()', 'up.Request#loadPage()');
1161
785
  this.loadPage();
1162
786
  };
1163
- /*-
1164
- @class up.Response
1165
- */
1166
- /*-
1167
- Returns whether the server responded with a 2xx HTTP status.
1168
-
1169
- @function up.Response#isSuccess
1170
- @return {boolean}
1171
- @deprecated
1172
- Use `up.Response#ok` instead.
1173
- */
1174
787
  up.Response.prototype.isSuccess = function () {
1175
788
  up.migrate.deprecated('up.Response#isSuccess()', 'up.Response#ok');
1176
789
  return this.ok;
1177
790
  };
1178
- /*-
1179
- Returns whether the response was not [successful](/up.Response.prototype.ok).
1180
-
1181
- @function up.Response#isError
1182
- @return {boolean}
1183
- @deprecated
1184
- Use `!up.Response#ok` instead.
1185
- */
1186
791
  up.Response.prototype.isError = function () {
1187
792
  up.migrate.deprecated('up.Response#isError()', '!up.Response#ok');
1188
793
  return !this.ok;
1189
794
  };
1190
795
  function mayHaveCustomIndicator() {
1191
- var listeners = up.EventListener.allNonDefault(document);
1192
- return u.find(listeners, function (listener) { return listener.eventType === 'up:request:late'; });
796
+ const listeners = up.EventListener.allNonDefault(document);
797
+ return u.find(listeners, listener => listener.eventType === 'up:network:late');
1193
798
  }
1194
- var progressBarDefault = up.network.config.progressBar;
799
+ const progressBarDefault = up.network.config.progressBar;
1195
800
  function disableProgressBarIfCustomIndicator() {
1196
801
  up.network.config.progressBar = function () {
1197
802
  if (mayHaveCustomIndicator()) {
1198
- up.migrate.warn('Disabled the default progress bar as may have built a custom loading indicator with your up:request:late listener. Please set up.network.config.progressBar to true or false.');
803
+ up.migrate.warn('Disabled the default progress bar as may have built a custom loading indicator with your up:network:late listener. Please set up.network.config.progressBar to true or false.');
1199
804
  return false;
1200
805
  }
1201
806
  else {
@@ -1208,46 +813,30 @@ up.on('up:framework:reset', disableProgressBarIfCustomIndicator);
1208
813
 
1209
814
 
1210
815
  /***/ }),
1211
- /* 17 */
1212
- /***/ (function() {
816
+ /* 18 */
817
+ /***/ (() => {
1213
818
 
1214
- /*-
1215
- @module up.radio
1216
- */
1217
819
  up.migrate.renamedProperty(up.radio.config, 'hungry', 'hungrySelectors');
1218
820
 
1219
821
 
1220
822
  /***/ }),
1221
- /* 18 */
1222
- /***/ (function() {
823
+ /* 19 */
824
+ /***/ (() => {
1223
825
 
1224
- /*-
1225
- @module up.viewport
1226
- */
1227
826
  up.migrate.renamedPackage('layout', 'viewport');
1228
827
  up.migrate.renamedProperty(up.viewport.config, 'viewports', 'viewportSelectors');
1229
828
  up.migrate.renamedProperty(up.viewport.config, 'snap', 'revealSnap');
1230
- /*-
1231
- Returns the scrolling container for the given element.
1232
-
1233
- Returns the [document's scrolling element](/up.viewport.root)
1234
- if no closer viewport exists.
1235
-
1236
- @function up.viewport.closest
1237
- @param {string|Element|jQuery} target
1238
- @return {Element}
1239
- @deprecated
1240
- Use `up.viewport.get()` instead.
1241
- */
1242
- up.viewport.closest = function () {
1243
- var _a;
1244
- var args = [];
1245
- for (var _i = 0; _i < arguments.length; _i++) {
1246
- args[_i] = arguments[_i];
1247
- }
829
+ up.migrate.removedProperty(up.viewport.config, 'scrollSpeed');
830
+ up.viewport.closest = function (...args) {
1248
831
  up.migrate.deprecated('up.viewport.closest()', 'up.viewport.get()');
1249
- return (_a = up.viewport).get.apply(_a, args);
832
+ return up.viewport.get(...args);
1250
833
  };
834
+ up.viewport.scroll = function (viewport, top, options = {}) {
835
+ viewport = up.fragment.get(viewport, options);
836
+ viewport.scrollTo(Object.assign(Object.assign({}, options), { top }));
837
+ return up.migrate.formerlyAsync('up.scroll()');
838
+ };
839
+ up.scroll = up.viewport.scroll;
1251
840
 
1252
841
 
1253
842
  /***/ })
@@ -1271,7 +860,7 @@ up.viewport.closest = function () {
1271
860
  /******/ };
1272
861
  /******/
1273
862
  /******/ // Execute the module function
1274
- /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
863
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
1275
864
  /******/
1276
865
  /******/ // Return the exports of the module
1277
866
  /******/ return module.exports;
@@ -1280,8 +869,7 @@ up.viewport.closest = function () {
1280
869
  /************************************************************************/
1281
870
  var __webpack_exports__ = {};
1282
871
  // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
1283
- !function() {
1284
- // We are going to add compilers and event handlers that should not be reset during specs.
872
+ (() => {
1285
873
  up.framework.startExtension();
1286
874
  __webpack_require__(1);
1287
875
  __webpack_require__(2);
@@ -1301,8 +889,10 @@ __webpack_require__(15);
1301
889
  __webpack_require__(16);
1302
890
  __webpack_require__(17);
1303
891
  __webpack_require__(18);
892
+ __webpack_require__(19);
1304
893
  up.framework.stopExtension();
1305
894
 
1306
- }();
895
+ })();
896
+
1307
897
  /******/ })()
1308
898
  ;