unpoly-rails 3.14.2 → 3.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +317 -0
  3. data/README.md +61 -40
  4. data/assets/unpoly/unpoly-bootstrap3.css.map +1 -0
  5. data/assets/unpoly/unpoly-bootstrap3.js.map +1 -0
  6. data/assets/unpoly/unpoly-bootstrap3.min.css.map +1 -0
  7. data/assets/unpoly/unpoly-bootstrap3.min.js.map +1 -0
  8. data/assets/unpoly/unpoly-bootstrap4.css.map +1 -0
  9. data/assets/unpoly/unpoly-bootstrap4.js.map +1 -0
  10. data/assets/unpoly/unpoly-bootstrap4.min.css.map +1 -0
  11. data/assets/unpoly/unpoly-bootstrap4.min.js.map +1 -0
  12. data/assets/unpoly/unpoly-bootstrap5.css.map +1 -0
  13. data/assets/unpoly/unpoly-bootstrap5.js.map +1 -0
  14. data/assets/unpoly/unpoly-bootstrap5.min.css.map +1 -0
  15. data/assets/unpoly/unpoly-bootstrap5.min.js.map +1 -0
  16. data/assets/unpoly/unpoly-migrate.js +228 -149
  17. data/assets/unpoly/unpoly-migrate.js.map +1 -0
  18. data/assets/unpoly/unpoly-migrate.min.js +1 -1
  19. data/assets/unpoly/unpoly-migrate.min.js.map +1 -0
  20. data/assets/unpoly/unpoly.css.map +1 -0
  21. data/assets/unpoly/unpoly.es6.js +666 -430
  22. data/assets/unpoly/unpoly.es6.js.map +1 -0
  23. data/assets/unpoly/unpoly.es6.min.js +1 -1
  24. data/assets/unpoly/unpoly.es6.min.js.map +1 -0
  25. data/assets/unpoly/unpoly.js +2167 -1990
  26. data/assets/unpoly/unpoly.js.map +1 -0
  27. data/assets/unpoly/unpoly.min.css.map +1 -0
  28. data/assets/unpoly/unpoly.min.js +1 -1
  29. data/assets/unpoly/unpoly.min.js.map +1 -0
  30. data/lib/unpoly/rails/change/cache.rb +4 -4
  31. data/lib/unpoly/rails/change/layer.rb +3 -0
  32. data/lib/unpoly/rails/change.rb +35 -8
  33. data/lib/unpoly/rails/controller.rb +3 -2
  34. data/lib/unpoly/rails/engine.rb +7 -0
  35. data/lib/unpoly/rails/request_echo_headers.rb +10 -3
  36. data/lib/unpoly/rails/util.rb +38 -0
  37. data/lib/unpoly/rails/version.rb +1 -1
  38. metadata +31 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unpoly-migrate.js","mappings":"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","sources":["webpack://unpoly/./src/unpoly-migrate/migrate.js","webpack://unpoly/./src/unpoly-migrate/classes/config.js","webpack://unpoly/./src/unpoly-migrate/classes/render_job.js","webpack://unpoly/./src/unpoly-migrate/classes/render_result.js","webpack://unpoly/./src/unpoly-migrate/classes/layer/base.js","webpack://unpoly/./src/unpoly-migrate/util.js","webpack://unpoly/./src/unpoly-migrate/error.js","webpack://unpoly/./src/unpoly-migrate/browser.js","webpack://unpoly/./src/unpoly-migrate/element.js","webpack://unpoly/./src/unpoly-migrate/event.js","webpack://unpoly/./src/unpoly-migrate/script.js","webpack://unpoly/./src/unpoly-migrate/form.js","webpack://unpoly/./src/unpoly-migrate/fragment.js","webpack://unpoly/./src/unpoly-migrate/framework.js","webpack://unpoly/./src/unpoly-migrate/history.js","webpack://unpoly/./src/unpoly-migrate/status.js","webpack://unpoly/./src/unpoly-migrate/link.js","webpack://unpoly/./src/unpoly-migrate/layer.js","webpack://unpoly/./src/unpoly-migrate/motion.js","webpack://unpoly/./src/unpoly-migrate/modal.js","webpack://unpoly/./src/unpoly-migrate/popup.js","webpack://unpoly/./src/unpoly-migrate/tooltip.js","webpack://unpoly/./src/unpoly-migrate/protocol.js","webpack://unpoly/./src/unpoly-migrate/network.js","webpack://unpoly/./src/unpoly-migrate/radio.js","webpack://unpoly/./src/unpoly-migrate/viewport.js","webpack://unpoly/webpack/bootstrap","webpack://unpoly/./src/unpoly-migrate.js"],"sourcesContent":["const u = up.util\n\n/*-\n@module up.migrate\n@internal\n*/\nup.migrate = (function() {\n\n const config = new up.Config('up.migrate.config', () => ({\n logLevel: 'error'\n }))\n\n // Pass a { label } like 'up.form.config' to name the object in the warning.\n // Without a label we print the object itself.\n function renamedProperty(object, oldKey, newKey, { label, warning } = {}) {\n // We memoize the warning to prevent infinite recursion. The `found in %o` will access the getter\n // to print the object, which will call the warning, which will access the getter, etc.\n const doWarn = u.memoize(function() {\n if (warning) {\n warn(warning)\n } else if (label) {\n warn('Property %s.%s has been renamed to %s.%s', label, oldKey, label, newKey)\n } else {\n warn('Property { %s } has been renamed to { %s } (found in %o)', oldKey, newKey, object)\n }\n })\n\n Object.defineProperty(object, oldKey, {\n configurable: true,\n get() {\n doWarn()\n return this[newKey]\n },\n set(newValue) {\n doWarn()\n this[newKey] = newValue\n }\n })\n }\n\n // Pass a { label } like 'up.form.config' to name the object in the warning.\n // Without a label we print the object itself.\n //\n // Pass a { value } to set an initial value without a warning.\n // It is restored when up.framework.reset() runs the config patch again.\n function removedProperty(object, key, { label, warning, value } = {}) {\n // We memoize the warning to prevent infinite recursion. The `found in %o` will access the getter\n // to print the object, which will call the warning, which will access the getter, etc.\n const doWarn = u.memoize(function() {\n if (warning) {\n warn(warning)\n } else if (label) {\n warn('Property %s.%s has been removed without replacement', label, key)\n } else {\n warn('Property { %s } has been removed without replacement (found in %o)', key, object)\n }\n })\n\n // We only keep an existing data value. When up.framework.reset() runs a config patch again,\n // reading object[key] would call the getter from the previous definition, which warns and keeps the old value.\n // We return the reference so a polyfill can honor a value that the app sets.\n let valueRef = [value ?? Object.getOwnPropertyDescriptor(object, key)?.value]\n\n Object.defineProperty(object, key, {\n configurable: true,\n // The key usually exists as an enumerable data property, and redefining it would keep it enumerable.\n // Then any script that enumerates the object would trigger the warning, e.g. when we print\n // the object with %o in another warning, or an analytics script walking window.up.\n enumerable: false,\n get() {\n doWarn()\n return valueRef[0]\n },\n set(newValue) {\n doWarn()\n valueRef[0] = newValue\n }\n })\n\n return valueRef\n }\n\n function transformAttribute(oldAttr, ...args) {\n let transformer = u.extractCallback(args)\n let { scope } = u.extractOptions(args)\n\n // Scope may be a selector string OR a function\n let selector = scope || `[${oldAttr}]`\n up.macro(selector, { priority: -1000 }, function(element) {\n // If scope is given as a function it does not select for the attribute\n if (element.hasAttribute(oldAttr)) {\n let value = element.getAttribute(oldAttr)\n transformer(element, value)\n }\n })\n }\n\n function renamedAttribute(oldAttr, newAttr, { scope, mapValue } = {}) {\n transformAttribute(oldAttr, { scope }, function(element, value) {\n warn('Attribute [%s] has been renamed to [%s] (found in %o)', oldAttr, newAttr, element)\n if (mapValue) {\n value = u.evalOption(mapValue, value)\n }\n element.setAttribute(newAttr, value)\n })\n }\n\n function removedAttribute(oldAttr, { scope, replacement } = {}) {\n transformAttribute(oldAttr, { scope }, function(element, _value) {\n if (replacement) {\n warn('Attribute [%s] has been removed (found in %o). Use %s instead.', oldAttr, element, replacement)\n } else {\n warn('Attribute [%s] has been removed without replacement (found in %o)', oldAttr, element)\n }\n })\n }\n\n // Pass a { label } like 'up.layer.config.modal' or 'render options' to name the object in the warning.\n // Without a label we print the object itself, which is hard to read for large or circular objects.\n // A labeled warning also has the same text for every object, so we only print it once.\n //\n // Pass a { detail } like an origin element or URL to name the call site, e.g. 'render options for <a href=\"/foo\">'.\n // Since warnings are deduplicated by their text, this prints the warning once per call site.\n function fixKey(object, oldKey, newKey, { label, detail } = {}) {\n if (u.isDefined(object[oldKey])) {\n if (label && detail) {\n warn('Property { %s } has been renamed to { %s } (found in %s for %o)', oldKey, newKey, label, detail)\n } else if (label) {\n warn('Property { %s } has been renamed to { %s } (found in %s)', oldKey, newKey, label)\n } else {\n warn('Property { %s } has been renamed to { %s } (found in %o)', oldKey, newKey, object)\n }\n u.renameKey(object, oldKey, newKey)\n }\n }\n\n // Maps old event type to new event type\n const renamedEvents = {}\n\n function renamedEvent(oldType, newType) {\n renamedEvents[oldType] = newType\n }\n\n // Maps old event type to new event type\n const removedEvents = {}\n\n function removedEvent(type, replacementExpression = null) {\n removedEvents[type] = replacementExpression\n }\n\n function fixEventType(eventType) {\n let newEventType = renamedEvents[eventType]\n if (newEventType) {\n warn(`Event ${eventType} has been renamed to ${newEventType}`)\n return newEventType\n } else if (eventType in removedEvents) {\n let message = `Event ${eventType} has been removed`\n let replacementExpression = removedEvents[eventType]\n if (replacementExpression) {\n message += `. Use ${replacementExpression} instead.`\n }\n warn(message)\n return eventType\n } else {\n return eventType\n }\n }\n\n function fixEventTypes(eventTypes) {\n // Remove duplicates as e.g. up:history:pushed and up:history:replaced\n // both map to up:location:changed.\n return u.uniq(u.map(eventTypes, fixEventType))\n }\n\n function renamedPackage(oldName, newName) {\n Object.defineProperty(up, oldName, {\n configurable: true,\n get() {\n warn(`up.${oldName} has been renamed to up.${newName}`)\n return up[newName]\n }\n })\n }\n\n let warnedMessages = {}\n\n function reset() {\n warnedMessages = {}\n }\n\n const warn = up.mockable((message, ...args) => {\n const formattedMessage = u.sprintf(message, ...args)\n const logLevel = config.logLevel\n if (logLevel !== 'none' && !warnedMessages[formattedMessage]) {\n warnedMessages[formattedMessage] = true\n up.log[logLevel]('unpoly-migrate', message, ...args)\n }\n })\n\n function deprecated(deprecatedExpression, replacementExpression) {\n warn(`${deprecatedExpression} has been deprecated. Use ${replacementExpression} instead.`)\n }\n\n // Returns a resolved promise that prints a warning when #then() is called.\n function formerlyAsync(label) {\n const promise = Promise.resolve()\n const oldThen = promise.then\n promise.then = function() {\n warn(`${label} is now sync and no longer returns a promise`)\n return oldThen.apply(this, arguments)\n }\n return promise\n }\n\n const CSS_LENGTH_PROPS = [\n 'top', 'right', 'bottom', 'left',\n 'padding', 'padding-top', 'padding-right', 'padding-bottom', 'padding-left',\n 'margin', 'margin-top', 'margin-right', 'margin-bottom', 'margin-left',\n 'border-width', 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width',\n 'width', 'height',\n 'max-width', 'max-height',\n 'min-width', 'min-height',\n ]\n\n function fixStylePropName(prop) {\n if (/[A-Z]/.test(prop)) {\n warn(`CSS property names must be in kebab-case, but got camelCase \"${prop}\"`)\n return u.camelToKebabCase(prop)\n } else {\n return prop\n }\n }\n\n function fixStylePropValue(prop, value, unit) {\n if (!unit && CSS_LENGTH_PROPS.includes(prop) && /^[\\d.]+$/.test(value)) {\n warn(`CSS length values must have a unit, but got \"${prop}: ${value}\". Use \"${prop}: ${value}px\" instead.`)\n return value + \"px\"\n } else {\n return value\n }\n }\n\n function fixGetStyleProps(keyOrKeys) {\n let transformed\n\n if (u.isString(keyOrKeys)) {\n transformed = fixStylePropName(keyOrKeys)\n } else if (u.isArray(keyOrKeys)) {\n transformed = keyOrKeys.map(fixStylePropName)\n } else {\n // Unsupported case. Behave neutrally.\n transformed = keyOrKeys\n }\n\n return transformed\n }\n\n function fixSetStyleProps(props, unit) {\n let transformed\n\n if (u.isObject(props)) {\n transformed = {}\n for (let name in props) {\n let value = props[name]\n name = fixStylePropName(name)\n value = fixStylePropValue(name, value, unit)\n transformed[name] = value\n }\n } else {\n // Leave a string unchanged\n transformed = props\n }\n\n return transformed\n }\n\n function defineThrowingProps(object, forbiddenPrototype, errorMessage) {\n let complain = () => { throw new TypeError(errorMessage) }\n\n for (const propName of Object.getOwnPropertyNames(forbiddenPrototype)) {\n if (!(propName in object)) {\n Object.defineProperty(object, propName, {\n get: complain,\n set: complain,\n enumerable: false,\n configurable: false,\n })\n }\n }\n }\n\n up.on('up:framework:reset', reset)\n\n return {\n deprecated,\n renamedPackage,\n renamedProperty,\n removedProperty,\n defineThrowingProps,\n transformAttribute,\n renamedAttribute,\n removedAttribute,\n formerlyAsync,\n renamedEvent,\n removedEvent,\n fixGetStyleProps,\n fixSetStyleProps,\n fixEventTypes,\n fixKey,\n warn,\n loaded: true,\n config,\n }\n})()\n","up.Config.prototype.patch = function(patch) {\n let doPatch = patch.bind(this, this)\n doPatch()\n document.addEventListener('up:framework:reset', doPatch)\n}\n","up.migrate.renamedProperty(\n up.RenderJob.prototype,\n 'options',\n 'renderOptions',\n { warning: 'up.RenderJob: Property { options } has been renamed to { renderOptions }' }\n)\n","up.migrate.renamedProperty(\n up.RenderResult.prototype,\n 'options',\n 'renderOptions',\n { warning: 'up.RenderResult: Property { options } has been renamed to { renderOptions }' }\n)\n","/*-\n@class up.Layer\n*/\n\n/*-\nReturns whether this layer is still part of the [layer stack](/api/up.layer.stack).\n\nA layer is considered \"closed\" immediately after it has been [dismissed](/api/up.Layer.prototype.dismiss)\nor [accepted](/api/up.Layer.prototype.accept). If the closing is animated, a layer may be considered \"closed\" while\nthe closing animation is still playing.\n\n@function up.Layer#isOpen\n@return {boolean}\n Whether this layer is still open.\n@deprecated\n Use `up.Layer#isAlive()` instead.\n*/\nup.Layer.prototype.isOpen = function() {\n up.migrate.deprecated('up.Layer#isOpen()', 'up.Layer#isAlive()')\n return this.isAlive()\n}\n\n/*-\nReturns whether this layer is no longer part of the [layer stack](/api/up.layer.stack).\n\nA layer is considered \"closed\" immediately after it has been [dismissed](/api/up.Layer.prototype.dismiss)\nor [accepted](/api/up.Layer.prototype.accept). If the closing is animated, a layer may be considered \"closed\" while\nthe closing animation is still playing.\n\n@function up.Layer#isClosed\n@return {boolean}\n Whether this layer has been closed.\n@deprecated\n Use `!up.Layer#isAlive()` instead.\n*/\nup.Layer.prototype.isClosed = function() {\n up.migrate.deprecated('up.Layer#isClosed()', '!up.Layer#isAlive()')\n return !this.isAlive()\n}\n","/*-\n@module up.util\n*/\n\n/*-\nReturns a copy of the given object that only contains\nthe given keys.\n\n@function up.util.only\n@param {Object} object\n@param {Array} ...keys\n@deprecated\n Use `up.util.pick()` instead.\n*/\nup.util.only = function(object, ...keys) {\n up.migrate.deprecated('up.util.only(object, ...keys)', 'up.util.pick(object, keys)')\n return up.util.pick(object, keys)\n}\n\n/*-\nReturns a copy of the given object that contains all except\nthe given keys.\n\n@function up.util.except\n@param {Object} object\n@param {Array} ...keys\n@deprecated\n Use `up.util.omit(object, keys)` (with an array argument) instead of `up.util.except(object, ...keys)` (with rest arguments).\n*/\nup.util.except = function(object, ...keys) {\n up.migrate.deprecated('up.util.except(object, ...keys)', 'up.util.omit(object, keys)')\n return up.util.omit(object, keys)\n}\n\nup.util.parseUrl = function(...args) {\n up.migrate.deprecated('up.util.parseUrl()', 'up.util.parseURL()')\n return up.util.parseURL(...args)\n}\n\nup.util.any = function(...args) {\n up.migrate.deprecated('up.util.any()', 'up.util.some()')\n return up.util.some(...args)\n}\n\nup.util.all = function(...args) {\n up.migrate.deprecated('up.util.all()', 'up.util.every()')\n return up.util.every(...args)\n}\n\nup.util.detect = function(...args) {\n up.migrate.deprecated('up.util.detect()', 'up.util.find()')\n return up.util.find(...args)\n}\n\nup.util.select = function(...args) {\n up.migrate.deprecated('up.util.select()', 'up.util.filter()')\n return up.util.filter(...args)\n}\n\nup.util.setTimer = function(...args) {\n up.migrate.deprecated('up.util.setTimer()', 'up.util.timer()')\n return up.util.timer(...args)\n}\n\nup.util.escapeHtml = function(...args) {\n up.migrate.deprecated('up.util.escapeHtml()', 'up.util.escapeHTML()')\n return up.util.escapeHTML(...args)\n}\n\nup.util.selectorForElement = function(...args) {\n up.migrate.deprecated('up.util.selectorForElement()', 'up.fragment.toTarget()')\n return up.fragment.toTarget(...args)\n}\n\nup.util.nextFrame = function(...args) {\n up.migrate.deprecated('up.util.nextFrame()', 'up.util.task()')\n return up.util.task(...args)\n}\n\n/*-\nCalls the given function for the given number of times.\n\n@function up.util.times\n@param {number} count\n@param {Function()} block\n@deprecated\n Use a `for` loop instead.\n*/\nup.util.times = function(count, block) {\n up.migrate.deprecated('up.util.times()', 'a `for` loop')\n for (let i = 0; i < count; i++) {\n block()\n }\n}\n\n/*-\nMerge the own properties of one or more `sources` into the `target` object.\n\n@function up.util.assign\n@param {Object} target\n@param {Array<Object>} ...sources\n@deprecated\n Use [`Object.assign()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) instead.\n*/\nup.util.assign = function(...args) {\n up.migrate.deprecated('up.util.assign()', 'Object.assign()')\n return Object.assign(...args)\n}\n\n/*-\nReturns an array of values of the given object.\n\n@function up.util.values\n@param {Object} object\n@return {Array<string>}\n@deprecated\n Use [`Object.values()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values) instead.\n*/\nup.util.values = function(...args) {\n up.migrate.deprecated('up.util.values()', 'Object.values()')\n return Object.values(...args)\n}\n\n/*-\nPushes the given function to the [JavaScript microtask queue](https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/).\n\n@function up.util.microtask\n@param {Function()} task\n@return {Promise}\n A promise that is resolved with the return value of `task`.\n\n If `task` throws an error, the promise is rejected with that error.\n@deprecated\n Use [`queueMicrotask()`](https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask) instead.\n*/\nup.util.microtask = function(task) {\n up.migrate.deprecated('up.util.microtask()', 'queueMicrotask()')\n return Promise.resolve().then(task)\n}\n\nup.migrate.splitAtOr = function(value) {\n let parts = value.split(/\\s+or\\s+/)\n if (parts.length >= 2) {\n up.migrate.warn(`Separating tokens by \\`or\\` has been deprecated. Use a comma (\\`,\\`) instead. Found in \"${value}\".`)\n return parts\n }\n}\n","class DeprecatedCannotCompile extends up.Error {\n get [Symbol.toStringTag]() { return 'up.CannotCompile' }\n}\n\nObject.defineProperty(up, 'CannotCompile', { get: function() {\n up.migrate.warn('The error up.CannotCompile is no longer thrown. Compiler errors now emit an \"error\" event on window, but no longer crash the render pass.')\n return DeprecatedCannotCompile\n} })\n","/*-\n@module up.browser\n@internal\n*/\n\nup.browser.loadPage = function(...args) {\n up.migrate.deprecated('up.browser.loadPage()', 'up.network.loadPage()')\n return up.network.loadPage(...args)\n}\n\nup.browser.isSupported = function(...args) {\n up.migrate.deprecated('up.browser.isSupported()', 'up.framework.isSupported()')\n return up.framework.isSupported(...args)\n}\n\n","/*-\n@module up.element\n*/\n\n/*-\nReturns the first descendant element matching the given selector.\n\n@function up.element.first\n@param {Element} [parent=document]\n The parent element whose descendants to search.\n\n If omitted, all elements in the `document` will be searched.\n@param {string} selector\n The CSS selector to match.\n@return {Element|undefined|null}\n The first element matching the selector.\n\n Returns `null` or `undefined` if no element macthes.\n@deprecated\n Use `up.element.get()` instead.\n*/\nup.element.first = function(...args) {\n up.migrate.deprecated('up.element.first()', 'up.element.get()')\n return up.element.get(...args)\n}\n\nup.element.createFromHtml = function(...args) {\n up.migrate.deprecated('up.element.createFromHtml()', 'up.element.createFromHTML()')\n return up.element.createFromHTML(...args)\n}\n\n/*-\nRemoves the given element from the DOM tree.\n\n> [IMPORTANT]\n> This function does *not* run [destructor functions](/learn/enhancing-elements#destructor)\n> on the removed elements. For this use `up.destroy()`.\n\n@function up.element.remove\n@param {Element} element\n The element to remove.\n@deprecated\n Use [`Element#remove()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) instead.\n*/\nup.element.remove = function(element) {\n up.migrate.deprecated('up.element.remove()', 'Element#remove()')\n return element.remove()\n}\n\n/*-\nReturns whether the given element matches the given CSS selector.\n\nTo match against a non-standard selector like `:main`,\nuse `up.fragment.matches()` instead.\n\n@function up.element.matches\n@param {Element} element\n The element to check.\n@param {string} selector\n The CSS selector to match.\n@return {boolean}\n Whether `element` matches `selector`.\n@deprecated\n Use [`Element#matches()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/matches) instead.\n*/\nup.element.matches = function(element, selector) {\n up.migrate.deprecated('up.element.matches()', 'Element#matches()')\n return element.matches(selector)\n}\n\n/*-\nReturns the first element that matches the selector by testing the element itself\nand traversing up through its ancestors in the DOM tree.\n\n@function up.element.closest\n@param {Element} element\n The element on which to start the search.\n@param {string} selector\n The CSS selector to match.\n@return {Element|null|undefined} element\n The matching element.\n\n Returns `null` or `undefined` if no element matches.\n@deprecated\n Use [`Element#closest()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/closest) instead.\n*/\nup.element.closest = function(element, selector) {\n up.migrate.deprecated('up.element.closest()', 'Element#closest()')\n return element.closest(selector)\n}\n\n/*-\nReplaces the given old element with the given new element.\n\nThe old element will be removed from the DOM tree.\n\n@function up.element.replace\n@param {Element} oldElement\n@param {Element} newElement\n@deprecated\n Use [`Element#replaceWith()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/replaceWith) instead.\n*/\nup.element.replace = function(oldElement, newElement) {\n up.migrate.deprecated('up.element.replace()', 'Element#replaceWith()')\n return oldElement.replaceWith(newElement)\n}\n\n/*-\nReturns all descendant elements matching the given selector.\n\n@function up.element.all\n@param {Element} [parent=document]\n The parent element whose descendants to search.\n\n If omitted, all elements in the `document` will be searched.\n@param {string} selector\n The CSS selector to match.\n@return {List<Element>}\n A list of all elements matching the selector.\n\n Returns an empty list if there are no matches.\n@deprecated\n Use [`Document#querySelectorAll()`](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll) or\n [`Element#querySelectorAll()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelectorAll) instead\n*/\nup.element.all = function(...args) {\n up.migrate.deprecated('up.element.all()', 'Document#querySelectorAll() or Element#querySelectorAll()')\n const selector = args.pop()\n const root = args[0] || document\n return root.querySelectorAll(selector)\n}\n\n/*-\nAdds or removes the given class from the given element.\n\n@function up.element.toggleClass\n@param {Element} element\n The element for which to add or remove the class.\n@param {string} className\n The class which should be added or removed.\n@param {Boolean} [newPresent]\n Pass `true` to add the class to the element or `false` to remove it.\n\n If omitted, the class will be added if missing and removed if present.\n@deprecated\n Use [`Element#classList.toggle(className)`](https://developer.mozilla.org/en-US/docs/Web/API/Element/classList) instead.\n*/\nup.element.toggleClass = function(element, klass, newPresent) {\n up.migrate.deprecated('up.element.toggleClass()', 'element.classList.toggle()')\n const list = element.classList\n if (newPresent == null) { newPresent = !list.contains(klass) }\n if (newPresent) {\n return list.add(klass)\n } else {\n return list.remove(klass)\n }\n}\n\n/*-\nReturns a CSS selector that matches the given element as good as possible.\n\nAlias for `up.fragment.toTarget()`.\n\n@function up.element.toSelector\n@param {string|Element|jQuery} element\n The element for which to create a selector.\n@deprecated\n Use `up.fragment.toTarget()` instead.\n*/\nup.element.toSelector = function(...args) {\n up.migrate.deprecated('up.element.toSelector()', 'up.fragment.toTarget()')\n return up.fragment.toTarget(...args)\n}\n\n/*-\nReturns whether the given element is attached to the DOM tree.\n\nSee also `up.element.isDetached()`.\n\n@function up.element.isAttached\n@param {Element} element\n@return {boolean}\n@deprecated\n Use `element.isConnected` instead.\n*/\nup.element.isAttached = function(element) {\n up.migrate.deprecated('up.element.isAttached()', 'element.isConnected')\n return document.contains(element)\n}\n\n/*-\nReturns whether the given element has been removed from the DOM tree.\n\n@function up.element.isDetached\n@param {Element} element\n@return {boolean}\n@deprecated\n Use `!element.isConnected` instead.\n*/\nup.element.isDetached = function(element) {\n up.migrate.deprecated('up.element.isDetached()', '!element.isConnected')\n return !up.element.isAttached(element)\n}\n\n","/*-\n@module up.event\n*/\n\nup.migrate.renamedPackage('bus', 'event')\n\n/*-\n[Emits an event](/api/up.emit) and returns whether no listener\nhas prevented the default action.\n\n### Example\n\n```javascript\nif (up.event.nobodyPrevents('disk:erase')) {\n Disk.erase()\n})\n```\n\n@function up.event.nobodyPrevents\n@param {string} eventType\n@param {Object} eventProps\n@return {boolean}\n whether no listener has prevented the default action\n@deprecated\n Use `!up.emit(type).defaultPrevented` instead.\n*/\nup.event.nobodyPrevents = function(...args) {\n up.migrate.deprecated('up.event.nobodyPrevents(type)', '!up.emit(type).defaultPrevented')\n const event = up.emit(...args)\n return !event.defaultPrevented\n}\n\n/*-\nListens to an event on `document` or a given element.\nThe event handler is called with the event target as a\n[jQuery collection](https://learn.jquery.com/using-jquery-core/jquery-object/).\n\nIf you're not using jQuery, use `up.on()` instead, which calls\nevent handlers with a native element.\n\n### Example\n\n```\nup.$on('click', 'a', function(event, $link) {\n console.log(\"Click on a link with destination %s\", $link.attr('href'))\n})\n```\n\n@function up.$on\n@param {Element|jQuery} [element=document]\n The element on which to register the event listener.\n\n If no element is given, the listener is registered on the `document`.\n@param {string} events\n A space-separated list of types names to bind to.\n@param {string} [selector]\n The selector of an element on which the event must be triggered.\n Omit the selector to listen to all events with that name, regardless\n of the event target.\n@param {boolean} [options.passive=false]\n Whether to register a [passive event listener](https://developers.google.com/web/updates/2016/06/passive-event-listeners).\n\n A passive event listener may not call `event.preventDefault()`.\n This in particular may improve the frame rate when registering\n `touchstart` and `touchmove` events.\n@param {Function(event, [element], [data])} listener\n The listener function that should be called.\n\n The function takes the event as the first argument and the observed element as the second argument.\n The element's [attached data](/learn/data) is passed as a third argument.\n@return {Function()}\n A function that unbinds the event listeners when called.\n@deprecated\n Use `up.on()` with a callback that wraps the given native element in a jQuery collection.\n*/\nup.$on = function(...definitionArgs) {\n up.migrate.warn('up.$on() has been deprecated. Instead use up.on() with a callback that wraps the given native element in a jQuery collection.')\n let callback = definitionArgs.pop()\n\n callback.upNativeCallback = function(event, element, data) {\n let $element = jQuery(element)\n callback.call($element, event, $element, data)\n }\n return up.on(...definitionArgs, callback.upNativeCallback)\n}\n\nup.$off = function(...definitionArgs) {\n up.migrate.deprecated('up.$off()', 'up.off()')\n let $callback = definitionArgs.pop()\n let nativeCallback = $callback.upNativeCallback\n\n if (!nativeCallback) {\n up.fail('The callback passed to up.$off() was never registered with up.$on()')\n }\n\n return up.off(...definitionArgs, nativeCallback)\n}\n","/*-\n@module up.script\n*/\n\nconst u = up.util\nconst e = up.element\n\nup.migrate.renamedPackage('syntax', 'script')\n\nup.script.config.patch(function(config) {\n // The 3.14.0 release notes named this setting wrongly, and apps copied the name.\n up.migrate.renamedProperty(config, 'callbackPolicy', 'evalCallbackPolicy', { warning: 'There is no setting up.script.config.callbackPolicy. Use up.script.config.evalCallbackPolicy instead.' })\n})\n\nup.migrate.postCompile = function(elements, compiler) {\n // up.compiler() has a legacy { keep } option that will automatically\n // set [up-keep] on the elements it compiles\n let keepValue\n if (keepValue = compiler.keep) {\n up.migrate.warn('The { keep } option for up.compiler() has been removed. Have the compiler set an [up-keep] attribute instead (found in compiler for \"%s\").', compiler.selector)\n const value = u.isString(keepValue) ? keepValue : ''\n for (let element of elements) {\n element.setAttribute('up-keep', value)\n }\n }\n}\n\nup.migrate.targetMacro = function(queryAttr, fixedResultAttrs, replacement) {\n up.macro(`[${queryAttr}]`, function(link) {\n up.migrate.warn('Attribute [%s] has been deprecated. Use %s instead (found in %o).', queryAttr, replacement, link)\n let optionalTarget\n const resultAttrs = u.copy(fixedResultAttrs)\n if ((optionalTarget = link.getAttribute(queryAttr))) {\n resultAttrs['up-target'] = optionalTarget\n } else {\n resultAttrs['up-follow'] = ''\n }\n e.setMissingAttrs(link, resultAttrs)\n link.removeAttribute(queryAttr)\n })\n}\n\n/*-\nRegisters a function to be called when an element with\nthe given selector is inserted into the DOM. The function is called\nwith each matching element as a\n[jQuery object](https://learn.jquery.com/using-jquery-core/jquery-object/).\n\nIf you're not using jQuery, use `up.compiler()` instead, which calls\nthe compiler function with a native element.\n\n## Example\n\nThis jQuery compiler will insert the current time into a\n`<div class='current-time'></div>`:\n\n```js\nup.$compiler('.current-time', function($element) {\n let now = new Date()\n $element.text(now.toString())\n})\n```\n\n@function up.$compiler\n@param {string} selector\n The selector to match.\n@param {Object} [options]\n See [`options` argument for `up.compiler()`](/api/up.compiler#parameters).\n@param {Function($element, data)} compiler\n @like up.compiler\n@deprecated\n Use `up.compiler()` with a callback that wraps the given native element in a jQuery collection.\n*/\nup.$compiler = function(...definitionArgs) {\n up.migrate.warn('up.$compiler() has been deprecated. Instead use up.compiler() with a callback that wraps the given native element in a jQuery collection.')\n\n let $fn = definitionArgs.pop()\n\n return up.compiler(...definitionArgs, function(element, ...fnArgs) {\n let $element = jQuery(element)\n return $fn($element, ...fnArgs)\n })\n}\n\n\n/*-\nRegisters a [compiler](/api/up.compiler) that is run before all other compilers.\nThe compiler function is called with each matching element as a\n[jQuery object](https://learn.jquery.com/using-jquery-core/jquery-object/).\n\nIf you're not using jQuery, use `up.macro()` instead, which calls\nthe macro function with a native element.\n\n## Example\n\n```js\nup.$macro('[content-link]', function($link) {\n $link.attr({\n 'up-target': '.content',\n 'up-transition': 'cross-fade',\n 'up-duration': '300'\n })\n})\n```\n\n@function up.$macro\n@param {string} selector\n The selector to match.\n@param {Object} options\n See [`options` argument for `up.compiler()`](/api/up.compiler#parameters).\n@param {Function($element, data)} macro\n @like up.macro\n@deprecated\n Use `up.macro()` with a callback that wraps the given native element in a jQuery collection.\n*/\nup.$macro = function(...definitionArgs) {\n up.migrate.warn('up.$macro() has been deprecated. Instead use up.macro() with a callback that wraps the given native element in a jQuery collection.')\n\n let $fn = definitionArgs.pop()\n\n return up.macro(...definitionArgs, function(element, ...fnArgs) {\n let $element = jQuery(element)\n return $fn($element, ...fnArgs)\n })\n}\n\nup.migrate.processHelloMeta = function(meta, response) {\n Object.defineProperty(meta, 'response', { get() {\n up.migrate.warn('Accessing meta.response from a compiler has been deprecated without replacement. Avoid fragments that compile differently for the initial page load vs. subsequent fragment updates.')\n return response\n } })\n}\n\nlet modernHello = up.hello\nlet errorMessage = 'up.hello() is now async and returns a promise'\n\nclass WasElementIsPromise extends Promise {}\nup.migrate.defineThrowingProps(WasElementIsPromise.prototype, Element.prototype, errorMessage)\nup.migrate.defineThrowingProps(WasElementIsPromise.prototype, Node.prototype, errorMessage)\nup.migrate.defineThrowingProps(WasElementIsPromise.prototype, EventTarget.prototype, errorMessage)\n\nup.hello = function(element, ...args) {\n let elementPromise = modernHello(element, ...args)\n return WasElementIsPromise.resolve(elementPromise)\n}\n","/*-\n@module up.form\n*/\n\nup.form.config.patch(function(config) {\n up.migrate.renamedProperty(config, 'fields', 'fieldSelectors', { label: 'up.form.config' })\n up.migrate.renamedProperty(config, 'submitButtons', 'submitButtonSelectors', { label: 'up.form.config' })\n up.migrate.renamedProperty(config, 'validateTargets', 'groupSelectors', { label: 'up.form.config' })\n up.migrate.renamedProperty(config, 'observeDelay', 'watchInputDelay', { label: 'up.form.config' })\n up.migrate.renamedProperty(config, 'genericButtonSelectors', 'anyButtonSelectors', { label: 'up.form.config' })\n})\n\nup.migrate.migratedFormGroupSelectors = function() {\n return up.form.config.groupSelectors.map((originalSelector) => {\n let migratedSelector = originalSelector.replace(/:has\\((:origin|&)\\)$/, '')\n if (originalSelector !== migratedSelector) {\n 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)\n }\n return migratedSelector\n })\n}\n\n\n// An old implementation allowed [up-switch] to be set on individual radio buttons\n// instead of on a container for the radio group. Each button got its own up.Switcher.\n// The old implementation also listened to `change`, which has a weird caveat for radio\n// buttons that happens to make individual Switchers work: It only fires when the radio\n// button gets checked, not when it gets unchecked.\n// The new implementation uses up.watch(), which only works for a group of radio buttons.\nup.migrate.watchForSwitch = function(root, callback) {\n if (root.matches('input[type=radio]')) {\n up.migrate.warn('Using [up-switch] on an individual radio button is deprecated (%o). Use [up-switch] on the container of a radio group instead.', root)\n return up.on(root, 'change', callback)\n }\n}\n\n/*-\nWatches form fields and runs a callback when a value changes.\n\nOnly fields with a `[name]` attribute can be watched.\n\n## Example\n\nThe following logs a message whenever the `<input>` changes:\n\n```html\n<input name=\"query\" up-observe=\"console.log('New value', value)\">\n```\n\n## Callback context\n\nThe script given to `[up-observe]` runs with the following context:\n\n| Name | Type | Description |\n| -------- | --------- | ------------------------------------- |\n| `this` | `Element` | The changed form field |\n| `name` | `string` | The `[name]` of the changed field |\n| `value` | `string` | The new value of the changed field |\n\n## Watching multiple fields\n\nYou can set `[up-observe]` on any element to observe all contained fields.\nThe `name` argument contains the name of the field that was changed.\n\n@selector [up-observe]\n@param up-observe\n The code to run when any field's value changes.\n@deprecated\n Use `[up-watch]` instead.\n*/\nup.migrate.renamedAttribute('up-observe', 'up-watch')\n\n/*-\nMarks this element as a from group, which (usually) contains a label, input and error message.\n\nYou are not required to use form groups to [submit forms through Unpoly](/learn/submitting-forms).\nHowever, structuring your form into groups will help Unpoly to make smaller changes to the DOM when\nworking with complex form. For instance, when [validating](/api/up-validate) a field,\nUnpoly will re-render the [closest](https://developer.mozilla.org/en-US/docs/Web/API/Element/closest)\nform group around that field.\n\nBy default Unpoly will also consider a `<fieldset>` or `<label>` around a field to be a form group.\nYou can configure this in `up.form.config.groupSelectors`.\n\n@selector [up-fieldset]\n@deprecated\n Use `[up-form-group]` instead.\n*/\n\nup.migrate.renamedAttribute('up-fieldset', 'up-form-group')\n\nup.migrate.renamedAttribute('up-delay', 'up-watch-delay', { scope: '[up-autosubmit]' })\n\nup.migrate.renamedAttribute('up-delay', 'up-watch-delay', { scope: '[up-watch]' })\n\n/*-\nObserves form fields and runs a callback when a value changes.\n\n## Example\n\nThe following would print to the console whenever an input field changes:\n\n```js\nup.observe('input.query', function(value) {\n console.log('Query is now %o', value)\n})\n```\n\n@function up.observe\n@param {string|Element|Array<Element>|jQuery} elements\n The form fields that will be observed.\n\n You can pass one or more fields, a `<form>` or any container that contains form fields.\n The callback will be run if any of the given fields change.\n@param {boolean} [options.batch=false]\n If set to `true`, the `onChange` callback will receive multiple\n detected changes in a single diff object as its argument.\n@param {number} [options.delay=up.form.config.observeDelay]\n The number of milliseconds to wait before executing the callback\n after the input value changes. Use this to limit how often the callback\n will be invoked for a fast typist.\n@param {Function(value, name): string} onChange\n The callback to run when the field's value changes.\n\n If given as a function, it receives two arguments (`value`, `name`).\n `value` is a string with the new field value and `name` is the name\n of the form field that changed. If given as a string, it will be evaled as\n JavaScript code in a context where (`value`, `name`) are set.\n\n A long-running callback function may return a promise that settles when\n the callback completes. In this case the callback will not be called again while\n it is already running.\n@return {Function()}\n A destructor function that removes the observe watch when called.\n@deprecated\n Use `up.watch()` instead.\n*/\nup.observe = function(...args) {\n up.migrate.deprecated('up.observe()', 'up.watch()')\n\n if (up.util.isList(args[0]) && args[0].length > 1) {\n let list = args.shift()\n up.migrate.warn('Calling up.observe() with a list of multiple elements is no longer supported by up.watch()')\n let unwatchFns = up.util.map(list, (firstArg) => up.watch(firstArg, ...args))\n return up.util.sequence(unwatchFns)\n }\n\n return up.watch(...args)\n}\n","const u = up.util\n\n/*-\n@module up.fragment\n*/\n\nup.migrate.renamedPackage('flow', 'fragment')\nup.migrate.renamedPackage('dom', 'fragment')\n\nup.fragment.config.patch(function(config) {\n up.migrate.renamedProperty(config, 'fallbacks', 'mainTargets', { label: 'up.fragment.config' })\n})\n\n// Names the call site of a render pass in a warning about its options.\nconst renderOptionsSource = (options) => ({ label: 'render options', detail: options.origin || options.url || options.target })\n\nup.migrate.handleResponseDocOptions = (docOptions) => up.migrate.fixKey(docOptions, 'html', 'document', renderOptionsSource(docOptions))\n\nup.fragment.config.patch(function(config) {\n let matchAroundOriginDeprecated = () => up.migrate.deprecated('up.fragment.config.matchAroundOrigin', 'up.fragment.config.match')\n Object.defineProperty(config, 'matchAroundOrigin', {\n configurable: true,\n get: function() {\n matchAroundOriginDeprecated()\n return this.match === 'region'\n },\n set: function(value) {\n matchAroundOriginDeprecated()\n this.match = value ? 'region' : 'first'\n }\n })\n})\n\n/*-\nReplaces elements on the current page with corresponding elements\nfrom a new page fetched from the server.\n\n@function up.replace\n@param {string|Element|jQuery} target\n The CSS selector to update. You can also pass a DOM element or jQuery element\n here, in which case a selector will be inferred from the element's class and ID.\n@param {string} url\n The URL to fetch from the server.\n@param {Object} [options]\n See `options` for `up.render()`.\n@return {Promise}\n A promise that fulfills when the page has been updated.\n@deprecated\n Use `up.render()` or `up.navigate()` instead.\n*/\nup.replace = function(target, url, options) {\n up.migrate.deprecated('up.replace(target, url)', 'up.navigate(target, { url })')\n return up.navigate({ ...options, target, url })\n}\n\n/*-\nUpdates a selector on the current page with the\nsame selector from the given HTML string.\n\n### Example\n\nLet's say your current HTML looks like this:\n\n <div class=\"one\">old one</div>\n <div class=\"two\">old two</div>\n\nWe now replace the second `<div>`, using an HTML string\nas the source:\n\n html = '<div class=\"one\">new one</div>' +\n '<div class=\"two\">new two</div>'\n\n up.extract('.two', html)\n\nUnpoly looks for the selector `.two` in the strings and updates its\ncontents in the current page. The current page now looks like this:\n\n <div class=\"one\">old one</div>\n <div class=\"two\">new two</div>\n\nNote how only `.two` has changed. The update for `.one` was\ndiscarded, since it didn't match the selector.\n\n@function up.extract\n@param {string|Element|jQuery} target\n@param {string} html\n@param {Object} [options]\n See options for [`up.render()`](/api/up.render).\n@return {Promise}\n A promise that will be fulfilled when the selector was updated.\n@deprecated\n Use `up.render()` or `up.navigate()` instead.\n*/\nup.extract = function(target, document, options) {\n up.migrate.deprecated('up.extract(target, document)', 'up.navigate(target, { document })')\n return up.navigate({ ...options, target, document })\n}\n\n/*-\nReturns the first element matching the given selector, but\nignores elements that are being [destroyed](/api/up.destroy) or that are being\nremoved by a [transition](/api/up.morph).\n\nReturns `undefined` if no element matches these conditions.\n\n@function up.fragment.first\n@param {Element|jQuery} [root=document]\n The root element for the search. Only the root's descendants will be matched.\n\n May be omitted to search through all elements in the current `document`.\n@param {string} selector\n The selector to match\n@param {string} [options.layer='current']\n The layer in which to find the element.\n\n See [[targeting-other-layers]].\n@param {string|Element|jQuery} [options.origin]\n A second element or selector that can be referenced as `:origin` in the first selector.\n@return {Element|undefined}\n The first element that is not being destroyed,\n or `undefined` if no such element was found.\n@deprecated\n Use `up.fragment.get()` instead.\n*/\nup.fragment.first = function(...args) {\n up.migrate.deprecated('up.fragment.first()', 'up.fragment.get()')\n return up.fragment.get(...args)\n}\n\nup.first = up.fragment.first\n\nup.migrate.preprocessRenderOptions = function(options) {\n // Rewrite deprecated { history: URLString } option\n if (u.isString(options.history) && (options.history !== 'auto')) {\n up.migrate.warn(\"Passing a URL as { history } option is deprecated. Pass it as { location } instead.\")\n options.location = options.history\n // Also the URL in { history } is truthy, keeping a value in there would also inherit to failOptions,\n // where it would be expanded to { failLocation }.\n options.history = 'auto'\n }\n\n // Rewrite deprecated { target: jQuery } option\n // Rewrite deprecated { origin: jQuery } option\n for (let prop of ['target', 'origin']) {\n if (u.isJQuery(options[prop])) {\n up.migrate.warn('Passing a jQuery collection as { %s } is deprecated. Pass it as a native element instead.', prop)\n options[prop] = up.element.get(options[prop])\n }\n }\n\n // Rewrite deprecated { fail: 'auto' } option\n if (options.fail === 'auto') {\n up.migrate.warn(\"The option { fail: 'auto' } is deprecated. Omit the option instead.\")\n delete options.fail\n }\n\n let solo = u.pluckKey(options, 'solo')\n if (u.isString(solo)) {\n // Old { solo } option did not accept a string, but some users were passing a string as a truthy value.\n // This would break the { abort } option, where a string is parsed a CSS selector.\n up.migrate.warn(\"The up.render() option { solo } has been replaced with { abort } and { abort } no longer accepts a URL pattern. Check if you can use { abort: 'target'} or use up.network.abort(pattern) instead.\")\n options.abort = (options) => up.network.abort(solo, options)\n } else if (u.isFunction(solo)) {\n up.migrate.warn(\"The up.render() option { solo } has been replaced with { 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.\")\n options.abort = (options) => { up.network.abort(solo, options) }\n } else if (solo === true) {\n up.migrate.deprecated('Option { solo: true }', \"{ abort: 'all' }\")\n options.abort = 'all'\n } else if (solo === false) {\n up.migrate.deprecated('Option { solo: false }', \"{ abort: false }\")\n up.migrate.warn('Unpoly 3+ only aborts requests targeting the same fragment. Setting { solo: false } may no longer be necessary.')\n options.abort = false\n }\n\n up.migrate.fixKey(options, 'failOnFinished', 'onFailFinished', renderOptionsSource(options))\n up.migrate.fixKey(options, 'badResponseTime', 'lateDelay', renderOptionsSource(options))\n\n // Rewrite deprecated { reveal } option (it had multiple variants)\n if (u.isString(options.reveal)) {\n up.migrate.deprecated(`Option { reveal: '${options.reveal}' }`, `{ scroll: '${options.reveal}' }`)\n options.scroll = options.reveal\n } else if (options.reveal === true) {\n up.migrate.deprecated('Option { reveal: true }', \"{ scroll: 'target' }\")\n options.scroll = 'target'\n } else if (options.reveal === false) {\n up.migrate.deprecated('Option { reveal: false }', \"{ scroll: false }\")\n options.scroll = false\n }\n\n // Rewrite deprecated { resetScroll } option\n if (options.resetScroll === true) {\n up.migrate.deprecated('Option { resetScroll: true }', \"{ scroll: 'top' }\")\n options.scroll = 'top'\n } if (options.resetScroll === false) {\n up.migrate.deprecated('Option { resetScroll: false }', \"{ scroll: false }\")\n options.scroll = false\n }\n\n // Rewrite deprecated { restoreScroll } option\n if (options.restoreScroll === true) {\n up.migrate.deprecated('Option { restoreScroll: true }', \"{ scroll: 'restore' }\")\n options.scroll = 'restore'\n } if (options.restoreScroll === false) {\n up.migrate.deprecated('Option { restoreScroll: false }', \"{ scroll: false }\")\n options.scroll = false\n }\n\n // Rewrite deprecated { scroll } option values\n if (options.scroll === 'reset') {\n up.migrate.deprecated(\"Option { scroll: 'reset' }\", \"{ scroll: 'top' }\")\n options.scroll = 'top'\n }\n\n}\n\nup.migrate.postprocessReloadOptions = function(options) {\n let lastModified = options.headers?.['If-Modified-Since']\n let legacyHeader\n if (lastModified) {\n legacyHeader = Math.floor(new Date(lastModified) * 0.001).toString()\n } else {\n legacyHeader = '0'\n }\n\n options.headers[up.protocol.headerize('reloadFromTime')] = legacyHeader\n}\n\n// Modern versions only support \":origin\". This legacy implementation\n// also supports the old shorthand \"&\".\nup.migrate.resolveOrigin = function(target, { origin } = {}) {\n // We skip over attribute selector values, which may contain an ampersand, e.g. 'a[href=\"/notes?page=2&order=created\"]'\n let pattern = /\"[^\"]*\"|'[^']*'|&|:origin\\b/g\n\n return target.replace(pattern, function(variant) {\n if (variant === ':origin' || variant === '&') {\n if (variant === '&') {\n // We only explain the changed :origin of form submissions when the origin is a form element.\n // Validation origins also get the hint, which we accept as noise.\n let formHint = origin?.form ? \"A form submission's :origin is now the button or changed field, not the form. To target the form, use form:has(:origin). \" : ''\n up.migrate.warn(\"Origin shorthand '&' has been deprecated. Use :origin instead. \" + formHint + \"Found in %s (origin %o).\", target, origin)\n }\n if (origin) {\n return up.fragment.toTarget(origin)\n } else {\n up.fail('Missing { origin } element to resolve \"%s\" reference (found in %s)', variant, target)\n }\n } else {\n // Skip over quoted attribute selector values, which may contain an ampersand\n return variant\n }\n })\n}\n\nup.fragment.config.patch(function() {\n Object.defineProperty(this, 'runScripts', {\n configurable: true,\n get() {\n up.migrate.deprecated('up.fragment.config.runScripts', 'up.script.config.scriptElementPolicy = \"auto\"')\n switch(up.script.config.scriptElementPolicy) {\n case 'auto': return true\n case 'pass': return true\n case 'block': return false\n case 'nonce': return (script) => !!script.nonce\n }\n },\n set(value) {\n if (value === true) {\n up.migrate.deprecated('up.fragment.config.runScripts = true', 'up.script.config.scriptElementPolicy = \"auto\"')\n up.script.config.scriptElementPolicy = 'auto'\n } else if (value === false) {\n up.migrate.deprecated('up.fragment.config.runScripts = false', 'up.script.config.scriptElementPolicy = \"block\"')\n up.script.config.scriptElementPolicy = 'block'\n } else if (u.isFunction(value)) {\n up.migrate.warn('up.fragment.config.runScripts has been replaced by up.script.config.scriptElementPolicy, but no longer supports a function value.')\n up.script.config.scriptElementPolicy = 'block'\n }\n }\n })\n})\n\n// up.compiler('[up-keep]:not([up-keep=true]):not([up-keep=\"\"])', function(element) {\nup.compiler('[up-keep]', function(element) {\n let selector = up.element.booleanOrStringAttr(element, 'up-keep')\n if (u.isString(selector) && /[.[#]/.test(selector)) {\n up.migrate.warn('The [up-keep] attribute no longer supports a selector value (found in %o). Elements will be matched by their derived target. You may prevent keeping with [up-on-keep=\"if(condition) event.preventDefault()\"].', element)\n // The best we can do here is prevent matching of the old and new element if the new element\n // does not match the selector.\n element.addEventListener('up:fragment:keep', function(event) {\n if (event.target === element && !event.newFragment.matches(selector)) {\n event.preventDefault()\n }\n })\n element.setAttribute('up-keep', '')\n }\n})\n","/*-\n@module up.framework\n*/\n\n// The up:app:booted event has never been public API, but people have been using it as it was visible in the log.\nup.migrate.renamedEvent('up:app:booted', 'up:framework:booted')\n\nif (document.querySelector('script[up-boot=manual]')) {\n // We cannot make any migration changes here, because this line is evaled too late.\n // unpoly.js has already tested whether a manual boot is required.\n up.migrate.warn('The [up-boot=\"manual\"] attribute must be set on the <html> element')\n}\n","/*-\n@module up.history\n*/\n\nup.history.config.patch(function(config) {\n up.migrate.renamedProperty(config, 'popTargets', 'restoreTargets', { label: 'up.history.config' })\n})\n\n/*-\nReturns a normalized URL for the current history entry.\n\n@function up.history.url\n@return {string}\n@deprecated Use the `up.history.location` property instead.\n*/\nup.history.url = function() {\n up.migrate.deprecated('up.history.url()', 'up.history.location')\n return up.history.location\n}\n\nup.migrate.renamedEvent('up:history:push', 'up:location:changed')\nup.migrate.renamedEvent('up:history:pushed', 'up:location:changed')\nup.migrate.renamedEvent('up:history:restore', 'up:location:changed')\nup.migrate.renamedEvent('up:history:restored', 'up:location:changed')\n// There was never an up:history:replace (present tense) event\nup.migrate.renamedEvent('up:history:replaced', 'up:location:changed')\n\nup.migrate.prepareLocationChangedEvent = function(event) {\n up.migrate.renamedProperty(event, 'url', 'location', { warning: 'Property event.url of up:location:changed has been renamed to event.location' })\n // up.migrate.removedProperty(event, 'reason')\n}\n\n\nup.history.config.patch(function() {\n Object.defineProperty(this, 'updateMetaTags', {\n configurable: true,\n get() {\n return up.history.isEnabled('metaTags')\n },\n set(value) {\n // Apps used to set { updateMetaTags: true } to silence an old warning.\n // Since that is the default, we only ask to remove the line.\n if (value) {\n up.migrate.warn('up.history.config.updateMetaTags has been removed. Meta tags are updated by default.')\n return\n }\n\n // (1) This changes up.history.config.enabled once.\n // (2) When the app sets up.history.config.enabled afterwards, meta tags are updated again\n // if the new value includes them. We accept this, and point to the array in the deprecation.\n up.migrate.deprecated('up.history.config.updateMetaTags = false', \"an array of aspects without 'metaTags' in up.history.config.enabled\")\n let { enabled } = this\n if (enabled === true) enabled = ['location', 'title', 'lang']\n if (up.util.isArray(enabled)) this.enabled = enabled.filter((aspect) => aspect !== 'metaTags')\n }\n })\n})\n\n// up.compiler('[up-hungry]')\n\nup.migrate.warnOfHungryMetaTags = function(metaTags) {\n // Meta tags are not updated automatically when up.history.config.enabled excludes them.\n if (!up.history.isEnabled('metaTags')) return\n\n let fullHungrySelector = up.radio.config.selector('hungrySelectors')\n let hungryMetaTags = up.util.filter(metaTags, (meta) => meta.matches(fullHungrySelector))\n if (hungryMetaTags.length) {\n up.migrate.warn('Meta tags in the <head> are now updated automatically. Remove the [up-hungry] attribute from %o.', hungryMetaTags)\n }\n}\n","/*-\n@module up.status\n*/\n\nup.migrate.renamedPackage('navigation', 'status')\nup.migrate.renamedPackage('feedback', 'status')\n\nup.status.config.patch(function(config) {\n up.migrate.renamedProperty(config, 'navs', 'navSelectors', { label: 'up.status.config' })\n})\n","/*-\n@module up.link\n*/\n\nconst followSelectorFn = up.link.config.selectorFn('followSelectors')\nconst submitSelectorFn = up.form.config.selectorFn('submitSelectors')\nconst preloadSelectorFn = up.link.config.selectorFn('preloadSelectors')\n\n// Links and forms can open overlays, so old layer attributes are translated on both.\nconst layerOpenerSelectorFn = () => [followSelectorFn(), submitSelectorFn()].join()\n\nup.migrate.renamedAttribute('up-flavor', 'up-mode', { scope: layerOpenerSelectorFn })\nup.migrate.renamedAttribute('up-closable', 'up-dismissible', { scope: layerOpenerSelectorFn })\nup.migrate.renamedAttribute('up-dismissable', 'up-dismissible', { scope: layerOpenerSelectorFn })\nup.migrate.removedAttribute('up-width', { scope: layerOpenerSelectorFn, replacement: '[up-size] or [up-class]' })\nup.migrate.removedAttribute('up-height', { scope: layerOpenerSelectorFn, replacement: '[up-size] or [up-class]' })\nup.migrate.renamedAttribute('up-history-visible', 'up-history', { scope: layerOpenerSelectorFn })\nup.migrate.renamedAttribute('up-clear-cache', 'up-expire-cache', { scope: layerOpenerSelectorFn })\nup.migrate.renamedAttribute('up-bad-response-time', 'up-late-delay')\n\nup.migrate.transformAttribute('up-solo', function(link, solo) {\n switch (solo) {\n case '':\n up.migrate.warn('Attribute [up-solo] has been replaced with [up-abort=\"all\"] (found in %o)', link)\n link.setAttribute('up-abort', 'all')\n break\n case 'true':\n up.migrate.warn('Attribute [up-solo=\"true\"] has been replaced with [up-abort=\"all\"] (found in %o)', link)\n link.setAttribute('up-abort', 'all')\n break\n case 'false':\n up.migrate.warn('Attribute [up-solo=\"false\"] has been replaced with [up-abort=\"false\"] (found in %o)', link)\n up.migrate.warn('Unpoly 3+ only aborts requests targeting the same fragment. Setting [up-solo=\"false\"] may no longer be necessary.')\n link.setAttribute('up-abort', 'false')\n break\n default:\n up.migrate.warn('Attribute [up-solo] has been renamed to [up-abort] and [up-abort] no longer accepts a URL pattern (found in %o). Check if you can use [up-abort=\"target\"] instead.', link)\n link.setAttribute('up-abort', 'target')\n }\n})\n\nup.migrate.transformAttribute('up-reveal', function(link, reveal) {\n switch (reveal) {\n case '':\n up.migrate.warn('Attribute [up-reveal] has been replaced with [up-scroll=\"target\"] (found in %o)', link)\n link.setAttribute('up-scroll', 'target')\n break\n case 'true':\n up.migrate.warn('Attribute [up-reveal=\"true\"] has been replaced with [up-scroll=\"target\"] (found in %o)', link)\n link.setAttribute('up-scroll', 'target')\n break\n case 'false':\n up.migrate.warn('Attribute [up-reveal=\"false\"] has been replaced with [up-scroll=\"false\"] (found in %o)', link)\n link.setAttribute('up-scroll', 'false')\n break\n default:\n up.migrate.warn('Attribute [up-reveal=\"%s\"] has been replaced with [up-scroll=\"%s\"] (found in %o)', reveal, reveal, link)\n link.setAttribute('up-scroll', reveal)\n }\n})\n\nup.migrate.transformAttribute('up-reset-scroll', function(link, resetScroll) {\n switch (resetScroll) {\n case '':\n up.migrate.warn('Attribute [up-reset-scroll] has been replaced with [up-scroll=\"top\"] (found in %o)', link)\n link.setAttribute('up-scroll', 'top')\n break\n case 'true':\n up.migrate.warn('Attribute [up-reset-scroll=\"true\"] has been replaced with [up-scroll=\"top\"] (found in %o)', link)\n link.setAttribute('up-scroll', 'top')\n break\n case 'false':\n up.migrate.warn('Attribute [up-reset-scroll=\"false\"] has been replaced with [up-scroll=\"false\"] (found in %o)', link)\n link.setAttribute('up-scroll', 'false')\n break\n }\n})\n\nup.migrate.transformAttribute('up-restore-scroll', function(link, restoreScroll) {\n switch (restoreScroll) {\n case '':\n up.migrate.warn('Attribute [up-restore-scroll] has been replaced with [up-scroll=\"restore\"] (found in %o)', link)\n link.setAttribute('up-scroll', 'restore')\n break\n case 'true':\n up.migrate.warn('Attribute [up-restore-scroll=\"true\"] has been replaced with [up-scroll=\"restore\"] (found in %o)', link)\n link.setAttribute('up-scroll', 'restore')\n break\n case 'false':\n up.migrate.warn('Attribute [up-restore-scroll=\"false\"] has been replaced with [up-scroll=\"false\"] (found in %o)', link)\n link.setAttribute('up-scroll', 'false')\n break\n }\n})\n\n/*-\n[Follows](/api/up.follow) this link as fast as possible.\n\nThis is done by:\n\n- [Following the link](/api/up-follow) without a full page load\n- [Preloading the link's destination URL](/learn/preloading)\n- [Triggering the link on `mousedown`](/api/up-instant) instead of on `click`\n\n## Example\n\nUse `[up-dash]` like this:\n\n <a href=\"/users\" up-dash=\".main\">User list</a>\n\nThis is shorthand for:\n\n <a href=\"/users\" up-target=\".main\" up-instant up-preload>User list</a>\n\n@selector [up-dash]\n@param [up-dash='body']\n The CSS selector to replace\n\n Inside the CSS selector you may refer to this link as `:origin`.\n@deprecated\n To accelerate all links use `up.link.config.instantSelectors` and `up.link.config.preloadSelectors`.\n*/\nup.migrate.targetMacro('up-dash', { 'up-preload': '', 'up-instant': '' }, 'up.link.config.instantSelectors and up.link.config.preloadSelectors')\n\nup.migrate.renamedAttribute('up-delay', 'up-preload-delay', { scope: preloadSelectorFn })\n\nlet preloadEnabledRef\nup.link.config.patch(function(config) {\n preloadEnabledRef = up.migrate.removedProperty(config, 'preloadEnabled', { value: true, warning: 'The configuration up.link.config.preloadEnabled has been removed. To disable preloading, prevent up:link:preload instead.' })\n})\n\nup.on('up:link:preload', function(event) {\n if (!preloadEnabledRef[0]) {\n event.preventDefault()\n }\n})\n\n/*-\nMakes any element [behave like a hyperlink](/learn/faux-interactive-elements).\n\n## Example\n\nThe following `<span>` element will [navigate](/api/up-follow) to `/details` when clicked:\n\n```html\n<span up-href=\"/details\">Read more</span>\n```\n\n@selector [up-href]\n@param [up-href]\n The URL to load when activated.\n@params-note\n All modifying attributes for `[up-follow]` may also be used.\n@deprecated\n Following an element with only an `[up-href]` attribute is deprecated.\n Also set an `[up-follow]` attribute on the same element.\n*/\n\nconst LEGACY_UP_HREF_FOLLOW_SELECTOR = '[up-href]:not([up-follow], [up-poll], [up-defer], [up-expand])'\n\n// We set [up-follow] instead of adding our selector to up.link.config, so core and unpoly-migrate\n// agree which elements are followable.\n//\n// The priority runs this macro before [up-back] (-100). That macro sets an [up-href] that the app never wrote,\n// and only adds [up-follow] when the link isn't already followable, e.g. through [up-target].\n// We also run before [up-clickable] (-200), which needs to see the [up-follow] attribute.\nup.macro(LEGACY_UP_HREF_FOLLOW_SELECTOR, { priority: -50 }, function(element) {\n // A link like <a up-href up-target> is already followable through another attribute.\n if (up.link.isFollowable(element)) return\n\n up.migrate.warn('Following links with only [up-href] has been deprecated. You must now also set an [up-follow] on the same link (found in %o).', element)\n element.setAttribute('up-follow', '')\n})\n\n// We used to follow links with just an [up-instant] attribute.\n// Now that [up-instant] is also a way to make generic clickable elements \"act on press\"\n// we require users to set an [up-follow] attribute.\n// We don't need to match [up-href] elements, since the macro above gives them [up-follow].\nconst LEGACY_UP_INSTANT_FOLLOW_INTENT_SELECTOR = 'a[href][up-instant]'\n\nup.link.config.patch(function(config) {\n config.followSelectors.push(LEGACY_UP_INSTANT_FOLLOW_INTENT_SELECTOR)\n})\n\n// Only warn about links that the legacy selector alone makes followable.\nfunction isFollowableWithoutLegacyInstant(element) {\n let { followSelectors, noFollowSelectors } = up.link.config\n let modernFollowSelectors = followSelectors.filter((selector) => selector !== LEGACY_UP_INSTANT_FOLLOW_INTENT_SELECTOR)\n return element.matches(up.element.unionSelector(modernFollowSelectors, noFollowSelectors))\n}\n\nup.compiler(LEGACY_UP_INSTANT_FOLLOW_INTENT_SELECTOR, function(element) {\n if (up.link.isFollowable(element) && !isFollowableWithoutLegacyInstant(element)) {\n up.migrate.warn('Following links with only [up-instant] has been deprecated. You must now also set an [up-follow] on the same link (found in %o).', element)\n }\n})\n","/*-\n@module up.layer\n*/\n\n// Renamed keys and values that may be passed as layer options or set in a layer config object.\nfunction fixRenamedLayerKeys(object, source) {\n up.migrate.fixKey(object, 'closable', 'dismissible', source)\n up.migrate.fixKey(object, 'dismissable', 'dismissible', source)\n up.migrate.fixKey(object, 'closeLabel', 'dismissLabel', source)\n up.migrate.fixKey(object, 'dismissAriaLabel', 'dismissARIALabel', source)\n up.migrate.fixKey(object, 'historyVisible', 'history', source)\n splitPosition(object)\n}\n\n// Popups used to combine their position and alignment in a single value like 'bottom-right'.\n// We split it before the layer is built, so the layer and its element see the modern { position, align }.\nfunction splitPosition(object) {\n if (!up.util.isString(object.position)) return\n\n const [position, align] = object.position.split('-')\n\n if (align) {\n up.migrate.warn('The position value %o is deprecated. Use %o instead.', object.position, { position, align })\n object.position = position\n object.align = align\n }\n}\n\nup.migrate.handleLayerOptions = function(options) {\n // Only options can have a { flavor }, since a config object belongs to a mode.\n // We name the opening call site in warnings.\n const source = { label: 'layer options', detail: options.origin || options.url }\n up.migrate.fixKey(options, 'flavor', 'mode', source)\n fixRenamedLayerKeys(options, source)\n\n for (let dimensionKey of ['width', 'maxWidth', 'height']) {\n if (options[dimensionKey]) {\n up.migrate.warn(`Layer option { ${dimensionKey} } has been removed. Use { size } or { class } instead.`)\n }\n }\n\n if (options.sticky) {\n up.migrate.warn('Layer option { sticky } has been removed. Give links an [up-peel=false] attribute to prevent layer dismissal on click.')\n }\n\n if (options.template) {\n up.migrate.warn('Layer option { template } has been removed. Use { class } or modify the layer HTML on up:layer:open.')\n }\n\n if (options.layer === 'page') {\n up.migrate.warn(\"Option { layer: 'page' } has been renamed to { layer: 'root' }.\")\n options.layer = 'root'\n }\n\n if ((options.layer === 'modal') || (options.layer === 'popup')) {\n up.migrate.warn(`Option { layer: '${options.layer}' } has been removed. Did you mean { layer: 'overlay' }?`)\n options.layer = 'overlay'\n }\n\n if (up.util.isMissing(options.layer) && up.util.isGiven(options.mode)) {\n up.migrate.warn('Opening a layer with only a { mode } option is deprecated. Pass { layer: \"new\", mode } instead.')\n options.layer = 'new'\n }\n\n}\n\n/*-\nWhen this element is clicked, closes a currently open overlay.\n\nDoes nothing if no overlay is currently open.\n\nTo make a link that closes the current overlay, but follows to\na fallback destination on the root layer:\n\n <a href=\"/fallback\" up-close>Okay</a>\n\n@selector [up-close]\n@deprecated\n Use `[up-dismiss]` instead.\n*/\nup.migrate.registerLayerCloser = (layer) => // <a up-close>Close</a> (legacy close attribute)\nlayer.registerAttrCloser('up-close', (value, closeOptions) => {\n up.migrate.deprecated('[up-close]', '[up-dismiss]')\n layer.dismiss(value, closeOptions)\n})\n\n// Apps usually configure layers before Unpoly boots, so we check all mode configs once at boot.\nup.migrate.fixLayerConfigs = function() {\n for (let [mode, modeConfig] of Object.entries(up.layer.config)) {\n if (up.util.isOptions(modeConfig)) {\n fixRenamedLayerKeys(modeConfig, { label: `up.layer.config.${mode}` })\n }\n }\n}\n\nup.on('up:framework:boot', up.migrate.fixLayerConfigs)\n\n// The app may still set a renamed key after booting, so we also check the mode configs for every new layer.\n// Since the warning names the config object, it is only printed once per key and config object.\nup.migrate.handleLayerConfig = function(modeConfig) {\n let [mode] = Object.entries(up.layer.config).find(([_mode, value]) => value === modeConfig)\n fixRenamedLayerKeys(modeConfig, { label: `up.layer.config.${mode}` })\n}\n\nObject.defineProperty(up.Layer.prototype, 'historyVisible', { get: function() {\n up.migrate.deprecated('up.Layer#historyVisible', 'up.Layer#history')\n return this.history\n} })\n\n","/*-\n@module up.motion\n*/\n\n// up.motion.finish() already returns up.migrate.formerlyAsync() from core.\n\n/*-\nReturns whether Unpoly will perform animations and transitions.\n\nSet [`up.motion.config.enabled = false`](/api/up.motion.config#config.enabled) in order to disable animations globally.\n\n@function up.motion.isEnabled\n@return {boolean}\n Whether animation is enabled.\n@deprecated\n Use `up.motion.config.enabled` instead.\n*/\nup.motion.isEnabled = function() {\n up.migrate.deprecated('up.motion.isEnabled()', 'up.motion.config.enabled')\n return up.motion.config.enabled\n}\n","/*-\n@module up.layer\n*/\n\nconst 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.')\n\nup.modal = {\n\n /*-\n Opens a modal overlay for the given URL.\n\n @function up.modal.visit\n @param {string} url\n The URL to load.\n @param {Object} options\n See options for `up.render()`.\n @deprecated\n Use `up.layer.open({ url, mode: \"modal\" })` instead.\n */\n visit(url, options = {}) {\n up.migrate.deprecated('up.modal.visit(url)', 'up.layer.open({ url, mode: \"modal\" })')\n return up.layer.open({ ...options, url, mode: 'modal' })\n },\n\n /*-\n Opens the given link's destination in a modal overlay.\n\n @function up.modal.follow\n @param {Element|jQuery|string} linkOrSelector\n The link to follow.\n @param {string} [options]\n See options for `up.render()`.\n @return {Promise}\n A promise that will be fulfilled when the modal has been opened.\n @deprecated\n Use `up.follow(link, { layer: \"new modal\" })` instead.\n */\n follow(link, options = {}) {\n up.migrate.deprecated('up.modal.follow(link)', 'up.follow(link, { layer: \"new modal\" })')\n return up.follow(link, { ...options, layer: 'new', mode: 'modal' })\n },\n\n /*-\n [Extracts](/api/up.extract) the given CSS selector from the given HTML string and\n opens the results in a modal overlay.\n\n @function up.modal.extract\n @param {string} selector\n The CSS selector to extract from the HTML.\n @param {string} document\n The HTML containing the modal content.\n @param {Object} options\n See options for [`up.modal.follow()`](/api/up.modal.follow).\n @return {Promise}\n A promise that will be fulfilled when the modal has been opened.\n @deprecated\n Use `up.layer.open({ document, mode: \"modal\" })` instead.\n */\n extract(target, html, options = {}) {\n up.migrate.deprecated('up.modal.extract(target, document)', 'up.layer.open({ document, mode: \"modal\" })')\n return up.layer.open({ ...options, target, document: html, layer: 'new', mode: 'modal' })\n },\n\n /*-\n Closes a currently open overlay.\n\n @function up.modal.close\n @param {Object} options\n @return {Promise}\n @deprecated\n Use `up.layer.dismiss()` instead.\n */\n close(options = {}) {\n up.migrate.deprecated('up.modal.close()', 'up.layer.dismiss()')\n up.layer.dismiss(null, options)\n return up.migrate.formerlyAsync('up.layer.dismiss()')\n },\n\n /*-\n Returns the location URL of the fragment displayed in the current overlay.\n\n @function up.modal.url\n @return {string}\n @deprecated\n Use `up.layer.location` instead.\n */\n url() {\n up.migrate.deprecated('up.modal.url()', 'up.layer.location')\n return up.layer.location\n },\n\n /*-\n Returns the location URL of the layer behind the current overlay.\n\n @function up.modal.coveredUrl\n @return {string}\n @deprecated\n Use `up.layer.parent.location` instead.\n */\n coveredUrl() {\n up.migrate.deprecated('up.modal.coveredUrl()', 'up.layer.parent.location')\n return up.layer.parent?.location\n },\n\n /*-\n Sets default options for future modal overlays.\n\n @property up.modal.config\n @deprecated\n Use `up.layer.config.modal` instead.\n */\n get config() {\n up.migrate.deprecated('up.modal.config', 'up.layer.config.modal')\n return up.layer.config.modal\n },\n\n /*-\n Returns whether the given element or selector is contained\n within the current layer.\n\n @function up.modal.contains\n @param {string} elementOrSelector\n The element to test\n @return {boolean}\n @deprecated\n Use `up.layer.contains()` instead.\n */\n contains(element) {\n up.migrate.deprecated('up.modal.contains()', 'up.layer.contains()')\n return up.layer.contains(element)\n },\n\n /*-\n Returns whether an overlay is currently open.\n\n @function up.modal.isOpen\n @return {boolean}\n @deprecated\n Use `up.layer.isOverlay()` instead.\n */\n isOpen() {\n up.migrate.deprecated('up.modal.isOpen()', 'up.layer.isOverlay()')\n return up.layer.isOverlay()\n },\n\n get flavors() {\n throw FLAVORS_ERROR\n },\n\n flavor() {\n throw FLAVORS_ERROR\n }\n}\n\n// Don't warn when a script enumerates up.modal. Getters in an object literal are enumerable.\nObject.defineProperty(up.modal, 'config', { enumerable: false })\n\nup.migrate.renamedEvent('up:modal:open', 'up:layer:open')\nup.migrate.renamedEvent('up:modal:opened', 'up:layer:opened')\nup.migrate.renamedEvent('up:modal:close', 'up:layer:dismiss')\nup.migrate.renamedEvent('up:modal:closed', 'up:layer:dismissed')\n\n/*-\nClicking this link will load the destination and open\nthe given selector in a modal overlay.\n\n@selector [up-modal]\n@params-note\n All modifying attributes for `[up-layer=new]` may also be used.\n@param {string} up-modal\n The CSS selector that will be extracted from the response and displayed in a modal overlay.\n@deprecated\n Use `[up-layer=\"new modal\"]` instead.\n*/\nup.migrate.targetMacro('up-modal', { 'up-layer': 'new modal' }, '[up-layer=\"new modal\"]')\n\n/*-\nClicking this link will load the destination and open\nthe given selector in a drawer overlay that slides in from the edge of the screen.\n\n@selector [up-drawer]\n@params-note\n All modifying attributes for `[up-layer=new]` may also be used.\n@param {string} up-drawer\n The CSS selector that will be extracted from the response and displayed in a drawer overlay.\n@deprecated\n Use `[up-layer=\"new drawer\"]` instead.\n*/\nup.migrate.targetMacro('up-drawer', { 'up-layer': 'new drawer' }, '[up-layer=\"new drawer\"]')\n","/*-\n@module up.layer\n*/\n\nup.popup = {\n /*-\n Attaches a popup overlay to the given element or selector.\n\n @function up.popup.attach\n @param {Element|jQuery|string} anchor\n The element to which the popup will be attached.\n @param {Object} [options]\n See options for `up.render()`.\n @return {Promise}\n @deprecated\n Use `up.layer.open({ origin, mode: 'popup' })` instead.\n */\n attach(origin, options = {}) {\n origin = up.fragment.get(origin)\n up.migrate.deprecated('up.popup.attach(origin)', \"up.layer.open({ origin, mode: 'popup' })\")\n return up.layer.open({ ...options, origin, layer: 'new', mode: 'popup' })\n },\n\n /*-\n Closes a currently open overlay.\n\n @function up.popup.close\n @param {Object} options\n @return {Promise}\n @deprecated\n Use `up.layer.dismiss()` instead.\n */\n close(options = {}) {\n up.migrate.deprecated('up.popup.close()', 'up.layer.dismiss()')\n up.layer.dismiss(null, options)\n return up.migrate.formerlyAsync('up.layer.dismiss()')\n },\n\n /*-\n Returns the location URL of the fragment displayed in the current overlay.\n\n @function up.popup.url\n @return {string}\n @deprecated\n Use `up.layer.location` instead.\n */\n url() {\n up.migrate.deprecated('up.popup.url()', 'up.layer.location')\n return up.layer.location\n },\n\n /*-\n Returns the location URL of the layer behind the current overlay.\n\n @function up.popup.coveredUrl\n @return {string}\n @deprecated\n Use `up.layer.parent.location` instead.\n */\n coveredUrl() {\n up.migrate.deprecated('up.popup.coveredUrl()', 'up.layer.parent.location')\n return up.layer.parent?.location\n },\n\n /*-\n Sets default options for future popup overlays.\n\n @property up.popup.config\n @deprecated\n Use `up.layer.config.popup` instead.\n */\n get config() {\n up.migrate.deprecated('up.popup.config', 'up.layer.config.popup')\n return up.layer.config.popup\n },\n\n /*-\n Returns whether the given element or selector is contained\n within the current layer.\n\n @function up.popup.contains\n @param {string} elementOrSelector\n The element to test\n @return {boolean}\n @deprecated\n Use `up.layer.contains()` instead.\n */\n contains(element) {\n up.migrate.deprecated('up.popup.contains()', 'up.layer.contains()')\n return up.layer.contains(element)\n },\n\n /*-\n Returns whether an overlay is currently open.\n\n @function up.popup.isOpen\n @return {boolean}\n @deprecated\n Use `up.layer.isOverlay()` instead.\n */\n isOpen() {\n up.migrate.deprecated('up.popup.isOpen()', 'up.layer.isOverlay()')\n return up.layer.isOverlay()\n },\n\n sync() {\n up.migrate.deprecated('up.popup.sync()', 'up.layer.sync()')\n return up.layer.sync()\n }\n}\n\n// Don't warn when a script enumerates up.popup. Getters in an object literal are enumerable.\nObject.defineProperty(up.popup, 'config', { enumerable: false })\n\nup.migrate.renamedEvent('up:popup:open', 'up:layer:open')\nup.migrate.renamedEvent('up:popup:opened', 'up:layer:opened')\nup.migrate.renamedEvent('up:popup:close', 'up:layer:dismiss')\nup.migrate.renamedEvent('up:popup:closed', 'up:layer:dismissed')\n\n/*-\nClicking this link will load the destination and open\nthe given selector in a popup overlay.\n\n@selector [up-popup]\n@params-note\n All modifying attributes for `[up-layer=new]` may also be used.\n@param {string} up-popup\n The CSS selector that will be extracted from the response and displayed in a popup overlay.\n@deprecated\n Use `[up-layer=\"new popup\"]` instead.\n*/\nup.migrate.targetMacro('up-popup', { 'up-layer': 'new popup' }, '[up-layer=\"new popup\"]')\n","/*-\nUnpoly used to come with a basic tooltip implementation.\nThis feature is now deprecated.\n\n@module up.tooltip\n@internal\n*/\nup.macro('[up-tooltip]', function(opener) {\n up.migrate.warn('Attribute [up-tooltip] has been deprecated. Use a [title] attribute instead (found in %o).', opener)\n up.element.setMissingAttr(opener, 'title', opener.getAttribute('up-tooltip'))\n})\n","/*-\n@module up.protocol\n*/\n\nup.migrate.clearCacheFromXHR = function(xhr) {\n let value = xhr.getResponseHeader('X-Up-Clear-Cache')\n\n if (value) {\n up.migrate.deprecated('X-Up-Clear-Cache', 'X-Up-Expire-Cache')\n\n if (value === 'false') {\n return false\n } else {\n return value\n }\n }\n}\n\n/*-\nThe server may send this optional response header to control which previously cached responses should be [expired](/learn/caching#expiration) after this response.\n\nThe value of this header is a [URL pattern](/api/url-patterns) matching responses that should be expired.\n\nFor example, to expire all responses to URLs starting with `/notes/`:\n\n```http\nX-Up-Clear-Cache: /notes/*\n```\n\n@header X-Up-Clear-Cache\n@deprecated\n Use `X-Up-Expire-Cache` instead.\n*/\n\n// X-Up-Title used to carry a window title as a bare string.\n// We now require it to be a JSON-encoded string so we can escape high-ASCII characters:\n// https://makandracards.com/makandra/536174-http-headers-can-only-transport-us-ascii-characters-safely\nup.migrate.titleFromXHR = function(xhr) {\n let value = xhr.getResponseHeader('X-Up-Title')\n\n if (value) {\n if (value === 'false') {\n return false\n } else if (value[0] !== '\"' && value[0] !== \"'\") {\n up.migrate.warn('X-Up-Title must now be a JSON-encoded string (got %o)', value)\n return value\n }\n }\n}\n\n/*-\nThis request header contains a timestamp of an existing fragment that is being [reloaded](/api/up.reload).\n\nThe timestamp must be explicitly set by the user as an `[up-time]` attribute on the fragment.\nIt should indicate the time when the fragment's underlying data was last changed.\n\nSee `[up-time]` for a detailed example.\n\n### Format\n\nThe time is encoded as the number of seconds elapsed since the [Unix epoch](https://en.wikipedia.org/wiki/Unix_time).\n\nFor instance, a modification date of December 23rd 2020, 1:40:18 PM UTC would produce the following header:\n\n```http\nX-Up-Target: .unread-count\nX-Up-Reload-From-Time: 1608730818\n```\n\nIf no timestamp is known, Unpoly will send a value of zero (`X-Up-Reload-From-Time: 0`).\n\n@header X-Up-Reload-From-Time\n@deprecated\n Read the standard [`If-Modified-Since`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since) request header instead.\n Unpoly sends it when the fragment has a `Last-Modified` time. See [conditional requests](/learn/conditional-requests).\n*/\n\nup.protocol.config.patch(function() {\n const cspNonceMoved = () => up.migrate.deprecated('up.protocol.config.cspNonce', 'up.script.config.cspNonce')\n\n Object.defineProperty(this, 'cspNonce', {\n configurable: true,\n get() {\n cspNonceMoved()\n return up.script.config.cspNonce\n },\n set(value) {\n cspNonceMoved()\n up.script.config.cspNonce = value\n }\n })\n})\n","const u = up.util\n\n/*-\n@module up.network\n*/\n\nup.migrate.renamedPackage('proxy', 'network')\nup.migrate.renamedEvent('up:proxy:load', 'up:request:load') // renamed in 1.0.0\nup.migrate.renamedEvent('up:proxy:received', 'up:request:loaded') // renamed in 0.50.0\nup.migrate.renamedEvent('up:proxy:loaded', 'up:request:loaded') // renamed in 1.0.0\nup.migrate.renamedEvent('up:proxy:fatal', 'up:request:offline') // renamed in 1.0.0\nup.migrate.renamedEvent('up:request:fatal', 'up:request:offline') // renamed in 3.0.0\nup.migrate.renamedEvent('up:proxy:aborted', 'up:request:aborted') // renamed in 1.0.0\nup.migrate.renamedEvent('up:proxy:slow', 'up:network:late') // renamed in 1.0.0\nup.migrate.renamedEvent('up:proxy:recover', 'up:network:recover') // renamed in 1.0.0\nup.migrate.renamedEvent('up:request:late', 'up:network:late') // renamed in 3.0.0\nup.migrate.renamedEvent('up:request:recover', 'up:network:recover') // renamed in 3.0.0\n\n// The `config.preloadDelay` configuration was defined on up.proxy in V1. It was moved to up.link in V2.\nup.network.config.patch(function(config) {\n const preloadDelayMoved = () => up.migrate.deprecated('up.proxy.config.preloadDelay', 'up.link.config.preloadDelay')\n Object.defineProperty(config, 'preloadDelay', {\n configurable: true,\n get() {\n preloadDelayMoved()\n return up.link.config.preloadDelay\n },\n set(value) {\n preloadDelayMoved()\n up.link.config.preloadDelay = value\n }\n })\n})\n\nup.network.config.patch(function(config) {\n up.migrate.renamedProperty(config, 'maxRequests', 'concurrency', { label: 'up.network.config' })\n up.migrate.renamedProperty(config, 'slowDelay', 'lateDelay', { label: 'up.network.config' })\n up.migrate.renamedProperty(config, 'cacheExpiry', 'cacheExpireAge', { warning: 'The configuration up.network.config.cacheExpiry has been renamed to up.network.config.cacheExpireAge. Note that Unpoly 3+ automatically reloads cached content after rendering to ensure users always see fresh data (\"cache revalidation\"). Setting a custom expiry may no longer be necessary.' })\n up.migrate.renamedProperty(config, 'clearCache', 'expireCache', { label: 'up.network.config' })\n\n let cacheSize = config.cacheSize\n Object.defineProperty(config, 'cacheSize', {\n configurable: true,\n get() {\n return cacheSize\n },\n set(newValue) {\n if (newValue === 0) {\n up.migrate.deprecated('up.network.config.cacheSize = 0', 'up.network.config.cacheEnabled = false')\n config.cacheEnabled = false\n }\n cacheSize = newValue\n }\n })\n\n // Provide a default for the removed property, in case someone pushes into that.\n up.migrate.removedProperty(config, 'requestMetaKeys', { value: [], warning: 'The configuration up.network.config.requestMetaKeys has been removed. Servers that optimize responses based on request headers should instead set a Vary response header.' })\n})\n\nup.migrate.handleRequestOptions = function(options) {\n up.migrate.fixKey(options, 'clearCache', 'expireCache', { label: 'request options', detail: options.url })\n\n if (options.solo) {\n up.migrate.warn('The option up.request({ solo }) has been removed. Use up.network.abort() or up.fragment.abort() instead.')\n }\n}\n\nup.on('up:request:loaded', function(event) {\n if (event.response.header('X-Up-Expire-Cache') === 'false') {\n up.migrate.warn('The server can no longer prevent cache expiration with an `X-Up-Expire-Cache: false` response header. The header has no effect and can be removed.')\n }\n\n if (event.response.header('X-Up-Evict-Cache') === 'false') {\n up.migrate.warn('The server can no longer prevent cache eviction with an `X-Up-Evict-Cache: false` response header. The header has no effect and can be removed.')\n }\n})\n\n/*-\nMakes a request to the given URL and caches the response.\n\nThe function returns a promise that fulfills with the response text.\n\n### Example\n\n```\nup.ajax('/search', { params: { query: 'sunshine' } }).then(function(text) {\n console.log('The response text is %o', text)\n}).catch(function() {\n console.error('The request failed')\n})\n```\n\n@function up.ajax\n@param {string} [url]\n The requested URL.\n\n Instead of passing the URL as a string argument, you can also pass it as an `{ url }` option.\n@param {Object} [options]\n See options for `up.request()`.\n@return {Promise<string>}\n A promise for the response text.\n@deprecated\n Use `up.request()` instead.\n*/\nup.ajax = function(...args) {\n up.migrate.deprecated('up.ajax()', 'up.request()')\n const pickResponseText = (response) => response.text\n return up.request(...args).then(pickResponseText)\n}\n\n/*-\nExpires all cache entries.\n\n@function up.proxy.clear\n@deprecated\n Use `up.cache.expire()` instead.\n*/\nup.network.clear = function() {\n up.migrate.deprecated('up.proxy.clear()', 'up.cache.expire()')\n up.cache.expire()\n}\n\n/*-\nExpires cache entries.\n\n@function up.cache.clear\n@deprecated\n Use `up.cache.expire()` instead.\n*/\nup.Request.Cache.prototype.clear = function(...args) {\n // up.cache is an up.Request.Cache instance\n up.migrate.deprecated('up.cache.clear()', 'up.cache.expire()')\n this.expire(...args)\n}\n\n/*-\nPreloads the given link.\n\n@function up.proxy.preload\n@param {Element} link\n@deprecated\n Use `up.link.preload()` instead.\n*/\nup.network.preload = function(...args) {\n up.migrate.deprecated('up.proxy.preload(link)', 'up.link.preload(link)')\n return up.link.preload(...args)\n}\n\nup.migrate.preprocessAbortArgs = function(args) {\n if (args.length === 2 && u.isString(args[1])) {\n up.migrate.warn('up.network.abort() no longer takes a reason as a second argument. Pass it as { reason } option instead.')\n args[1] = { reason: args[1] }\n }\n}\n\n/*-\nReturns whether Unpoly is *not* currently loading a [request](/api/up.request).\n\nThe network is also considered [busy](/api/up.network.isBusy) while requests are [loading in the background](/api/up.request#options.background).\n\nSee also `up.network.isBusy()`.\n\n@function up.network.isIdle\n@return {boolean}\n@deprecated\n Use `!up.network.isBusy()` instead.\n*/\nup.network.isIdle = function() {\n up.migrate.deprecated('up.network.isIdle()', '!up.network.isBusy()')\n return !up.network.isBusy()\n}\n\n/*-\n@class up.Request\n*/\n\n/*-\nLoads this request object as a full-page request, replacing the entire browser environment\nwith a new page from the server response.\n\nThe full-page request will be loaded with the [URL](/api/up.Request.prototype.url),\n[method](/api/up.Request.prototype.method) and [params](/api/up.Request.prototype.params)\nfrom this request object.\nProperties that are not possible in a full-page request (such as custom HTTP headers)\nwill be ignored.\n\nAborts all pending requests.\n\n@function up.Request#navigate\n@deprecated\n Use `up.Request#loadPage()` instead.\n*/\nup.Request.prototype.navigate = function() {\n up.migrate.deprecated('up.Request#navigate()', 'up.Request#loadPage()')\n this.loadPage()\n}\n\n/*-\nWhether this request is [preloading](/learn/preloading) content.\n\n@property up.Request#preload\n@param {boolean} [preload=false]\n@deprecated\n Use `up.Request#background` instead.\n*/\nup.migrate.renamedProperty(up.Request.prototype, 'preload', 'background', { warning: 'Property up.Request#preload has been renamed to up.Request#background' })\n\n/*-\nThe number of milliseconds after which this request can cause\nan `up:network:late` event and show the [progress bar](/learn/progress-bar).\n\nDefaults to `up.network.config.lateDelay`.\n\n@property up.Request#badResponseTime\n@param {number} [badResponseTime]\n@deprecated\n Use `up.Request#lateDelay` instead.\n*/\nup.migrate.renamedProperty(up.Request.prototype, 'badResponseTime', 'lateDelay', { warning: 'Property up.Request#badResponseTime has been renamed to up.Request#lateDelay' })\n\n/*-\n@class up.Response\n*/\n\n/*-\nReturns whether the server responded with a 2xx HTTP status.\n\n@function up.Response#isSuccess\n@return {boolean}\n@deprecated\n Use `up.Response#ok` instead.\n*/\nup.Response.prototype.isSuccess = function() {\n up.migrate.deprecated('up.Response#isSuccess()', 'up.Response#ok')\n return this.ok\n}\n\n/*-\nReturns the HTTP header value with the given name.\n\nThe search for the header name is case-insensitive.\n\nReturns `undefined` if the given header name was not included in the response.\n\n@function up.Response#getHeader\n@param {string} name\n@return {string|undefined}\n The value of the header.\n@deprecated\n Use `up.Response#header` instead.\n*/\nup.Response.prototype.getHeader = function(name) {\n up.migrate.deprecated('up.Response#getHeader()', 'up.Response#header()')\n return this.header(name)\n}\n\n/*-\nReturns whether the response was not [successful](/api/up.Response.prototype.ok).\n\n@function up.Response#isError\n@return {boolean}\n@deprecated\n Use `!up.Response#ok` instead.\n*/\nup.Response.prototype.isError = function() {\n up.migrate.deprecated('up.Response#isError()', '!up.Response#ok')\n return !this.ok\n}\n\nfunction mayHaveCustomIndicator() {\n const listeners = up.EventListener.allNonDefault(document)\n return u.find(listeners, (listener) => listener.eventType === 'up:network:late')\n}\n\nconst progressBarDefault = up.network.config.progressBar\nup.network.config.patch(function(config) {\n config.progressBar = function() {\n if (mayHaveCustomIndicator()) {\n up.migrate.warn('Disabled the default progress bar as you may have built a custom loading indicator with your up:network:late listener. Please set up.network.config.progressBar to true or false.')\n return false\n } else {\n return progressBarDefault\n }\n }\n})\n\nup.network.shouldReduceRequests = function() {\n up.migrate.warn('up.network.shouldReduceRequests() has been removed without replacement')\n return false\n}\n\nup.network.config.patch(function(config) {\n up.migrate.removedProperty(config, 'badRTT', { label: 'up.network.config' })\n up.migrate.removedProperty(config, 'badDownlink', { label: 'up.network.config' })\n up.migrate.renamedProperty(config, 'badResponseTime', 'lateDelay', { label: 'up.network.config' })\n})\n","const e = up.element\n\n/*-\n@module up.radio\n*/\n\nup.radio.config.patch(function(config) {\n up.migrate.renamedProperty(config, 'hungry', 'hungrySelectors', { label: 'up.radio.config' })\n})\n\nlet pollEnabledRef\n\nup.radio.config.patch(function(config) {\n pollEnabledRef = up.migrate.removedProperty(config, 'pollEnabled', { value: true, warning: 'The configuration up.radio.config.pollEnabled has been removed. To disable polling, prevent up:fragment:poll instead.' })\n})\n\nup.on('up:fragment:poll', function(event) {\n if (!pollEnabledRef[0]) {\n event.preventDefault()\n }\n})\n\nup.compiler('[up-hungry][up-if-history]', function(element) {\n let ifHistory = e.booleanAttr(element, 'up-if-history')\n if (!ifHistory) return\n\n up.migrate.warn('Attribute [up-if-history] has been deprecated. Use [up-on-hungry=\"if (!renderOptions.history) event.preventDefault()\"] instead (found in %o).', element)\n\n element.addEventListener('up:fragment:hungry', function(event) {\n if (!event.renderOptions.history) {\n event.preventDefault()\n }\n })\n})\n","/*-\n@module up.viewport\n*/\n\nup.migrate.renamedPackage('layout', 'viewport')\n\nup.viewport.config.patch(function(config) {\n up.migrate.renamedProperty(config, 'viewports', 'viewportSelectors', { label: 'up.viewport.config' })\n up.migrate.renamedProperty(config, 'fixedTop', 'fixedTopSelectors', { label: 'up.viewport.config' })\n up.migrate.renamedProperty(config, 'fixedBottom', 'fixedBottomSelectors', { label: 'up.viewport.config' })\n up.migrate.renamedProperty(config, 'anchoredRight', 'anchoredRightSelectors', { label: 'up.viewport.config' })\n up.migrate.renamedProperty(config, 'snap', 'revealSnap', { label: 'up.viewport.config' })\n up.migrate.removedProperty(config, 'scrollSpeed', { label: 'up.viewport.config' })\n})\n\n/*-\nReturns the scrolling container for the given element.\n\nReturns the [document's scrolling element](/api/up.viewport.root)\nif no closer viewport exists.\n\n@function up.viewport.closest\n@param {string|Element|jQuery} target\n@return {Element}\n@deprecated\n Use `up.viewport.get()` instead.\n*/\nup.viewport.closest = function(...args) {\n up.migrate.deprecated('up.viewport.closest()', 'up.viewport.get()')\n return up.viewport.get(...args)\n}\n\n/*-\nScrolls the given viewport to the given Y-position.\n\nA \"viewport\" is an element that has scrollbars, e.g. `<body>` or\na container with `overflow-y: scroll`.\n\n### Example\n\nThis will scroll a `<div class=\"main\">...</div>` to a Y-position of 100 pixels:\n\n```js\nup.scroll('.main', 100)\n```\n\n### Animating the scrolling motion\n\nThe scrolling can (optionally) be animated.\n\n```js\nup.scroll('.main', 100, { behavior: 'smooth' })\n```\n\n@function up.scroll\n@param {string|Element|jQuery} viewport\n The container element to scroll.\n@param {number} scrollPos\n The absolute number of pixels to set the vertical scroll position to.\n@param {string}[options.behavior='instant']\n When set to `'instant'`, this will immediately scroll to the new position.\n\n When set to `'smooth'`, this will scroll smoothly to the new position.\n@deprecated\n Use [`Element#scrollTo()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTo) instead.\n*/\nup.viewport.scroll = function(viewport, top, options = {}) {\n up.migrate.deprecated('up.scroll()', 'Element#scrollTo()')\n\n viewport = up.fragment.get(viewport, options)\n viewport.scrollTo({ ...options, top })\n return up.migrate.formerlyAsync('up.scroll()')\n}\n\nup.scroll = up.viewport.scroll\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// We are going to add compilers and event handlers that should not be reset during specs.\nup.framework.startExtension()\nrequire('./unpoly-migrate/migrate')\nrequire('./unpoly-migrate/classes/config')\nrequire('./unpoly-migrate/classes/render_job')\nrequire('./unpoly-migrate/classes/render_result')\nrequire('./unpoly-migrate/classes/layer/base')\nrequire('./unpoly-migrate/util')\nrequire('./unpoly-migrate/error')\nrequire('./unpoly-migrate/browser')\nrequire('./unpoly-migrate/element')\nrequire('./unpoly-migrate/event')\nrequire('./unpoly-migrate/script')\nrequire('./unpoly-migrate/form')\nrequire('./unpoly-migrate/fragment')\nrequire('./unpoly-migrate/framework')\nrequire('./unpoly-migrate/history')\nrequire('./unpoly-migrate/status')\nrequire('./unpoly-migrate/link')\nrequire('./unpoly-migrate/layer')\nrequire('./unpoly-migrate/motion')\nrequire('./unpoly-migrate/modal')\nrequire('./unpoly-migrate/popup')\nrequire('./unpoly-migrate/tooltip')\nrequire('./unpoly-migrate/protocol')\nrequire('./unpoly-migrate/network')\nrequire('./unpoly-migrate/radio')\nrequire('./unpoly-migrate/viewport')\nup.framework.stopExtension()\n"],"names":[],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (()=>{var e={33(){up.browser.loadPage=function(...e){return up.migrate.deprecated("up.browser.loadPage()","up.network.loadPage()"),up.network.loadPage(...e)},up.browser.isSupported=function(...e){return up.migrate.deprecated("up.browser.isSupported()","up.framework.isSupported()"),up.framework.isSupported(...e)}},750(){up.Config.prototype.patch=function(e){let u=e.bind(this,this);u(),document.addEventListener("up:framework:reset",u)}},959(){up.Layer.prototype.isOpen=function(){return up.migrate.deprecated("up.Layer#isOpen()","up.Layer#isAlive()"),this.isAlive()},up.Layer.prototype.isClosed=function(){return up.migrate.deprecated("up.Layer#isClosed()","!up.Layer#isAlive()"),!this.isAlive()}},204(){up.migrate.renamedProperty(up.RenderJob.prototype,"options","renderOptions","up.RenderJob: Property { options } has been renamed to { renderOptions }")},838(){up.migrate.renamedProperty(up.RenderResult.prototype,"options","renderOptions","up.RenderResult: Property { options } has been renamed to { renderOptions }")},989(){up.element.first=function(...e){return up.migrate.deprecated("up.element.first()","up.element.get()"),up.element.get(...e)},up.element.createFromHtml=function(...e){return up.migrate.deprecated("up.element.createFromHtml()","up.element.createFromHTML()"),up.element.createFromHTML(...e)},up.element.remove=function(e){return up.migrate.deprecated("up.element.remove()","Element#remove()"),e.remove()},up.element.matches=function(e,u){return up.migrate.deprecated("up.element.matches()","Element#matches()"),e.matches(u)},up.element.closest=function(e,u){return up.migrate.deprecated("up.element.closest()","Element#closest()"),e.closest(u)},up.element.replace=function(e,u){return up.migrate.deprecated("up.element.replace()","Element#replaceWith()"),e.replaceWith(u)},up.element.all=function(...e){up.migrate.deprecated("up.element.all()","Document#querySelectorAll() or Element#querySelectorAll()");const u=e.pop();return(e[0]||document).querySelectorAll(u)},up.element.toggleClass=function(e,u,t){up.migrate.deprecated("up.element.toggleClass()","element.classList.toggle()");const p=e.classList;return null==t&&(t=!p.contains(u)),t?p.add(u):p.remove(u)},up.element.toSelector=function(...e){return up.migrate.deprecated("up.element.toSelector()","up.fragment.toTarget()"),up.fragment.toTarget(...e)},up.element.isAttached=function(e){return up.migrate.deprecated("up.element.isAttached()","document.contains(element)"),document.contains(e)},up.element.isDetached=function(e){return up.migrate.deprecated("up.element.isDetached()","!document.contains(element)"),!up.element.isAttached(e)}},635(){class DeprecatedCannotCompile extends up.Error{}Object.defineProperty(up,"CannotCompile",{get:function(){return up.migrate.warn('The error up.CannotCompile is no longer thrown. Compiler errors now emit an "error" event on window, but no longer crash the render pass.'),DeprecatedCannotCompile}})},993(){up.migrate.renamedPackage("bus","event"),up.event.nobodyPrevents=function(...e){return up.migrate.deprecated("up.event.nobodyPrevents(type)","!up.emit(type).defaultPrevented"),!up.emit(...e).defaultPrevented},up.$on=function(...e){up.migrate.warn("up.$on() has been deprecated. Instead use up.on() with a callback that wraps the given native element in a jQuery collection.");let u=e.pop();return u.upNativeCallback=function(e,t,p){let o=jQuery(t);u.call(o,e,o,p)},up.on(...e,u.upNativeCallback)},up.$off=function(...e){up.migrate.deprecated("up.$off()","up.off()");let u=e.pop().upNativeCallback;return u||up.fail("The callback passed to up.$off() was never registered with up.$on()"),up.off(...e,u)}},267(){up.form.config.patch(function(e){up.migrate.renamedProperty(e,"fields","fieldSelectors"),up.migrate.renamedProperty(e,"submitButtons","submitButtonSelectors"),up.migrate.renamedProperty(e,"validateTargets","groupSelectors"),up.migrate.renamedProperty(e,"observeDelay","watchInputDelay")}),up.migrate.migratedFormGroupSelectors=function(){return up.form.config.groupSelectors.map(e=>{let u=e.replace(/:has\((:origin|&)\)$/,"");return e!==u&&up.migrate.warn('Selectors in up.form.config.groupSelectors must not contain ":has(:origin)". The suffix is added automatically where required. Found in "%s".',e),u})},up.migrate.watchForSwitch=function(e,u){if(e.matches("input[type=radio]"))return up.migrate.warn("Using [up-switch] on an individual radio button is deprecated (%o). Use [up-switch] on the container of a radio group instead.",e),up.on(e,"change",u)},up.migrate.renamedAttribute("up-observe","up-watch"),up.migrate.renamedAttribute("up-fieldset","up-form-group"),up.migrate.renamedAttribute("up-delay","up-watch-delay",{scope:"[up-autosubmit]"}),up.migrate.renamedAttribute("up-delay","up-watch-delay",{scope:"[up-watch]"}),up.observe=function(...e){if(up.migrate.deprecated("up.observe()","up.watch()"),up.util.isList(e[0])&&e[0].length>1){let u=e.shift();up.migrate.warn("Calling up.observe() with a list of multiple elements is no longer supported by up.watch()");let t=up.util.map(u,u=>up.watch(u,...e));return up.util.sequence(t)}return up.watch(...e)}},997(){const e=up.util;up.migrate.renamedPackage("flow","fragment"),up.migrate.renamedPackage("dom","fragment"),up.fragment.config.patch(function(e){up.migrate.renamedProperty(e,"fallbacks","mainTargets")}),up.migrate.handleResponseDocOptions=e=>up.migrate.fixKey(e,"html","document"),up.fragment.config.patch(function(e){let u=()=>up.migrate.deprecated("up.fragment.config.matchAroundOrigin","up.fragment.config.match");Object.defineProperty(e,"matchAroundOrigin",{configurable:!0,get:function(){return u(),"closest"===this.match},set:function(e){u(),this.match=e?"region":"first"}})}),up.replace=function(e,u,t){return up.migrate.deprecated("up.replace(target, url)","up.navigate(target, { url })"),up.navigate(Object.assign(Object.assign({},t),{target:e,url:u}))},up.extract=function(e,u,t){return up.migrate.deprecated("up.extract(target, document)","up.navigate(target, { document })"),up.navigate(Object.assign(Object.assign({},t),{target:e,document:u}))},up.fragment.first=function(...e){return up.migrate.deprecated("up.fragment.first()","up.fragment.get()"),up.fragment.get(...e)},up.first=up.fragment.first,up.migrate.preprocessRenderOptions=function(u){e.isString(u.history)&&"auto"!==u.history&&(up.migrate.warn("Passing a URL as { history } option is deprecated. Pass it as { location } instead."),u.location=u.history,u.history="auto");for(let t of["target","origin"])e.isJQuery(u[t])&&(up.migrate.warn("Passing a jQuery collection as { %s } is deprecated. Pass it as a native element instead.",t),u[t]=up.element.get(u[t]));"auto"===u.fail&&(up.migrate.warn("The option { fail: 'auto' } is deprecated. Omit the option instead."),delete u.fail);let t=e.pluckKey(u,"solo");e.isString(t)?(up.migrate.warn("The up.render() option { solo } has been replaced with { abort } and { abort } no longer accepts a URL pattern. Check if you can use { abort: 'target'} or use up.network.abort(pattern) instead."),u.abort=e=>up.network.abort(t,e)):e.isFunction(t)?(up.migrate.warn("The up.render() option { solo } has been replaced with { 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."),u.abort=e=>{up.network.abort(t,e)}):!0===t?(up.migrate.deprecated("Option { solo: true }","{ abort: 'all' }"),u.abort="all"):!1===t&&(up.migrate.deprecated("Option { solo: false }","{ abort: false }"),up.migrate.warn("Unpoly 3+ only aborts requests targeting the same fragment. Setting { solo: false } may no longer be necessary."),u.abort=!1),up.migrate.fixKey(u,"failOnFinished","onFailFinished"),up.migrate.fixKey(u,"badResponseTime","lateDelay"),e.isString(u.reveal)?(up.migrate.deprecated(`Option { reveal: '${u.reveal}' }`,`{ scroll: '${u.reveal}' }`),u.scroll=u.reveal):!0===u.reveal?(up.migrate.deprecated("Option { reveal: true }","{ scroll: 'target' }"),u.scroll="target"):!1===u.reveal&&(up.migrate.deprecated("Option { reveal: false }","{ scroll: false }"),u.scroll=!1),!0===u.resetScroll&&(up.migrate.deprecated("Option { resetScroll: true }","{ scroll: 'top' }"),u.scroll="reset"),!1===u.resetScroll&&(up.migrate.deprecated("Option { resetScroll: false }","{ scroll: false }"),u.scroll=!1),!0===u.restoreScroll&&(up.migrate.deprecated("Option { restoreScroll: true }","{ scroll: 'restore' }"),u.scroll="restore"),!1===u.restoreScroll&&(up.migrate.deprecated("Option { restoreScroll: false }","{ scroll: false }"),u.scroll=!1),"reset"===u.scroll&&(up.migrate.deprecated("Option { scroll: 'reset'' }","{ scroll: 'top' }"),u.scroll="top")},up.migrate.postprocessReloadOptions=function(e){var u;let t,p=null===(u=e.headers)||void 0===u?void 0:u["If-Modified-Since"];t=p?Math.floor(.001*new Date(p)).toString():"0",e.headers[up.protocol.headerize("reloadFromTime")]=t},up.migrate.resolveOrigin=function(e,{origin:u}={}){return e.replace(/"[^"]*"|'[^']*'|&|:origin\b/g,function(t){return":origin"!==t&&"&"!==t?t:("&"===t&&up.migrate.deprecated("Origin shorthand '&'",":origin"),u?up.fragment.toTarget(u):void up.fail('Missing { origin } element to resolve "%s" reference (found in %s)',t,e))})},up.fragment.config.patch(function(){Object.defineProperty(this,"runScripts",{configurable:!0,get(){switch(up.migrate.deprecated("up.fragment.config.runScripts",'up.script.config.scriptElementPolicy = "auto"'),up.script.config.scriptElementPolicy){case"auto":case"pass":return!0;case"block":return!1;case"nonce":return e=>!!e.nonce}},set(u){!0===u?(up.migrate.deprecated("up.fragment.config.runScripts = true",'up.script.config.scriptElementPolicy = "auto"'),up.script.config.scriptElementPolicy="auto"):!1===u?(up.migrate.deprecated("up.fragment.config.runScripts = false",'up.script.config.scriptElementPolicy = "block"'),up.script.config.scriptElementPolicy="block"):e.isFunction(u)&&(up.migrate.warn("up.fragment.config.runScripts has been replaced by up.script.config.scriptElementPolicy, but no longer supports a function value."),up.script.config.scriptElementPolicy="block")}})}),up.compiler("[up-keep]",function(u){let t=up.element.booleanOrStringAttr(u,"up-keep");e.isString(t)&&/[.[#]/.test(t)&&(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()"]. '),u.addEventListener("up:fragment:keep",function(e){e.target!==u||e.newFragment.matches(t)||e.preventDefault()}),u.setAttribute("up-keep",""))})},753(){up.migrate.renamedEvent("up:app:booted","up:framework:booted"),document.querySelector("script[up-boot=manual]")&&up.migrate.warn('The [up-boot="manual"] attribute must be set on the <html> element')},789(){up.history.config.patch(function(e){up.migrate.renamedProperty(e,"popTargets","restoreTargets")}),up.history.url=function(){return up.migrate.deprecated("up.history.url()","up.history.location"),up.history.location},up.migrate.renamedEvent("up:history:push","up:location:changed"),up.migrate.renamedEvent("up:history:pushed","up:location:changed"),up.migrate.renamedEvent("up:history:restore","up:location:changed"),up.migrate.renamedEvent("up:history:restored","up:location:changed"),up.migrate.renamedEvent("up:history:replaced","up:location:changed"),up.migrate.prepareLocationChangedEvent=function(e){up.migrate.renamedProperty(e,"url","location")},up.history.config.patch(function(){this.updateMetaTagsValue=this.updateMetaTags,this.updateMetaTagsSet=!1,Object.defineProperty(this,"updateMetaTags",{configurable:!0,get(){return this.updateMetaTagsValue},set(e){this.updateMetaTagsValue=e,this.updateMetaTagsSet=!0}})}),up.on("up:framework:boot",function(){up.history.config.updateMetaTagsSet||up.migrate.warn("Meta tags in the <head> are now updated automatically. Configure up.history.config.updateMetaTags to remove this warning.")}),up.migrate.warnOfHungryMetaTags=function(e){let u=up.radio.config.selector("hungrySelectors"),t=up.util.filter(e,e=>e.matches(u));t.length&&up.migrate.warn("Meta tags in the <head> are now updated automatically. Remove the [up-hungry] attribute from %o.",t)}},516(){up.migrate.handleLayerOptions=function(e){up.migrate.fixKey(e,"flavor","mode"),up.migrate.fixKey(e,"closable","dismissible"),up.migrate.fixKey(e,"dismissable","dismissible"),up.migrate.fixKey(e,"closeLabel","dismissLabel"),up.migrate.fixKey(e,"dismissAriaLabel","dismissARIALabel");for(let u of["width","maxWidth","height"])e[u]&&up.migrate.warn(`Layer option { ${u} } has been removed. Use { size } or { class } instead.`);e.sticky&&up.migrate.warn("Layer option { sticky } has been removed. Give links an [up-peel=false] attribute to prevent layer dismissal on click."),e.template&&up.migrate.warn("Layer option { template } has been removed. Use { class } or modify the layer HTML on up:layer:open."),"page"===e.layer&&(up.migrate.warn("Option { layer: 'page' } has been renamed to { layer: 'root' }."),e.layer="root"),"modal"!==e.layer&&"popup"!==e.layer||(up.migrate.warn(`Option { layer: '${e.layer}' } has been removed. Did you mean { layer: 'overlay' }?`),e.layer="overlay"),up.util.isMissing(e.layer)&&up.util.isGiven(e.mode)&&(up.migrate.warn('Opening a layer with only a { mode } option is deprecated. Pass { layer: "new", mode } instead.'),e.layer="new")},up.migrate.handleTetherOptions=function(e){const[u,t]=e.position.split("-");t&&(up.migrate.warn("The position value %o is deprecated. Use %o instead.",e.position,{position:u,align:t}),e.position=u,e.align=t)},up.migrate.registerLayerCloser=e=>e.registerAttrCloser("up-close",(u,t)=>{up.migrate.deprecated("[up-close]","[up-dismiss]"),e.dismiss(u,t)}),up.migrate.handleLayerConfig=e=>up.migrate.fixKey(e,"historyVisible","history"),Object.defineProperty(up.Layer.prototype,"historyVisible",{get:function(){return up.migrate.deprecated("up.Layer#historyVisible","up.Layer#history"),this.history}})},429(){const e=up.link.config.selectorFn("followSelectors"),u=up.link.config.selectorFn("preloadSelectors");let t;up.migrate.renamedAttribute("up-flavor","up-mode",{scope:e}),up.migrate.renamedAttribute("up-closable","up-dismissible",{scope:e}),up.migrate.renamedAttribute("up-dismissable","up-dismissible",{scope:e}),up.migrate.removedAttribute("up-width",{scope:e,replacement:"[up-size] or [up-class]"}),up.migrate.removedAttribute("up-height",{scope:e,replacement:"[up-size] or [up-class]"}),up.migrate.renamedAttribute("up-history-visible","up-history",{scope:e}),up.migrate.renamedAttribute("up-clear-cache","up-expire-cache",{scope:e}),up.migrate.renamedAttribute("up-bad-response-time","up-late-delay"),up.migrate.transformAttribute("up-solo",function(e,u){switch(u){case"":up.migrate.warn('Attribute [up-solo] has been replaced with [up-abort="all"]'),e.setAttribute("up-abort","all");break;case"true":up.migrate.warn('Attribute [up-solo="true"] has been replaced with [up-abort="all"]'),e.setAttribute("up-abort","all");break;case"false":up.migrate.warn('Attribute [up-solo="false"] has been replaced with [up-abort="false"]'),up.migrate.warn('Unpoly 3+ only aborts requests targeting the same fragment. Setting [up-solo="false"] may no longer be necessary.'),e.setAttribute("up-abort","false");break;default:up.migrate.warn('Attribute [up-solo] has been renamed to [up-abort] and [up-abort] no longer accepts a URL pattern. Check if you can use [up-abort="target"] instead.'),e.setAttribute("up-abort","target")}}),up.migrate.transformAttribute("up-reveal",function(e,u){switch(u){case"":up.migrate.warn('Attribute [up-reveal] has been replaced with [up-scroll="target"]'),e.setAttribute("up-scroll","target");break;case"true":up.migrate.warn('Attribute [up-reveal="true"] has been replaced with [up-scroll="target"]'),e.setAttribute("up-scroll","target");break;case"false":up.migrate.warn('Attribute [up-reveal="false"] has been replaced with [up-scroll="false"]'),e.setAttribute("up-scroll","false");break;default:up.migrate.warn('Attribute [up-reveal="%s"] has been replaced with [up-scroll="%s"]',u)}}),up.migrate.transformAttribute("up-reset-scroll",function(e,u){switch(u){case"":up.migrate.warn('Attribute [up-reset-scroll] has been replaced with [up-scroll="top"]'),e.setAttribute("up-scroll","top");break;case"true":up.migrate.warn('Attribute [up-reset-scroll="true"] has been replaced with [up-scroll="top"]'),e.setAttribute("up-scroll","top");break;case"false":up.migrate.warn('Attribute [up-reset-scroll="false"] has been replaced with [up-scroll="false"]'),e.setAttribute("up-scroll","false")}}),up.migrate.transformAttribute("up-restore-scroll",function(e,u){switch(u){case"":up.migrate.warn('Attribute [up-restore-scroll] has been replaced with [up-scroll="restore"]'),e.setAttribute("up-scroll","restore");break;case"true":up.migrate.warn('Attribute [up-restore-scroll="true"] has been replaced with [up-scroll="restore"]'),e.setAttribute("up-scroll","restore");break;case"false":up.migrate.warn('Attribute [up-restore-scroll="false"] has been replaced with [up-scroll="false"]'),e.setAttribute("up-scroll","false")}}),up.migrate.targetMacro("up-dash",{"up-preload":"","up-instant":""},()=>up.migrate.deprecated("[up-dash]","up.link.config.instantSelectors and up.link.config.preloadSelectors")),up.migrate.renamedAttribute("up-delay","up-preload-delay",{scope:u}),up.link.config.patch(function(e){e.preloadEnabled=!0,t=up.migrate.removedProperty(e,"preloadEnabled","The configuration up.link.config.preloadEnabled has been removed. To disable preloading, prevent up:link:preload instead.")}),up.on("up:link:preload",function(e){t[0]||e.preventDefault()});const p="[up-href]:not([up-follow], [up-poll], [up-defer], [up-expand])";up.link.config.patch(function(e){e.clickableSelectors.push(p),e.followSelectors.push(p)}),up.compiler(p,function(e){up.migrate.warn("Following links with only [up-href] has been deprecated. You must now also set an [up-follow] on the same link (found in %o).",e)});const o=`[up-instant]:is(a[href], ${p})`;up.link.config.patch(function(e){e.followSelectors.push(o)}),up.compiler(p,function(e){up.migrate.warn("Following links with only [up-instant] has been deprecated. You must now also set an [up-follow] on the same link (found in %o).",e)})},832(){const e=up.util;up.migrate=function(){const u=new up.Config(()=>({logLevel:"warn"}));function t(u,...t){let p=e.extractCallback(t),{scope:o}=e.extractOptions(t),n=o||`[${u}]`;up.macro(n,{priority:-1e3},function(e){if(e.hasAttribute(u)){let t=e.getAttribute(u);p(e,t)}})}const p={},o={};function n(e){let u=p[e];if(u)return a(`Event ${e} has been renamed to ${u}`),u;if(e in o){let u=`Event ${e} has been removed`,t=o[e];return t&&(u+=`. Use ${t} instead.`),a(u),e}return e}let r={};const a=up.mockable((t,...p)=>{const o=e.sprintf(t,...p),n=u.logLevel;"none"===n||r[o]||(r[o]=!0,up.log[n]("unpoly-migrate",t,...p))}),i=["top","right","bottom","left","padding","padding-top","padding-right","padding-bottom","padding-left","margin","margin-top","margin-right","margin-bottom","margin-left","border-width","border-top-width","border-right-width","border-bottom-width","border-left-width","width","height","max-width","max-height","min-width","min-height"];function s(u){return/[A-Z]/.test(u)?(a(`CSS property names must be in kebab-case, but got camelCase "${u}"`),e.camelToKebabCase(u)):u}function l(e,u,t){return!t&&i.includes(e)&&/^[\d.]+$/.test(u)?(a(`CSS length values must have a unit, but got "${e}: ${u}". Use "${e}: ${u}px" instead.`),u+"px"):u}return up.on("up:framework:reset",function(){r={}}),{deprecated:function(e,u){a(`${e} has been deprecated. Use ${u} instead.`)},renamedPackage:function(e,u){Object.defineProperty(up,e,{configurable:!0,get:()=>(a(`up.${e} has been renamed to up.${u}`),up[u])})},renamedProperty:function(u,t,p,o){const n=e.memoize(()=>o?a(o):a("Property { %s } has been renamed to { %s } (found in %o)",t,p,u));Object.defineProperty(u,t,{configurable:!0,get(){return n(),this[p]},set(e){n(),this[p]=e}})},removedProperty:function(u,t,p){const o=e.memoize(()=>p?a(p):a("Property { %s } has been removed without replacement (found in %o)",t,u));let n=[u[t]];return Object.defineProperty(u,t,{configurable:!0,get:()=>(o(),n[0]),set(e){o(),n[0]=e}}),n},defineThrowingProps:function(e,u,t){let p=()=>{throw new TypeError(t)};for(const t of Object.getOwnPropertyNames(u))t in e||Object.defineProperty(e,t,{get:p,set:p,enumerable:!1,configurable:!1})},forbiddenPropertyValue:function(e,u,t,p){let o=e[u];Object.defineProperty(e,u,{configurable:!0,get:()=>o,set(e){if(e===t)throw new Error(p);o=e}})},transformAttribute:t,renamedAttribute:function(u,p,{scope:o,mapValue:n}={}){t(u,{scope:o},function(t,o){a("Attribute [%s] has been renamed to [%s] (found in %o)",u,p,t),n&&(o=e.evalOption(n,o)),t.setAttribute(p,o)})},removedAttribute:function(e,{scope:u,replacement:p}={}){t(e,{scope:u},function(u,t){p?a("Attribute [%s] has been removed (found in %o). Use %s instead.",e,u,p):a("Attribute [%s] has been removed without replacement (found in %o)",e,u)})},formerlyAsync:function(e){const u=Promise.resolve(),t=u.then;return u.then=function(){return a(`${e} is now sync and no longer returns a promise`),t.apply(this,arguments)},u},renamedEvent:function(e,u){p[e]=u},removedEvent:function(e,u=null){o[e]=u},fixGetStyleProps:function(u){let t;return t=e.isString(u)?s(u):e.isArray(u)?u.map(s):u,t},fixSetStyleProps:function(u,t){let p;if(e.isObject(u)){p={};for(let e in u){let o=u[e];e=s(e),o=l(e,o,t),p[e]=o}}else p=u;return p},fixEventTypes:function(u){return e.uniq(e.map(u,n))},fixKey:function(u,t,p){e.isDefined(u[t])&&(a("Property { %s } has been renamed to { %s } (found in %o)",t,p,u),e.renameKey(u,t,p))},warn:a,loaded:!0,config:u}}()},992(){const e=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.");up.modal={visit:(e,u={})=>(up.migrate.deprecated("up.modal.visit(url)",'up.layer.open({ url, mode: "modal" })'),up.layer.open(Object.assign(Object.assign({},u),{url:e,mode:"modal"}))),follow:(e,u={})=>(up.migrate.deprecated("up.modal.follow(link)",'up.follow(link, { layer: "modal" })'),up.follow(e,Object.assign(Object.assign({},u),{layer:"modal"}))),extract:(e,u,t={})=>(up.migrate.deprecated("up.modal.extract(target, document)",'up.layer.open({ document, mode: "modal" })'),up.layer.open(Object.assign(Object.assign({},t),{target:e,html:u,layer:"modal"}))),close:(e={})=>(up.migrate.deprecated("up.modal.close()","up.layer.dismiss()"),up.layer.dismiss(null,e),up.migrate.formerlyAsync("up.layer.dismiss()")),url:()=>(up.migrate.deprecated("up.modal.url()","up.layer.location"),up.layer.location),coveredUrl(){var e;return up.migrate.deprecated("up.modal.coveredUrl()","up.layer.parent.location"),null===(e=up.layer.parent)||void 0===e?void 0:e.location},get config(){return up.migrate.deprecated("up.modal.config","up.layer.config.modal"),up.layer.config.modal},contains:e=>(up.migrate.deprecated("up.modal.contains()","up.layer.contains()"),up.layer.contains(e)),isOpen:()=>(up.migrate.deprecated("up.modal.isOpen()","up.layer.isOverlay()"),up.layer.isOverlay()),get flavors(){throw e},flavor(){throw e}},up.migrate.renamedEvent("up:modal:open","up:layer:open"),up.migrate.renamedEvent("up:modal:opened","up:layer:opened"),up.migrate.renamedEvent("up:modal:close","up:layer:dismiss"),up.migrate.renamedEvent("up:modal:closed","up:layer:dismissed"),up.migrate.targetMacro("up-modal",{"up-layer":"new modal"},()=>up.migrate.deprecated("[up-modal]",'[up-layer="new modal"]')),up.migrate.targetMacro("up-drawer",{"up-layer":"new drawer"},()=>up.migrate.deprecated("[up-drawer]",'[up-layer="new drawer"]'))},391(){const e=up.util;up.migrate.renamedPackage("proxy","network"),up.migrate.renamedEvent("up:proxy:load","up:request:load"),up.migrate.renamedEvent("up:proxy:received","up:request:loaded"),up.migrate.renamedEvent("up:proxy:loaded","up:request:loaded"),up.migrate.renamedEvent("up:proxy:fatal","up:request:offline"),up.migrate.renamedEvent("up:request:fatal","up:request:offline"),up.migrate.renamedEvent("up:proxy:aborted","up:request:aborted"),up.migrate.renamedEvent("up:proxy:slow","up:network:late"),up.migrate.renamedEvent("up:proxy:recover","up:network:recover"),up.migrate.renamedEvent("up:request:late","up:network:late"),up.migrate.renamedEvent("up:request:recover","up:network:recover"),up.network.config.patch(function(e){const u=()=>up.migrate.deprecated("up.proxy.config.preloadDelay","up.link.config.preloadDelay");Object.defineProperty(e,"preloadDelay",{configurable:!0,get:()=>(u(),up.link.config.preloadDelay),set(e){u(),up.link.config.preloadDelay=e}})}),up.network.config.patch(function(e){up.migrate.renamedProperty(e,"maxRequests","concurrency"),up.migrate.renamedProperty(e,"slowDelay","lateDelay"),up.migrate.renamedProperty(e,"cacheExpiry","cacheExpireAge",'The configuration up.network.config.cacheExpiry has been renamed to up.network.config.cacheExpireAge. Note that Unpoly 3+ automatically reloads cached content after rendering to ensure users always see fresh data ("cache revalidation"). Setting a custom expiry may no longer be necessary.'),up.migrate.renamedProperty(e,"clearCache","expireCache"),up.migrate.forbiddenPropertyValue(e,"cacheSize",0,"Disabling the cache with up.network.config.cacheSize = 0 is no longer supported. To disable automatic caching during navigation, set up.fragment.config.navigateOptions.cache = false instead."),up.network.config.requestMetaKeys=[],up.migrate.removedProperty(e,"requestMetaKeys","The configuration up.network.config.requestMetaKeys has been removed. Servers that optimize responses based on request headers should instead set a Vary response header.")}),up.migrate.handleRequestOptions=function(e){up.migrate.fixKey(e,"clearCache","expireCache"),e.solo&&up.migrate.warn("The option up.request({ solo }) has been removed. Use up.network.abort() or up.fragment.abort() instead.")},up.on("up:request:loaded",function(e){"false"===e.response.headers["X-Up-Expire-Cache"]&&up.migrate.warn("The server can no longer override an { expireCache } option using an `X-Up-Expire-Cache: false` response header"),"false"===e.response.headers["X-Up-Evict-Cache"]&&up.migrate.warn("The server can no longer override an { evictCache } option using an `X-Up-Evict-Cache: false` response header")}),up.ajax=function(...e){return up.migrate.deprecated("up.ajax()","up.request()"),up.request(...e).then(e=>e.text)},up.network.clear=function(){up.migrate.deprecated("up.proxy.clear()","up.cache.expire()"),up.cache.expire()},up.Request.Cache.prototype.clear=function(...e){up.migrate.deprecated("up.cache.clear()","up.cache.expire()"),this.expire(...e)},up.network.preload=function(...e){return up.migrate.deprecated("up.proxy.preload(link)","up.link.preload(link)"),up.link.preload(...e)},up.migrate.preprocessAbortArgs=function(u){2===u.length&&e.isString(u[1])&&(up.migrate.warn("up.network.abort() no longer takes a reason as a second argument. Pass it as { reason } option instead."),u[1]={reason:u[1]})},up.network.isIdle=function(){return up.migrate.deprecated("up.network.isIdle()","!up.network.isBusy()"),!up.network.isBusy()},up.Request.prototype.navigate=function(){up.migrate.deprecated("up.Request#navigate()","up.Request#loadPage()"),this.loadPage()},up.migrate.renamedProperty(up.Request.prototype,"preload","background"),up.migrate.renamedProperty(up.Request.prototype,"badResponseTime","lateDelay"),up.Response.prototype.isSuccess=function(){return up.migrate.deprecated("up.Response#isSuccess()","up.Response#ok"),this.ok},up.Response.prototype.getHeader=function(e){return up.migrate.deprecated("up.Response#getHeader()","up.Response#header()"),this.header(e)},up.Response.prototype.isError=function(){return up.migrate.deprecated("up.Response#isError()","!up.Response#ok"),!this.ok};const u=up.network.config.progressBar;up.network.config.patch(function(t){t.progressBar=function(){return function(){const u=up.EventListener.allNonDefault(document);return e.find(u,e=>"up:network:late"===e.eventType)}()?(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."),!1):u}}),up.network.shouldReduceRequests=function(){return up.migrate("up.network.shouldReduceRequests() has been removed without replacement"),!1},up.network.config.patch(function(e){up.migrate.removedProperty(e,"badRTT"),up.migrate.removedProperty(e,"badDownlink"),up.migrate.renamedProperty(e,"badResponseTime","lateDelay")})},67(){up.popup={attach:(e,u={})=>(e=up.fragment.get(e),up.migrate.deprecated("up.popup.attach(origin)","up.layer.open({ origin, layer: 'popup' })"),up.layer.open(Object.assign(Object.assign({},u),{origin:e,layer:"popup"}))),close:(e={})=>(up.migrate.deprecated("up.popup.close()","up.layer.dismiss()"),up.layer.dismiss(null,e),up.migrate.formerlyAsync("up.layer.dismiss()")),url:()=>(up.migrate.deprecated("up.popup.url()","up.layer.location"),up.layer.location),coveredUrl(){var e;return up.migrate.deprecated("up.popup.coveredUrl()","up.layer.parent.location"),null===(e=up.layer.parent)||void 0===e?void 0:e.location},get config(){return up.migrate.deprecated("up.popup.config","up.layer.config.popup"),up.layer.config.popup},contains:e=>(up.migrate.deprecated("up.popup.contains()","up.layer.contains()"),up.layer.contains(e)),isOpen:()=>(up.migrate.deprecated("up.popup.isOpen()","up.layer.isOverlay()"),up.layer.isOverlay()),sync:()=>(up.migrate.deprecated("up.popup.sync()","up.layer.sync()"),up.layer.sync())},up.migrate.renamedEvent("up:popup:open","up:layer:open"),up.migrate.renamedEvent("up:popup:opened","up:layer:opened"),up.migrate.renamedEvent("up:popup:close","up:layer:dismiss"),up.migrate.renamedEvent("up:popup:closed","up:layer:dismissed"),up.migrate.targetMacro("up-popup",{"up-layer":"new popup"},()=>up.migrate.deprecated("[up-popup]",'[up-layer="new popup"]'))},269(){up.migrate.clearCacheFromXHR=function(e){let u=e.getResponseHeader("X-Up-Clear-Cache");if(u)return up.migrate.deprecated("X-Up-Clear-Cache","X-Up-Expire-Cache"),"false"!==u&&u},up.migrate.titleFromXHR=function(e){let u=e.getResponseHeader("X-Up-Title");if(u){if("false"===u)return!1;if('"'!==u[0]&&"'"!==u[0])return up.migrate.warn("X-Up-Title must now be a JSON-encoded string"),u}},up.protocol.config.patch(function(){const e=()=>up.migrate.deprecated("up.protocol.config.cspNonce","up.script.config.cspNonce");Object.defineProperty(this,"cspNonce",{configurable:!0,get:()=>(e(),up.script.config.cspNonce),set(u){e(),up.script.config.cspNonce=u}})})},162(){const e=up.element;let u;up.radio.config.patch(function(e){up.migrate.renamedProperty(e,"hungry","hungrySelectors")}),up.radio.config.pollEnabled=!0,up.radio.config.patch(function(e){u=up.migrate.removedProperty(e,"pollEnabled","The configuration up.radio.config.pollEnabled has been removed. To disable polling, prevent up:fragment:poll instead.")}),up.on("up:fragment:poll",function(e){u[0]||e.preventDefault()}),up.compiler("[up-hungry][up-if-history]",function(u){e.booleanAttr(u,"up-if-history")&&u.addEventListener("up:fragment:hungry",function(e){e.renderOptions.history||e.preventDefault()})})},834(){const e=up.util,u=up.element;up.migrate.renamedPackage("syntax","script"),up.migrate.postCompile=function(u,t){let p;if(p=t.keep){up.migrate.warn("The { keep: true } option for up.compiler() has been removed. Have the compiler set [up-keep] attribute instead.");const t=e.isString(p)?p:"";for(let e of u)e.setAttribute("up-keep",t)}},up.migrate.targetMacro=function(t,p,o){up.macro(`[${t}]`,function(n){let r;const a=e.copy(p);(r=n.getAttribute(t))?a["up-target"]=r:a["up-follow"]="",u.setMissingAttrs(n,a),n.removeAttribute(t),null==o||o()})},up.$compiler=function(...e){up.migrate.warn("up.$compiler() has been deprecated. Instead use up.compiler() with a callback that wraps the given native element in a jQuery collection.");let u=e.pop();return up.compiler(...e,function(e,...t){let p=jQuery(e);return u(p,...t)})},up.$macro=function(...e){up.migrate.warn("up.$macro() has been deprecated. Instead use up.macro() with a callback that wraps the given native element in a jQuery collection.");let u=e.pop();return up.macro(...e,function(e,...t){let p=jQuery(e);return u(p,...t)})},up.migrate.processHelloMeta=function(e,u){Object.defineProperty(e,"response",{get:()=>(up.migrate.warn("Accessing meta.response from a compiler has been deprecated without replacement. Avoid fragments that compile differently for the initial page load vs. subsequent fragment updates."),u)})};let t=up.hello,p="up.hello() is now async and returns a promise";class WasElementIsPromise extends Promise{}up.migrate.defineThrowingProps(WasElementIsPromise.prototype,Element.prototype,p),up.migrate.defineThrowingProps(WasElementIsPromise.prototype,Node.prototype,p),up.migrate.defineThrowingProps(WasElementIsPromise.prototype,EventTarget.prototype,p),up.hello=function(e,...u){let p=t(e,...u);return WasElementIsPromise.resolve(p)}},947(){up.migrate.renamedPackage("navigation","status"),up.migrate.renamedPackage("feedback","status"),up.status.config.patch(function(e){up.migrate.renamedProperty(e,"navs","navSelectors")})},154(){up.macro("[up-tooltip]",function(e){up.migrate.warn("[up-tooltip] has been deprecated. A [title] was set instead."),up.element.setMissingAttr(e,"title",e.getAttribute("up-tooltip"))})},89(){up.util.only=function(e,...u){return up.migrate.deprecated("up.util.only(object, ...keys)","up.util.pick(object, keys)"),up.util.pick(e,u)},up.util.except=function(e,...u){return up.migrate.deprecated("up.util.except(object, ...keys)","up.util.omit(object, keys)"),up.util.omit(e,u)},up.util.parseUrl=function(...e){return up.migrate.deprecated("up.util.parseUrl()","up.util.parseURL()"),up.util.parseURL(...e)},up.util.any=function(...e){return up.migrate.deprecated("up.util.any()","up.util.some()"),up.util.some(...e)},up.util.all=function(...e){return up.migrate.deprecated("up.util.all()","up.util.every()"),up.util.every(...e)},up.util.detect=function(...e){return up.migrate.deprecated("up.util.detect()","up.util.find()"),up.util.find(...e)},up.util.select=function(...e){return up.migrate.deprecated("up.util.select()","up.util.filter()"),up.util.filter(...e)},up.util.setTimer=function(...e){return up.migrate.deprecated("up.util.setTimer()","up.util.timer()"),up.util.timer(...e)},up.util.escapeHtml=function(...e){return up.migrate.deprecated("up.util.escapeHtml()","up.util.escapeHTML()"),up.util.escapeHTML(...e)},up.util.selectorForElement=function(...e){return up.migrate.deprecated("up.util.selectorForElement()","up.fragment.toTarget()"),up.fragment.toTarget(...e)},up.util.nextFrame=function(...e){return up.migrate.deprecated("up.util.nextFrame()","up.util.task()"),up.util.task(...e)},up.util.times=function(e,u){up.migrate.deprecated("up.util.times()","a `for` loop");for(let t=0;t<e;t++)u()},up.util.assign=function(...e){return up.migrate.deprecated("up.util.assign()","Object.assign()"),Object.assign(...e)},up.util.values=function(...e){return up.migrate.deprecated("up.util.values()","Object.values()"),Object.values(...e)},up.util.microtask=window.queueMicrotask,up.migrate.splitAtOr=function(e){let u=e.split(/\s+or\s+/);if(u.length>=2)return up.migrate.warn(`Separating tokens by \`or\` has been deprecated. Use a comma (\`,\`) instead. Found in "${e}".`),u}},763(){up.migrate.renamedPackage("layout","viewport"),up.viewport.config.patch(function(e){up.migrate.renamedProperty(e,"viewports","viewportSelectors"),up.migrate.renamedProperty(e,"fixedTop","fixedTopSelectors"),up.migrate.renamedProperty(e,"fixedBottom","fixedBottomSelectors"),up.migrate.renamedProperty(e,"anchoredRight","anchoredRightSelectors"),up.migrate.renamedProperty(e,"snap","revealSnap"),up.migrate.removedProperty(e,"scrollSpeed")}),up.viewport.closest=function(...e){return up.migrate.deprecated("up.viewport.closest()","up.viewport.get()"),up.viewport.get(...e)},up.viewport.scroll=function(e,u,t={}){return up.migrate.deprecated("up.scroll()","Element#scrollTo()"),(e=up.fragment.get(e,t)).scrollTo(Object.assign(Object.assign({},t),{top:u})),up.migrate.formerlyAsync("up.scroll()")},up.scroll=up.viewport.scroll}},u={};function t(p){var o=u[p];if(void 0!==o)return o.exports;var n=u[p]={exports:{}};return e[p](n,n.exports,t),n.exports}up.framework.startExtension(),t(832),t(750),t(204),t(838),t(959),t(89),t(635),t(33),t(989),t(993),t(834),t(267),t(997),t(753),t(789),t(947),t(429),t(516),t(992),t(67),t(154),t(269),t(391),t(162),t(763),up.framework.stopExtension()})();
1
+ (()=>{var e={33(){up.browser.loadPage=function(...e){return up.migrate.deprecated("up.browser.loadPage()","up.network.loadPage()"),up.network.loadPage(...e)},up.browser.isSupported=function(...e){return up.migrate.deprecated("up.browser.isSupported()","up.framework.isSupported()"),up.framework.isSupported(...e)}},750(){up.Config.prototype.patch=function(e){let t=e.bind(this,this);t(),document.addEventListener("up:framework:reset",t)}},959(){up.Layer.prototype.isOpen=function(){return up.migrate.deprecated("up.Layer#isOpen()","up.Layer#isAlive()"),this.isAlive()},up.Layer.prototype.isClosed=function(){return up.migrate.deprecated("up.Layer#isClosed()","!up.Layer#isAlive()"),!this.isAlive()}},204(){up.migrate.renamedProperty(up.RenderJob.prototype,"options","renderOptions",{warning:"up.RenderJob: Property { options } has been renamed to { renderOptions }"})},838(){up.migrate.renamedProperty(up.RenderResult.prototype,"options","renderOptions",{warning:"up.RenderResult: Property { options } has been renamed to { renderOptions }"})},989(){up.element.first=function(...e){return up.migrate.deprecated("up.element.first()","up.element.get()"),up.element.get(...e)},up.element.createFromHtml=function(...e){return up.migrate.deprecated("up.element.createFromHtml()","up.element.createFromHTML()"),up.element.createFromHTML(...e)},up.element.remove=function(e){return up.migrate.deprecated("up.element.remove()","Element#remove()"),e.remove()},up.element.matches=function(e,t){return up.migrate.deprecated("up.element.matches()","Element#matches()"),e.matches(t)},up.element.closest=function(e,t){return up.migrate.deprecated("up.element.closest()","Element#closest()"),e.closest(t)},up.element.replace=function(e,t){return up.migrate.deprecated("up.element.replace()","Element#replaceWith()"),e.replaceWith(t)},up.element.all=function(...e){up.migrate.deprecated("up.element.all()","Document#querySelectorAll() or Element#querySelectorAll()");const t=e.pop();return(e[0]||document).querySelectorAll(t)},up.element.toggleClass=function(e,t,u){up.migrate.deprecated("up.element.toggleClass()","element.classList.toggle()");const n=e.classList;return null==u&&(u=!n.contains(t)),u?n.add(t):n.remove(t)},up.element.toSelector=function(...e){return up.migrate.deprecated("up.element.toSelector()","up.fragment.toTarget()"),up.fragment.toTarget(...e)},up.element.isAttached=function(e){return up.migrate.deprecated("up.element.isAttached()","element.isConnected"),document.contains(e)},up.element.isDetached=function(e){return up.migrate.deprecated("up.element.isDetached()","!element.isConnected"),!up.element.isAttached(e)}},635(){class DeprecatedCannotCompile extends up.Error{get[Symbol.toStringTag](){return"up.CannotCompile"}}Object.defineProperty(up,"CannotCompile",{get:function(){return up.migrate.warn('The error up.CannotCompile is no longer thrown. Compiler errors now emit an "error" event on window, but no longer crash the render pass.'),DeprecatedCannotCompile}})},993(){up.migrate.renamedPackage("bus","event"),up.event.nobodyPrevents=function(...e){return up.migrate.deprecated("up.event.nobodyPrevents(type)","!up.emit(type).defaultPrevented"),!up.emit(...e).defaultPrevented},up.$on=function(...e){up.migrate.warn("up.$on() has been deprecated. Instead use up.on() with a callback that wraps the given native element in a jQuery collection.");let t=e.pop();return t.upNativeCallback=function(e,u,n){let o=jQuery(u);t.call(o,e,o,n)},up.on(...e,t.upNativeCallback)},up.$off=function(...e){up.migrate.deprecated("up.$off()","up.off()");let t=e.pop().upNativeCallback;return t||up.fail("The callback passed to up.$off() was never registered with up.$on()"),up.off(...e,t)}},267(){up.form.config.patch(function(e){up.migrate.renamedProperty(e,"fields","fieldSelectors",{label:"up.form.config"}),up.migrate.renamedProperty(e,"submitButtons","submitButtonSelectors",{label:"up.form.config"}),up.migrate.renamedProperty(e,"validateTargets","groupSelectors",{label:"up.form.config"}),up.migrate.renamedProperty(e,"observeDelay","watchInputDelay",{label:"up.form.config"}),up.migrate.renamedProperty(e,"genericButtonSelectors","anyButtonSelectors",{label:"up.form.config"})}),up.migrate.migratedFormGroupSelectors=function(){return up.form.config.groupSelectors.map(e=>{let t=e.replace(/:has\((:origin|&)\)$/,"");return e!==t&&up.migrate.warn('Selectors in up.form.config.groupSelectors must not contain ":has(:origin)". The suffix is added automatically where required. Found in "%s".',e),t})},up.migrate.watchForSwitch=function(e,t){if(e.matches("input[type=radio]"))return up.migrate.warn("Using [up-switch] on an individual radio button is deprecated (%o). Use [up-switch] on the container of a radio group instead.",e),up.on(e,"change",t)},up.migrate.renamedAttribute("up-observe","up-watch"),up.migrate.renamedAttribute("up-fieldset","up-form-group"),up.migrate.renamedAttribute("up-delay","up-watch-delay",{scope:"[up-autosubmit]"}),up.migrate.renamedAttribute("up-delay","up-watch-delay",{scope:"[up-watch]"}),up.observe=function(...e){if(up.migrate.deprecated("up.observe()","up.watch()"),up.util.isList(e[0])&&e[0].length>1){let t=e.shift();up.migrate.warn("Calling up.observe() with a list of multiple elements is no longer supported by up.watch()");let u=up.util.map(t,t=>up.watch(t,...e));return up.util.sequence(u)}return up.watch(...e)}},997(){const e=up.util;up.migrate.renamedPackage("flow","fragment"),up.migrate.renamedPackage("dom","fragment"),up.fragment.config.patch(function(e){up.migrate.renamedProperty(e,"fallbacks","mainTargets",{label:"up.fragment.config"})});const t=e=>({label:"render options",detail:e.origin||e.url||e.target});up.migrate.handleResponseDocOptions=e=>up.migrate.fixKey(e,"html","document",t(e)),up.fragment.config.patch(function(e){let t=()=>up.migrate.deprecated("up.fragment.config.matchAroundOrigin","up.fragment.config.match");Object.defineProperty(e,"matchAroundOrigin",{configurable:!0,get:function(){return t(),"region"===this.match},set:function(e){t(),this.match=e?"region":"first"}})}),up.replace=function(e,t,u){return up.migrate.deprecated("up.replace(target, url)","up.navigate(target, { url })"),up.navigate(Object.assign(Object.assign({},u),{target:e,url:t}))},up.extract=function(e,t,u){return up.migrate.deprecated("up.extract(target, document)","up.navigate(target, { document })"),up.navigate(Object.assign(Object.assign({},u),{target:e,document:t}))},up.fragment.first=function(...e){return up.migrate.deprecated("up.fragment.first()","up.fragment.get()"),up.fragment.get(...e)},up.first=up.fragment.first,up.migrate.preprocessRenderOptions=function(u){e.isString(u.history)&&"auto"!==u.history&&(up.migrate.warn("Passing a URL as { history } option is deprecated. Pass it as { location } instead."),u.location=u.history,u.history="auto");for(let t of["target","origin"])e.isJQuery(u[t])&&(up.migrate.warn("Passing a jQuery collection as { %s } is deprecated. Pass it as a native element instead.",t),u[t]=up.element.get(u[t]));"auto"===u.fail&&(up.migrate.warn("The option { fail: 'auto' } is deprecated. Omit the option instead."),delete u.fail);let n=e.pluckKey(u,"solo");e.isString(n)?(up.migrate.warn("The up.render() option { solo } has been replaced with { abort } and { abort } no longer accepts a URL pattern. Check if you can use { abort: 'target'} or use up.network.abort(pattern) instead."),u.abort=e=>up.network.abort(n,e)):e.isFunction(n)?(up.migrate.warn("The up.render() option { solo } has been replaced with { 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."),u.abort=e=>{up.network.abort(n,e)}):!0===n?(up.migrate.deprecated("Option { solo: true }","{ abort: 'all' }"),u.abort="all"):!1===n&&(up.migrate.deprecated("Option { solo: false }","{ abort: false }"),up.migrate.warn("Unpoly 3+ only aborts requests targeting the same fragment. Setting { solo: false } may no longer be necessary."),u.abort=!1),up.migrate.fixKey(u,"failOnFinished","onFailFinished",t(u)),up.migrate.fixKey(u,"badResponseTime","lateDelay",t(u)),e.isString(u.reveal)?(up.migrate.deprecated(`Option { reveal: '${u.reveal}' }`,`{ scroll: '${u.reveal}' }`),u.scroll=u.reveal):!0===u.reveal?(up.migrate.deprecated("Option { reveal: true }","{ scroll: 'target' }"),u.scroll="target"):!1===u.reveal&&(up.migrate.deprecated("Option { reveal: false }","{ scroll: false }"),u.scroll=!1),!0===u.resetScroll&&(up.migrate.deprecated("Option { resetScroll: true }","{ scroll: 'top' }"),u.scroll="top"),!1===u.resetScroll&&(up.migrate.deprecated("Option { resetScroll: false }","{ scroll: false }"),u.scroll=!1),!0===u.restoreScroll&&(up.migrate.deprecated("Option { restoreScroll: true }","{ scroll: 'restore' }"),u.scroll="restore"),!1===u.restoreScroll&&(up.migrate.deprecated("Option { restoreScroll: false }","{ scroll: false }"),u.scroll=!1),"reset"===u.scroll&&(up.migrate.deprecated("Option { scroll: 'reset' }","{ scroll: 'top' }"),u.scroll="top")},up.migrate.postprocessReloadOptions=function(e){var t;let u,n=null===(t=e.headers)||void 0===t?void 0:t["If-Modified-Since"];u=n?Math.floor(.001*new Date(n)).toString():"0",e.headers[up.protocol.headerize("reloadFromTime")]=u},up.migrate.resolveOrigin=function(e,{origin:t}={}){return e.replace(/"[^"]*"|'[^']*'|&|:origin\b/g,function(u){if(":origin"!==u&&"&"!==u)return u;if("&"===u){let u=(null==t?void 0:t.form)?"A form submission's :origin is now the button or changed field, not the form. To target the form, use form:has(:origin). ":"";up.migrate.warn("Origin shorthand '&' has been deprecated. Use :origin instead. "+u+"Found in %s (origin %o).",e,t)}if(t)return up.fragment.toTarget(t);up.fail('Missing { origin } element to resolve "%s" reference (found in %s)',u,e)})},up.fragment.config.patch(function(){Object.defineProperty(this,"runScripts",{configurable:!0,get(){switch(up.migrate.deprecated("up.fragment.config.runScripts",'up.script.config.scriptElementPolicy = "auto"'),up.script.config.scriptElementPolicy){case"auto":case"pass":return!0;case"block":return!1;case"nonce":return e=>!!e.nonce}},set(t){!0===t?(up.migrate.deprecated("up.fragment.config.runScripts = true",'up.script.config.scriptElementPolicy = "auto"'),up.script.config.scriptElementPolicy="auto"):!1===t?(up.migrate.deprecated("up.fragment.config.runScripts = false",'up.script.config.scriptElementPolicy = "block"'),up.script.config.scriptElementPolicy="block"):e.isFunction(t)&&(up.migrate.warn("up.fragment.config.runScripts has been replaced by up.script.config.scriptElementPolicy, but no longer supports a function value."),up.script.config.scriptElementPolicy="block")}})}),up.compiler("[up-keep]",function(t){let u=up.element.booleanOrStringAttr(t,"up-keep");e.isString(u)&&/[.[#]/.test(u)&&(up.migrate.warn('The [up-keep] attribute no longer supports a selector value (found in %o). Elements will be matched by their derived target. You may prevent keeping with [up-on-keep="if(condition) event.preventDefault()"].',t),t.addEventListener("up:fragment:keep",function(e){e.target!==t||e.newFragment.matches(u)||e.preventDefault()}),t.setAttribute("up-keep",""))})},753(){up.migrate.renamedEvent("up:app:booted","up:framework:booted"),document.querySelector("script[up-boot=manual]")&&up.migrate.warn('The [up-boot="manual"] attribute must be set on the <html> element')},789(){up.history.config.patch(function(e){up.migrate.renamedProperty(e,"popTargets","restoreTargets",{label:"up.history.config"})}),up.history.url=function(){return up.migrate.deprecated("up.history.url()","up.history.location"),up.history.location},up.migrate.renamedEvent("up:history:push","up:location:changed"),up.migrate.renamedEvent("up:history:pushed","up:location:changed"),up.migrate.renamedEvent("up:history:restore","up:location:changed"),up.migrate.renamedEvent("up:history:restored","up:location:changed"),up.migrate.renamedEvent("up:history:replaced","up:location:changed"),up.migrate.prepareLocationChangedEvent=function(e){up.migrate.renamedProperty(e,"url","location",{warning:"Property event.url of up:location:changed has been renamed to event.location"})},up.history.config.patch(function(){Object.defineProperty(this,"updateMetaTags",{configurable:!0,get:()=>up.history.isEnabled("metaTags"),set(e){if(e)return void up.migrate.warn("up.history.config.updateMetaTags has been removed. Meta tags are updated by default.");up.migrate.deprecated("up.history.config.updateMetaTags = false","an array of aspects without 'metaTags' in up.history.config.enabled");let{enabled:t}=this;!0===t&&(t=["location","title","lang"]),up.util.isArray(t)&&(this.enabled=t.filter(e=>"metaTags"!==e))}})}),up.migrate.warnOfHungryMetaTags=function(e){if(!up.history.isEnabled("metaTags"))return;let t=up.radio.config.selector("hungrySelectors"),u=up.util.filter(e,e=>e.matches(t));u.length&&up.migrate.warn("Meta tags in the <head> are now updated automatically. Remove the [up-hungry] attribute from %o.",u)}},516(){function e(e,t){up.migrate.fixKey(e,"closable","dismissible",t),up.migrate.fixKey(e,"dismissable","dismissible",t),up.migrate.fixKey(e,"closeLabel","dismissLabel",t),up.migrate.fixKey(e,"dismissAriaLabel","dismissARIALabel",t),up.migrate.fixKey(e,"historyVisible","history",t),function(e){if(!up.util.isString(e.position))return;const[t,u]=e.position.split("-");u&&(up.migrate.warn("The position value %o is deprecated. Use %o instead.",e.position,{position:t,align:u}),e.position=t,e.align=u)}(e)}up.migrate.handleLayerOptions=function(t){const u={label:"layer options",detail:t.origin||t.url};up.migrate.fixKey(t,"flavor","mode",u),e(t,u);for(let e of["width","maxWidth","height"])t[e]&&up.migrate.warn(`Layer option { ${e} } has been removed. Use { size } or { class } instead.`);t.sticky&&up.migrate.warn("Layer option { sticky } has been removed. Give links an [up-peel=false] attribute to prevent layer dismissal on click."),t.template&&up.migrate.warn("Layer option { template } has been removed. Use { class } or modify the layer HTML on up:layer:open."),"page"===t.layer&&(up.migrate.warn("Option { layer: 'page' } has been renamed to { layer: 'root' }."),t.layer="root"),"modal"!==t.layer&&"popup"!==t.layer||(up.migrate.warn(`Option { layer: '${t.layer}' } has been removed. Did you mean { layer: 'overlay' }?`),t.layer="overlay"),up.util.isMissing(t.layer)&&up.util.isGiven(t.mode)&&(up.migrate.warn('Opening a layer with only a { mode } option is deprecated. Pass { layer: "new", mode } instead.'),t.layer="new")},up.migrate.registerLayerCloser=e=>e.registerAttrCloser("up-close",(t,u)=>{up.migrate.deprecated("[up-close]","[up-dismiss]"),e.dismiss(t,u)}),up.migrate.fixLayerConfigs=function(){for(let[t,u]of Object.entries(up.layer.config))up.util.isOptions(u)&&e(u,{label:`up.layer.config.${t}`})},up.on("up:framework:boot",up.migrate.fixLayerConfigs),up.migrate.handleLayerConfig=function(t){let[u]=Object.entries(up.layer.config).find(([e,u])=>u===t);e(t,{label:`up.layer.config.${u}`})},Object.defineProperty(up.Layer.prototype,"historyVisible",{get:function(){return up.migrate.deprecated("up.Layer#historyVisible","up.Layer#history"),this.history}})},429(){const e=up.link.config.selectorFn("followSelectors"),t=up.form.config.selectorFn("submitSelectors"),u=up.link.config.selectorFn("preloadSelectors"),n=()=>[e(),t()].join();let o;up.migrate.renamedAttribute("up-flavor","up-mode",{scope:n}),up.migrate.renamedAttribute("up-closable","up-dismissible",{scope:n}),up.migrate.renamedAttribute("up-dismissable","up-dismissible",{scope:n}),up.migrate.removedAttribute("up-width",{scope:n,replacement:"[up-size] or [up-class]"}),up.migrate.removedAttribute("up-height",{scope:n,replacement:"[up-size] or [up-class]"}),up.migrate.renamedAttribute("up-history-visible","up-history",{scope:n}),up.migrate.renamedAttribute("up-clear-cache","up-expire-cache",{scope:n}),up.migrate.renamedAttribute("up-bad-response-time","up-late-delay"),up.migrate.transformAttribute("up-solo",function(e,t){switch(t){case"":up.migrate.warn('Attribute [up-solo] has been replaced with [up-abort="all"] (found in %o)',e),e.setAttribute("up-abort","all");break;case"true":up.migrate.warn('Attribute [up-solo="true"] has been replaced with [up-abort="all"] (found in %o)',e),e.setAttribute("up-abort","all");break;case"false":up.migrate.warn('Attribute [up-solo="false"] has been replaced with [up-abort="false"] (found in %o)',e),up.migrate.warn('Unpoly 3+ only aborts requests targeting the same fragment. Setting [up-solo="false"] may no longer be necessary.'),e.setAttribute("up-abort","false");break;default:up.migrate.warn('Attribute [up-solo] has been renamed to [up-abort] and [up-abort] no longer accepts a URL pattern (found in %o). Check if you can use [up-abort="target"] instead.',e),e.setAttribute("up-abort","target")}}),up.migrate.transformAttribute("up-reveal",function(e,t){switch(t){case"":up.migrate.warn('Attribute [up-reveal] has been replaced with [up-scroll="target"] (found in %o)',e),e.setAttribute("up-scroll","target");break;case"true":up.migrate.warn('Attribute [up-reveal="true"] has been replaced with [up-scroll="target"] (found in %o)',e),e.setAttribute("up-scroll","target");break;case"false":up.migrate.warn('Attribute [up-reveal="false"] has been replaced with [up-scroll="false"] (found in %o)',e),e.setAttribute("up-scroll","false");break;default:up.migrate.warn('Attribute [up-reveal="%s"] has been replaced with [up-scroll="%s"] (found in %o)',t,t,e),e.setAttribute("up-scroll",t)}}),up.migrate.transformAttribute("up-reset-scroll",function(e,t){switch(t){case"":up.migrate.warn('Attribute [up-reset-scroll] has been replaced with [up-scroll="top"] (found in %o)',e),e.setAttribute("up-scroll","top");break;case"true":up.migrate.warn('Attribute [up-reset-scroll="true"] has been replaced with [up-scroll="top"] (found in %o)',e),e.setAttribute("up-scroll","top");break;case"false":up.migrate.warn('Attribute [up-reset-scroll="false"] has been replaced with [up-scroll="false"] (found in %o)',e),e.setAttribute("up-scroll","false")}}),up.migrate.transformAttribute("up-restore-scroll",function(e,t){switch(t){case"":up.migrate.warn('Attribute [up-restore-scroll] has been replaced with [up-scroll="restore"] (found in %o)',e),e.setAttribute("up-scroll","restore");break;case"true":up.migrate.warn('Attribute [up-restore-scroll="true"] has been replaced with [up-scroll="restore"] (found in %o)',e),e.setAttribute("up-scroll","restore");break;case"false":up.migrate.warn('Attribute [up-restore-scroll="false"] has been replaced with [up-scroll="false"] (found in %o)',e),e.setAttribute("up-scroll","false")}}),up.migrate.targetMacro("up-dash",{"up-preload":"","up-instant":""},"up.link.config.instantSelectors and up.link.config.preloadSelectors"),up.migrate.renamedAttribute("up-delay","up-preload-delay",{scope:u}),up.link.config.patch(function(e){o=up.migrate.removedProperty(e,"preloadEnabled",{value:!0,warning:"The configuration up.link.config.preloadEnabled has been removed. To disable preloading, prevent up:link:preload instead."})}),up.on("up:link:preload",function(e){o[0]||e.preventDefault()}),up.macro("[up-href]:not([up-follow], [up-poll], [up-defer], [up-expand])",{priority:-50},function(e){up.link.isFollowable(e)||(up.migrate.warn("Following links with only [up-href] has been deprecated. You must now also set an [up-follow] on the same link (found in %o).",e),e.setAttribute("up-follow",""))});const p="a[href][up-instant]";up.link.config.patch(function(e){e.followSelectors.push(p)}),up.compiler(p,function(e){up.link.isFollowable(e)&&!function(e){let{followSelectors:t,noFollowSelectors:u}=up.link.config,n=t.filter(e=>e!==p);return e.matches(up.element.unionSelector(n,u))}(e)&&up.migrate.warn("Following links with only [up-instant] has been deprecated. You must now also set an [up-follow] on the same link (found in %o).",e)})},832(){const e=up.util;up.migrate=function(){const t=new up.Config("up.migrate.config",()=>({logLevel:"error"}));function u(t,...u){let n=e.extractCallback(u),{scope:o}=e.extractOptions(u),p=o||`[${t}]`;up.macro(p,{priority:-1e3},function(e){if(e.hasAttribute(t)){let u=e.getAttribute(t);n(e,u)}})}const n={},o={};function p(e){let t=n[e];if(t)return a(`Event ${e} has been renamed to ${t}`),t;if(e in o){let t=`Event ${e} has been removed`,u=o[e];return u&&(t+=`. Use ${u} instead.`),a(t),e}return e}let r={};const a=up.mockable((u,...n)=>{const o=e.sprintf(u,...n),p=t.logLevel;"none"===p||r[o]||(r[o]=!0,up.log[p]("unpoly-migrate",u,...n))}),i=["top","right","bottom","left","padding","padding-top","padding-right","padding-bottom","padding-left","margin","margin-top","margin-right","margin-bottom","margin-left","border-width","border-top-width","border-right-width","border-bottom-width","border-left-width","width","height","max-width","max-height","min-width","min-height"];function l(t){return/[A-Z]/.test(t)?(a(`CSS property names must be in kebab-case, but got camelCase "${t}"`),e.camelToKebabCase(t)):t}function s(e,t,u){return!u&&i.includes(e)&&/^[\d.]+$/.test(t)?(a(`CSS length values must have a unit, but got "${e}: ${t}". Use "${e}: ${t}px" instead.`),t+"px"):t}return up.on("up:framework:reset",function(){r={}}),{deprecated:function(e,t){a(`${e} has been deprecated. Use ${t} instead.`)},renamedPackage:function(e,t){Object.defineProperty(up,e,{configurable:!0,get:()=>(a(`up.${e} has been renamed to up.${t}`),up[t])})},renamedProperty:function(t,u,n,{label:o,warning:p}={}){const r=e.memoize(function(){p?a(p):o?a("Property %s.%s has been renamed to %s.%s",o,u,o,n):a("Property { %s } has been renamed to { %s } (found in %o)",u,n,t)});Object.defineProperty(t,u,{configurable:!0,get(){return r(),this[n]},set(e){r(),this[n]=e}})},removedProperty:function(t,u,{label:n,warning:o,value:p}={}){var r;const i=e.memoize(function(){o?a(o):n?a("Property %s.%s has been removed without replacement",n,u):a("Property { %s } has been removed without replacement (found in %o)",u,t)});let l=[null!=p?p:null===(r=Object.getOwnPropertyDescriptor(t,u))||void 0===r?void 0:r.value];return Object.defineProperty(t,u,{configurable:!0,enumerable:!1,get:()=>(i(),l[0]),set(e){i(),l[0]=e}}),l},defineThrowingProps:function(e,t,u){let n=()=>{throw new TypeError(u)};for(const u of Object.getOwnPropertyNames(t))u in e||Object.defineProperty(e,u,{get:n,set:n,enumerable:!1,configurable:!1})},transformAttribute:u,renamedAttribute:function(t,n,{scope:o,mapValue:p}={}){u(t,{scope:o},function(u,o){a("Attribute [%s] has been renamed to [%s] (found in %o)",t,n,u),p&&(o=e.evalOption(p,o)),u.setAttribute(n,o)})},removedAttribute:function(e,{scope:t,replacement:n}={}){u(e,{scope:t},function(t,u){n?a("Attribute [%s] has been removed (found in %o). Use %s instead.",e,t,n):a("Attribute [%s] has been removed without replacement (found in %o)",e,t)})},formerlyAsync:function(e){const t=Promise.resolve(),u=t.then;return t.then=function(){return a(`${e} is now sync and no longer returns a promise`),u.apply(this,arguments)},t},renamedEvent:function(e,t){n[e]=t},removedEvent:function(e,t=null){o[e]=t},fixGetStyleProps:function(t){let u;return u=e.isString(t)?l(t):e.isArray(t)?t.map(l):t,u},fixSetStyleProps:function(t,u){let n;if(e.isObject(t)){n={};for(let e in t){let o=t[e];e=l(e),o=s(e,o,u),n[e]=o}}else n=t;return n},fixEventTypes:function(t){return e.uniq(e.map(t,p))},fixKey:function(t,u,n,{label:o,detail:p}={}){e.isDefined(t[u])&&(o&&p?a("Property { %s } has been renamed to { %s } (found in %s for %o)",u,n,o,p):o?a("Property { %s } has been renamed to { %s } (found in %s)",u,n,o):a("Property { %s } has been renamed to { %s } (found in %o)",u,n,t),e.renameKey(t,u,n))},warn:a,loaded:!0,config:t}}()},992(){const e=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.");up.modal={visit:(e,t={})=>(up.migrate.deprecated("up.modal.visit(url)",'up.layer.open({ url, mode: "modal" })'),up.layer.open(Object.assign(Object.assign({},t),{url:e,mode:"modal"}))),follow:(e,t={})=>(up.migrate.deprecated("up.modal.follow(link)",'up.follow(link, { layer: "new modal" })'),up.follow(e,Object.assign(Object.assign({},t),{layer:"new",mode:"modal"}))),extract:(e,t,u={})=>(up.migrate.deprecated("up.modal.extract(target, document)",'up.layer.open({ document, mode: "modal" })'),up.layer.open(Object.assign(Object.assign({},u),{target:e,document:t,layer:"new",mode:"modal"}))),close:(e={})=>(up.migrate.deprecated("up.modal.close()","up.layer.dismiss()"),up.layer.dismiss(null,e),up.migrate.formerlyAsync("up.layer.dismiss()")),url:()=>(up.migrate.deprecated("up.modal.url()","up.layer.location"),up.layer.location),coveredUrl(){var e;return up.migrate.deprecated("up.modal.coveredUrl()","up.layer.parent.location"),null===(e=up.layer.parent)||void 0===e?void 0:e.location},get config(){return up.migrate.deprecated("up.modal.config","up.layer.config.modal"),up.layer.config.modal},contains:e=>(up.migrate.deprecated("up.modal.contains()","up.layer.contains()"),up.layer.contains(e)),isOpen:()=>(up.migrate.deprecated("up.modal.isOpen()","up.layer.isOverlay()"),up.layer.isOverlay()),get flavors(){throw e},flavor(){throw e}},Object.defineProperty(up.modal,"config",{enumerable:!1}),up.migrate.renamedEvent("up:modal:open","up:layer:open"),up.migrate.renamedEvent("up:modal:opened","up:layer:opened"),up.migrate.renamedEvent("up:modal:close","up:layer:dismiss"),up.migrate.renamedEvent("up:modal:closed","up:layer:dismissed"),up.migrate.targetMacro("up-modal",{"up-layer":"new modal"},'[up-layer="new modal"]'),up.migrate.targetMacro("up-drawer",{"up-layer":"new drawer"},'[up-layer="new drawer"]')},287(){up.motion.isEnabled=function(){return up.migrate.deprecated("up.motion.isEnabled()","up.motion.config.enabled"),up.motion.config.enabled}},391(){const e=up.util;up.migrate.renamedPackage("proxy","network"),up.migrate.renamedEvent("up:proxy:load","up:request:load"),up.migrate.renamedEvent("up:proxy:received","up:request:loaded"),up.migrate.renamedEvent("up:proxy:loaded","up:request:loaded"),up.migrate.renamedEvent("up:proxy:fatal","up:request:offline"),up.migrate.renamedEvent("up:request:fatal","up:request:offline"),up.migrate.renamedEvent("up:proxy:aborted","up:request:aborted"),up.migrate.renamedEvent("up:proxy:slow","up:network:late"),up.migrate.renamedEvent("up:proxy:recover","up:network:recover"),up.migrate.renamedEvent("up:request:late","up:network:late"),up.migrate.renamedEvent("up:request:recover","up:network:recover"),up.network.config.patch(function(e){const t=()=>up.migrate.deprecated("up.proxy.config.preloadDelay","up.link.config.preloadDelay");Object.defineProperty(e,"preloadDelay",{configurable:!0,get:()=>(t(),up.link.config.preloadDelay),set(e){t(),up.link.config.preloadDelay=e}})}),up.network.config.patch(function(e){up.migrate.renamedProperty(e,"maxRequests","concurrency",{label:"up.network.config"}),up.migrate.renamedProperty(e,"slowDelay","lateDelay",{label:"up.network.config"}),up.migrate.renamedProperty(e,"cacheExpiry","cacheExpireAge",{warning:'The configuration up.network.config.cacheExpiry has been renamed to up.network.config.cacheExpireAge. Note that Unpoly 3+ automatically reloads cached content after rendering to ensure users always see fresh data ("cache revalidation"). Setting a custom expiry may no longer be necessary.'}),up.migrate.renamedProperty(e,"clearCache","expireCache",{label:"up.network.config"});let t=e.cacheSize;Object.defineProperty(e,"cacheSize",{configurable:!0,get:()=>t,set(u){0===u&&(up.migrate.deprecated("up.network.config.cacheSize = 0","up.network.config.cacheEnabled = false"),e.cacheEnabled=!1),t=u}}),up.migrate.removedProperty(e,"requestMetaKeys",{value:[],warning:"The configuration up.network.config.requestMetaKeys has been removed. Servers that optimize responses based on request headers should instead set a Vary response header."})}),up.migrate.handleRequestOptions=function(e){up.migrate.fixKey(e,"clearCache","expireCache",{label:"request options",detail:e.url}),e.solo&&up.migrate.warn("The option up.request({ solo }) has been removed. Use up.network.abort() or up.fragment.abort() instead.")},up.on("up:request:loaded",function(e){"false"===e.response.header("X-Up-Expire-Cache")&&up.migrate.warn("The server can no longer prevent cache expiration with an `X-Up-Expire-Cache: false` response header. The header has no effect and can be removed."),"false"===e.response.header("X-Up-Evict-Cache")&&up.migrate.warn("The server can no longer prevent cache eviction with an `X-Up-Evict-Cache: false` response header. The header has no effect and can be removed.")}),up.ajax=function(...e){return up.migrate.deprecated("up.ajax()","up.request()"),up.request(...e).then(e=>e.text)},up.network.clear=function(){up.migrate.deprecated("up.proxy.clear()","up.cache.expire()"),up.cache.expire()},up.Request.Cache.prototype.clear=function(...e){up.migrate.deprecated("up.cache.clear()","up.cache.expire()"),this.expire(...e)},up.network.preload=function(...e){return up.migrate.deprecated("up.proxy.preload(link)","up.link.preload(link)"),up.link.preload(...e)},up.migrate.preprocessAbortArgs=function(t){2===t.length&&e.isString(t[1])&&(up.migrate.warn("up.network.abort() no longer takes a reason as a second argument. Pass it as { reason } option instead."),t[1]={reason:t[1]})},up.network.isIdle=function(){return up.migrate.deprecated("up.network.isIdle()","!up.network.isBusy()"),!up.network.isBusy()},up.Request.prototype.navigate=function(){up.migrate.deprecated("up.Request#navigate()","up.Request#loadPage()"),this.loadPage()},up.migrate.renamedProperty(up.Request.prototype,"preload","background",{warning:"Property up.Request#preload has been renamed to up.Request#background"}),up.migrate.renamedProperty(up.Request.prototype,"badResponseTime","lateDelay",{warning:"Property up.Request#badResponseTime has been renamed to up.Request#lateDelay"}),up.Response.prototype.isSuccess=function(){return up.migrate.deprecated("up.Response#isSuccess()","up.Response#ok"),this.ok},up.Response.prototype.getHeader=function(e){return up.migrate.deprecated("up.Response#getHeader()","up.Response#header()"),this.header(e)},up.Response.prototype.isError=function(){return up.migrate.deprecated("up.Response#isError()","!up.Response#ok"),!this.ok};const t=up.network.config.progressBar;up.network.config.patch(function(u){u.progressBar=function(){return function(){const t=up.EventListener.allNonDefault(document);return e.find(t,e=>"up:network:late"===e.eventType)}()?(up.migrate.warn("Disabled the default progress bar as you may have built a custom loading indicator with your up:network:late listener. Please set up.network.config.progressBar to true or false."),!1):t}}),up.network.shouldReduceRequests=function(){return up.migrate.warn("up.network.shouldReduceRequests() has been removed without replacement"),!1},up.network.config.patch(function(e){up.migrate.removedProperty(e,"badRTT",{label:"up.network.config"}),up.migrate.removedProperty(e,"badDownlink",{label:"up.network.config"}),up.migrate.renamedProperty(e,"badResponseTime","lateDelay",{label:"up.network.config"})})},67(){up.popup={attach:(e,t={})=>(e=up.fragment.get(e),up.migrate.deprecated("up.popup.attach(origin)","up.layer.open({ origin, mode: 'popup' })"),up.layer.open(Object.assign(Object.assign({},t),{origin:e,layer:"new",mode:"popup"}))),close:(e={})=>(up.migrate.deprecated("up.popup.close()","up.layer.dismiss()"),up.layer.dismiss(null,e),up.migrate.formerlyAsync("up.layer.dismiss()")),url:()=>(up.migrate.deprecated("up.popup.url()","up.layer.location"),up.layer.location),coveredUrl(){var e;return up.migrate.deprecated("up.popup.coveredUrl()","up.layer.parent.location"),null===(e=up.layer.parent)||void 0===e?void 0:e.location},get config(){return up.migrate.deprecated("up.popup.config","up.layer.config.popup"),up.layer.config.popup},contains:e=>(up.migrate.deprecated("up.popup.contains()","up.layer.contains()"),up.layer.contains(e)),isOpen:()=>(up.migrate.deprecated("up.popup.isOpen()","up.layer.isOverlay()"),up.layer.isOverlay()),sync:()=>(up.migrate.deprecated("up.popup.sync()","up.layer.sync()"),up.layer.sync())},Object.defineProperty(up.popup,"config",{enumerable:!1}),up.migrate.renamedEvent("up:popup:open","up:layer:open"),up.migrate.renamedEvent("up:popup:opened","up:layer:opened"),up.migrate.renamedEvent("up:popup:close","up:layer:dismiss"),up.migrate.renamedEvent("up:popup:closed","up:layer:dismissed"),up.migrate.targetMacro("up-popup",{"up-layer":"new popup"},'[up-layer="new popup"]')},269(){up.migrate.clearCacheFromXHR=function(e){let t=e.getResponseHeader("X-Up-Clear-Cache");if(t)return up.migrate.deprecated("X-Up-Clear-Cache","X-Up-Expire-Cache"),"false"!==t&&t},up.migrate.titleFromXHR=function(e){let t=e.getResponseHeader("X-Up-Title");if(t){if("false"===t)return!1;if('"'!==t[0]&&"'"!==t[0])return up.migrate.warn("X-Up-Title must now be a JSON-encoded string (got %o)",t),t}},up.protocol.config.patch(function(){const e=()=>up.migrate.deprecated("up.protocol.config.cspNonce","up.script.config.cspNonce");Object.defineProperty(this,"cspNonce",{configurable:!0,get:()=>(e(),up.script.config.cspNonce),set(t){e(),up.script.config.cspNonce=t}})})},162(){const e=up.element;let t;up.radio.config.patch(function(e){up.migrate.renamedProperty(e,"hungry","hungrySelectors",{label:"up.radio.config"})}),up.radio.config.patch(function(e){t=up.migrate.removedProperty(e,"pollEnabled",{value:!0,warning:"The configuration up.radio.config.pollEnabled has been removed. To disable polling, prevent up:fragment:poll instead."})}),up.on("up:fragment:poll",function(e){t[0]||e.preventDefault()}),up.compiler("[up-hungry][up-if-history]",function(t){e.booleanAttr(t,"up-if-history")&&(up.migrate.warn('Attribute [up-if-history] has been deprecated. Use [up-on-hungry="if (!renderOptions.history) event.preventDefault()"] instead (found in %o).',t),t.addEventListener("up:fragment:hungry",function(e){e.renderOptions.history||e.preventDefault()}))})},834(){const e=up.util,t=up.element;up.migrate.renamedPackage("syntax","script"),up.script.config.patch(function(e){up.migrate.renamedProperty(e,"callbackPolicy","evalCallbackPolicy",{warning:"There is no setting up.script.config.callbackPolicy. Use up.script.config.evalCallbackPolicy instead."})}),up.migrate.postCompile=function(t,u){let n;if(n=u.keep){up.migrate.warn('The { keep } option for up.compiler() has been removed. Have the compiler set an [up-keep] attribute instead (found in compiler for "%s").',u.selector);const o=e.isString(n)?n:"";for(let e of t)e.setAttribute("up-keep",o)}},up.migrate.targetMacro=function(u,n,o){up.macro(`[${u}]`,function(p){let r;up.migrate.warn("Attribute [%s] has been deprecated. Use %s instead (found in %o).",u,o,p);const a=e.copy(n);(r=p.getAttribute(u))?a["up-target"]=r:a["up-follow"]="",t.setMissingAttrs(p,a),p.removeAttribute(u)})},up.$compiler=function(...e){up.migrate.warn("up.$compiler() has been deprecated. Instead use up.compiler() with a callback that wraps the given native element in a jQuery collection.");let t=e.pop();return up.compiler(...e,function(e,...u){let n=jQuery(e);return t(n,...u)})},up.$macro=function(...e){up.migrate.warn("up.$macro() has been deprecated. Instead use up.macro() with a callback that wraps the given native element in a jQuery collection.");let t=e.pop();return up.macro(...e,function(e,...u){let n=jQuery(e);return t(n,...u)})},up.migrate.processHelloMeta=function(e,t){Object.defineProperty(e,"response",{get:()=>(up.migrate.warn("Accessing meta.response from a compiler has been deprecated without replacement. Avoid fragments that compile differently for the initial page load vs. subsequent fragment updates."),t)})};let u=up.hello,n="up.hello() is now async and returns a promise";class WasElementIsPromise extends Promise{}up.migrate.defineThrowingProps(WasElementIsPromise.prototype,Element.prototype,n),up.migrate.defineThrowingProps(WasElementIsPromise.prototype,Node.prototype,n),up.migrate.defineThrowingProps(WasElementIsPromise.prototype,EventTarget.prototype,n),up.hello=function(e,...t){let n=u(e,...t);return WasElementIsPromise.resolve(n)}},947(){up.migrate.renamedPackage("navigation","status"),up.migrate.renamedPackage("feedback","status"),up.status.config.patch(function(e){up.migrate.renamedProperty(e,"navs","navSelectors",{label:"up.status.config"})})},154(){up.macro("[up-tooltip]",function(e){up.migrate.warn("Attribute [up-tooltip] has been deprecated. Use a [title] attribute instead (found in %o).",e),up.element.setMissingAttr(e,"title",e.getAttribute("up-tooltip"))})},89(){up.util.only=function(e,...t){return up.migrate.deprecated("up.util.only(object, ...keys)","up.util.pick(object, keys)"),up.util.pick(e,t)},up.util.except=function(e,...t){return up.migrate.deprecated("up.util.except(object, ...keys)","up.util.omit(object, keys)"),up.util.omit(e,t)},up.util.parseUrl=function(...e){return up.migrate.deprecated("up.util.parseUrl()","up.util.parseURL()"),up.util.parseURL(...e)},up.util.any=function(...e){return up.migrate.deprecated("up.util.any()","up.util.some()"),up.util.some(...e)},up.util.all=function(...e){return up.migrate.deprecated("up.util.all()","up.util.every()"),up.util.every(...e)},up.util.detect=function(...e){return up.migrate.deprecated("up.util.detect()","up.util.find()"),up.util.find(...e)},up.util.select=function(...e){return up.migrate.deprecated("up.util.select()","up.util.filter()"),up.util.filter(...e)},up.util.setTimer=function(...e){return up.migrate.deprecated("up.util.setTimer()","up.util.timer()"),up.util.timer(...e)},up.util.escapeHtml=function(...e){return up.migrate.deprecated("up.util.escapeHtml()","up.util.escapeHTML()"),up.util.escapeHTML(...e)},up.util.selectorForElement=function(...e){return up.migrate.deprecated("up.util.selectorForElement()","up.fragment.toTarget()"),up.fragment.toTarget(...e)},up.util.nextFrame=function(...e){return up.migrate.deprecated("up.util.nextFrame()","up.util.task()"),up.util.task(...e)},up.util.times=function(e,t){up.migrate.deprecated("up.util.times()","a `for` loop");for(let u=0;u<e;u++)t()},up.util.assign=function(...e){return up.migrate.deprecated("up.util.assign()","Object.assign()"),Object.assign(...e)},up.util.values=function(...e){return up.migrate.deprecated("up.util.values()","Object.values()"),Object.values(...e)},up.util.microtask=function(e){return up.migrate.deprecated("up.util.microtask()","queueMicrotask()"),Promise.resolve().then(e)},up.migrate.splitAtOr=function(e){let t=e.split(/\s+or\s+/);if(t.length>=2)return up.migrate.warn(`Separating tokens by \`or\` has been deprecated. Use a comma (\`,\`) instead. Found in "${e}".`),t}},763(){up.migrate.renamedPackage("layout","viewport"),up.viewport.config.patch(function(e){up.migrate.renamedProperty(e,"viewports","viewportSelectors",{label:"up.viewport.config"}),up.migrate.renamedProperty(e,"fixedTop","fixedTopSelectors",{label:"up.viewport.config"}),up.migrate.renamedProperty(e,"fixedBottom","fixedBottomSelectors",{label:"up.viewport.config"}),up.migrate.renamedProperty(e,"anchoredRight","anchoredRightSelectors",{label:"up.viewport.config"}),up.migrate.renamedProperty(e,"snap","revealSnap",{label:"up.viewport.config"}),up.migrate.removedProperty(e,"scrollSpeed",{label:"up.viewport.config"})}),up.viewport.closest=function(...e){return up.migrate.deprecated("up.viewport.closest()","up.viewport.get()"),up.viewport.get(...e)},up.viewport.scroll=function(e,t,u={}){return up.migrate.deprecated("up.scroll()","Element#scrollTo()"),(e=up.fragment.get(e,u)).scrollTo(Object.assign(Object.assign({},u),{top:t})),up.migrate.formerlyAsync("up.scroll()")},up.scroll=up.viewport.scroll}},t={};function u(n){var o=t[n];if(void 0!==o)return o.exports;var p=t[n]={exports:{}};return e[n](p,p.exports,u),p.exports}up.framework.startExtension(),u(832),u(750),u(204),u(838),u(959),u(89),u(635),u(33),u(989),u(993),u(834),u(267),u(997),u(753),u(789),u(947),u(429),u(516),u(287),u(992),u(67),u(154),u(269),u(391),u(162),u(763),up.framework.stopExtension()})();
2
2
  //# sourceMappingURL=unpoly-migrate.min.js.map