(function() { up.framework.startExtension(); }).call(this); (function() { var u, slice = [].slice; u = up.util; /*** @module up.migrate */ up.migrate = (function() { var config, deprecated, fixEventType, fixEventTypes, fixKey, formerlyAsync, renamedEvent, renamedEvents, renamedPackage, renamedProperty, reset, warn, warnedMessages; config = new up.Config(function() { return { logLevel: 'warn' }; }); renamedProperty = function(object, oldKey, newKey) { var warning; warning = function() { return warn('Property { %s } has been renamed to { %s } (found in %o)', oldKey, newKey, object); }; return Object.defineProperty(object, oldKey, { get: function() { warning(); return this[newKey]; }, set: function(newValue) { warning(); return this[newKey] = newValue; } }); }; fixKey = function(object, oldKey, newKey) { if (u.isDefined(object[oldKey])) { warn('Property { %s } has been renamed to { %s } (found in %o)', oldKey, newKey, object); return u.renameKey(object, oldKey, newKey); } }; renamedEvents = {}; renamedEvent = function(oldType, newType) { return renamedEvents[oldType] = newType; }; fixEventType = function(eventType) { var newEventType; if (newEventType = renamedEvents[eventType]) { warn("Event " + eventType + " has been renamed to " + newEventType); return newEventType; } else { return eventType; } }; fixEventTypes = function(eventTypes) { return u.uniq(u.map(eventTypes, fixEventType)); }; renamedPackage = function(oldName, newName) { return Object.defineProperty(up, oldName, { get: function() { warn("up." + oldName + " has been renamed to up." + newName); return up[newName]; } }); }; warnedMessages = {}; warn = function() { var args, formattedMessage, message, ref; message = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : []; formattedMessage = u.sprintf.apply(u, [message].concat(slice.call(args))); if (!warnedMessages[formattedMessage]) { warnedMessages[formattedMessage] = true; return (ref = up.log)[config.logLevel].apply(ref, ['DEPRECATION', message].concat(slice.call(args))); } }; deprecated = function(deprecatedExpression, replacementExpression) { return warn(deprecatedExpression + " has been deprecated. Use " + replacementExpression + " instead."); }; formerlyAsync = function(label) { var oldThen, promise; promise = Promise.resolve(); oldThen = promise.then; promise.then = function() { warn(label + " is now a sync function"); return oldThen.apply(this, arguments); }; return promise; }; reset = function() { return config.reset(); }; up.on('up:framework:reset', reset); return { deprecated: deprecated, renamedPackage: renamedPackage, renamedProperty: renamedProperty, formerlyAsync: formerlyAsync, renamedEvent: renamedEvent, fixEventTypes: fixEventTypes, fixKey: fixKey, warn: warn, loaded: true, config: config }; })(); }).call(this); /*** @module up.util */ /*** Returns a copy of the given object that only contains the given keys. @function up.util.only @param {Object} object @param {Array} ...keys @deprecated Use `up.util.pick()` instead. */ (function() { var slice = [].slice; up.util.only = function() { var keys, object; object = arguments[0], keys = 2 <= arguments.length ? slice.call(arguments, 1) : []; up.migrate.deprecated('up.util.only(object, ...keys)', 'up.util.pick(object, keys)'); return up.util.pick(object, keys); }; /*** Returns a copy of the given object that contains all except the given keys. @function up.util.except @param {Object} object @param {Array} ...keys @deprecated Use `up.util.omit(object, keys)` (with an array argument) instead of `up.util.object(...keys)` (with rest arguments). */ up.util.except = function() { var keys, object; object = arguments[0], keys = 2 <= arguments.length ? slice.call(arguments, 1) : []; up.migrate.deprecated('up.util.except(object, ...keys)', 'up.util.omit(object, keys)'); return up.util.omit(object, keys); }; up.util.parseUrl = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.warn('up.util.parseUrl() has been renamed to up.util.parseURL()'); return (ref = up.util).parseURL.apply(ref, args); }; up.util.any = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.warn('up.util.any() has been renamed to up.util.some()'); return some.apply(null, args); }; up.util.all = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.warn('up.util.all() has been renamed to up.util.every()'); return (ref = up.util).every.apply(ref, args); }; up.util.detect = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.warn('up.util.detect() has been renamed to up.util.find()'); return (ref = up.util).find.apply(ref, args); }; up.util.select = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.warn('up.util.select() has been renamed to up.util.filter()'); return (ref = up.util).filter.apply(ref, args); }; up.util.setTimer = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.warn('up.util.setTimer() has been renamed to up.util.timer()'); return (ref = up.util).timer.apply(ref, args); }; up.util.escapeHtml = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.deprecated('up.util.escapeHtml', 'up.util.escapeHTML'); return (ref = up.util).escapeHTML.apply(ref, args); }; up.util.selectorForElement = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.warn('up.util.selectorForElement() has been renamed to up.fragment.toTarget()'); return (ref = up.fragment).toTarget.apply(ref, args); }; up.util.nextFrame = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.warn('up.util.nextFrame() has been renamed to up.util.task()'); return (ref = up.util).task.apply(ref, args); }; }).call(this); /*** @module up.element */ /*** Returns the first descendant element matching the given selector. @function up.element.first @param {Element} [parent=document] The parent element whose descendants to search. If omitted, all elements in the `document` will be searched. @param {string} selector The CSS selector to match. @return {Element|undefined|null} The first element matching the selector. Returns `null` or `undefined` if no element macthes. @deprecated Use `up.element.get()` instead. */ (function() { var slice = [].slice; up.element.first = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.deprecated('up.element.first()', 'up.element.get()'); return (ref = up.element).get.apply(ref, args); }; up.element.createFromHtml = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.deprecated('up.element.createFromHtml', 'up.element.createFromHTML'); return (ref = up.element).createFromHTML.apply(ref, args); }; }).call(this); /*** @module up.event */ (function() { var slice = [].slice; up.migrate.renamedPackage('bus', 'event'); /*** [Emits an event](/up.emit) and returns whether no listener has prevented the default action. \#\#\# Example ```javascript if (up.event.nobodyPrevents('disk:erase')) { Disk.erase() }) ``` @function up.event.nobodyPrevents @param {string} eventType @param {Object} eventProps @return {boolean} whether no listener has prevented the default action @deprecated Use `!up.emit(type).defaultPrevented` instead. */ up.event.nobodyPrevents = function() { var args, event; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.deprecated('up.event.nobodyPrevents(type)', '!up.emit(type).defaultPrevented'); event = up.emit.apply(up, args); return !event.defaultPrevented; }; }).call(this); (function() { var e, u; u = up.util; e = up.element; up.migrate.postCompile = function(elements, compiler) { var element, i, keepValue, len, results, value; if (keepValue = compiler.keep) { up.migrate.warn('The { keep: true } option for up.compiler() has been removed. Have the compiler set [up-keep] attribute instead.'); value = u.isString(keepValue) ? keepValue : ''; results = []; for (i = 0, len = elements.length; i < len; i++) { element = elements[i]; results.push(element.setAttribute('up-keep', value)); } return results; } }; up.migrate.targetMacro = function(queryAttr, fixedResultAttrs, callback) { return up.macro("[" + queryAttr + "]", function(link) { var optionalTarget, resultAttrs; resultAttrs = u.copy(fixedResultAttrs); if (optionalTarget = link.getAttribute(queryAttr)) { resultAttrs['up-target'] = optionalTarget; } else { resultAttrs['up-follow'] = ''; } e.setMissingAttrs(link, resultAttrs); link.removeAttribute(queryAttr); return typeof callback === "function" ? callback() : void 0; }); }; }).call(this); /*** @module up.form */ (function() { up.migrate.renamedProperty(up.form.config, 'fields', 'fieldSelectors'); up.migrate.renamedProperty(up.form.config, 'submitButtons', 'submitButtonSelectors'); }).call(this); (function() { var u, slice = [].slice; u = up.util; /*** @module up.fragment */ up.migrate.renamedPackage('flow', 'fragment'); up.migrate.renamedPackage('dom', 'fragment'); up.migrate.renamedProperty(up.fragment.config, 'fallbacks', 'mainTargets'); up.migrate.handleResponseDocOptions = function(docOptions) { return up.migrate.fixKey(docOptions, 'html', 'document'); }; /*** Replaces elements on the current page with corresponding elements from a new page fetched from the server. @function up.replace @param {string|Element|jQuery} target The CSS selector to update. You can also pass a DOM element or jQuery element here, in which case a selector will be inferred from the element's class and ID. @param {string} url The URL to fetch from the server. @param {Object} [options] See `options` for `up.render()`. @return {Promise} A promise that fulfills when the page has been updated. @deprecated Use `up.render()` or `up.navigate()` instead. */ up.replace = function(target, url, options) { up.migrate.deprecated('up.replace(target, url)', 'up.navigate(target, { url })'); return up.navigate(u.merge(options, { target: target, url: url })); }; /*** Updates a selector on the current page with the same selector from the given HTML string. \#\#\# Example Let's say your current HTML looks like this:
old one
old two
We now replace the second `
`, using an HTML string as the source: html = '
new one
' + '
new two
'; up.extract('.two', html) Unpoly looks for the selector `.two` in the strings and updates its contents in the current page. The current page now looks like this:
old one
new two
Note how only `.two` has changed. The update for `.one` was discarded, since it didn't match the selector. @function up.extract @param {string|Element|jQuery} target @param {string} html @param {Object} [options] See options for [`up.render()`](/up.render). @return {Promise} A promise that will be fulfilled when the selector was updated. @deprecated Use `up.render()` or `up.navigate()` instead. */ up.extract = function(target, document, options) { up.migrate.deprecated('up.extract(target, document)', 'up.navigate(target, { document })'); return up.navigate(u.merge(options, { target: target, document: document })); }; /*** Returns the first element matching the given selector, but ignores elements that are being [destroyed](/up.destroy) or that are being removed by a [transition](/up.morph). Returns `undefined` if no element matches these conditions. @function up.fragment.first @param {Element|jQuery} [root=document] The root element for the search. Only the root's children will be matched. May be omitted to search through all elements in the `document`. @param {string} selector The selector to match @param {string} [options.layer='current'] The the layer in which to find the element. @see layer-option @param {string|Element|jQuery} [options.origin] An second element or selector that can be referenced as `:origin` in the first selector: @return {Element|undefined} The first element that is neither a ghost or being destroyed, or `undefined` if no such element was found. @deprecated Use `up.fragment.get()` instead. */ up.fragment.first = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.deprecated('up.fragment.first()', 'up.fragment.get()'); return (ref = up.fragment).get.apply(ref, args); }; up.first = up.fragment.first; up.migrate.handleScrollOptions = function(options) { if (u.isUndefined(options.scroll)) { if (u.isString(options.reveal)) { up.migrate.deprecated("Option { reveal: '" + options.reveal + "' }", "{ scroll: '" + options.reveal + "' }"); options.scroll = options.reveal; } else if (options.reveal === true) { up.migrate.deprecated('Option { reveal: true }', "{ scroll: 'target' }"); options.scroll = 'target'; } else if (options.reveal === false) { up.migrate.deprecated('Option { reveal: false }', "{ scroll: false }"); options.scroll = false; } if (u.isDefined(options.resetScroll)) { up.migrate.deprecated('Option { resetScroll: true }', "{ scroll: 'reset' }"); options.scroll = 'teset'; } if (u.isDefined(options.restoreScroll)) { up.migrate.deprecated('Option { restoreScroll: true }', "{ scroll: 'restore' }"); return options.scroll = 'restore'; } } }; up.migrate.handleHistoryOption = function(options) { if (u.isString(options.history) && options.history !== 'auto') { up.migrate.warn("Passing a URL as { history } option is deprecated. Pass it as { location } instead."); options.location = options.history; return options.history = 'auto'; } }; up.migrate.handleRenderOptions = function(options) { var i, len, prop, ref, results; up.migrate.handleHistoryOption(options); ref = ['target', 'origin']; results = []; for (i = 0, len = ref.length; i < len; i++) { prop = ref[i]; if (u.isJQuery(options[prop])) { up.migrate.warn('Passing a jQuery collection as { %s } is deprecated. Pass it as a native element instead.', prop); results.push(options[prop] = up.element.get(options[prop])); } else { results.push(void 0); } } return results; }; }).call(this); /*** @module up.history */ (function() { up.migrate.renamedProperty(up.history.config, 'popTargets', 'restoreTargets'); /*** Returns a normalized URL for the current history entry. @function up.history.url @return {string} @deprecated Use the `up.history.location` property instead. */ up.history.url = function() { up.migrate.deprecated('up.history.url()', 'up.history.location'); return 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'); }).call(this); /*** @module up.feedback */ (function() { up.migrate.renamedPackage('navigation', 'feedback'); up.migrate.renamedProperty(up.feedback.config, 'navs', 'navSelectors'); }).call(this); /*** @module up.link */ (function() { up.migrate.parseFollowOptions = function(parser) { parser.string('flavor'); parser.string('width'); parser.string('height'); parser.boolean('closable'); parser.booleanOrString('reveal'); parser.boolean('resetScroll'); return parser.boolean('restoreScroll'); }; /*** [Follows](/up.follow) this link as fast as possible. This is done by: - [Following the link through AJAX](/a-up-follow) instead of a full page load - [Preloading the link's destination URL](/a-up-preload) - [Triggering the link on `mousedown`](/a-up-instant) instead of on `click` \#\#\# Example Use `[up-dash]` like this: User list This is shorthand for: User list @selector a[up-dash] @param [up-dash='body'] The CSS selector to replace Inside the CSS selector you may refer to this link as `&` ([like in Sass](https://sass-lang.com/documentation/file.SASS_REFERENCE.html#parent-selector)). @deprecated To accelerate all links use `up.link.config.instantSelectors` and `up.link.config.preloadSelectors`. */ up.migrate.targetMacro('up-dash', { 'up-preload': '', 'up-instant': '' }, function() { return up.migrate.deprecated('a[up-dash]', 'up.link.config.instantSelectors or up.link.config.preloadSelectors'); }); }).call(this); /*** @module up.layer */ (function() { up.migrate.handleLayerOptions = function(options) { var dimensionKey, i, len, ref; up.migrate.fixKey(options, 'flavor', 'mode'); up.migrate.fixKey(options, 'closable', 'dismissable'); up.migrate.fixKey(options, 'closeLabel', 'dismissLabel'); ref = ['width', 'maxWidth', 'height']; for (i = 0, len = ref.length; i < len; i++) { dimensionKey = ref[i]; if (options[dimensionKey]) { up.migrate.warn("Layer option { " + dimensionKey + " } has been removed. Use { size } or { class } instead."); } } if (options.sticky) { up.migrate.warn('Layer option { sticky } has been removed. Give links an [up-peel=false] attribute to prevent layer dismissal on click.'); } if (options.template) { up.migrate.warn('Layer option { template } has been removed. Use { class } or modify the layer HTML on up:layer:open.'); } if (options.layer === 'page') { up.migrate.warn("Option { layer: 'page' } has been renamed to { layer: 'root' }."); options.layer = 'root'; } if (options.layer === 'modal' || options.layer === 'popup') { up.migrate.warn("Option { layer: '" + options.layer + "' } has been removed. Did you mean { layer: 'overlay' }?"); return options.layer = 'overlay'; } }; up.migrate.handleTetherOptions = function(options) { var align, position, ref; ref = options.position.split('-'), position = ref[0], align = ref[1]; if (align) { up.migrate.warn('The position value %o is deprecated. Use %o instead.', options.position, { position: position, align: align }); options.position = position; return options.align = align; } }; /*** When this element is clicked, closes a currently open overlay. Does nothing if no overlay is currently open. To make a link that closes the current overlay, but follows to a fallback destination on the root layer: Okay @selector a[up-close] @deprecated Use `a[up-dismiss]` instead. */ up.migrate.registerLayerCloser = function(layer) { return layer.registerClickCloser('up-close', (function(_this) { return function(value, closeOptions) { up.migrate.deprecated('[up-close]', '[up-dismiss]'); return layer.dismiss(value, closeOptions); }; })(this)); }; up.migrate.handleLayerConfig = function(config) { return up.migrate.fixKey(config, 'history', 'historyVisible'); }; }).call(this); /*** @module up.layer */ (function() { var FLAVORS_ERROR, u; u = up.util; 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.'); up.modal = u.literal({ /*** Opens a modal overlay for the given URL. @function up.modal.visit @param {string} url The URL to load. @param {Object} options See options for `up.render()`. @deprecated Use `up.layer.open({ url, mode: "modal" })` instead. */ visit: function(url, options) { if (options == null) { options = {}; } up.migrate.deprecated('up.modal.visit(url)', 'up.layer.open({ url, mode: "modal" })'); return up.layer.open(u.merge(options, { url: url, mode: 'modal' })); }, /*** Opens the given link's destination in a modal overlay. @function up.modal.follow @param {Element|jQuery|string} linkOrSelector The link to follow. @param {string} [options] See options for `up.render()`. @return {Promise} A promise that will be fulfilled when the modal has been opened. @deprecated Use `up.follow(link, { layer: "modal" })` instead. */ follow: function(link, options) { if (options == null) { options = {}; } up.migrate.deprecated('up.modal.follow(link)', 'up.follow(link, { layer: "modal" })'); return up.follow(link, u.merge(options, { layer: 'modal' })); }, /*** [Extracts](/up.extract) the given CSS selector from the given HTML string and opens the results in a modal overlay. @function up.modal.extract @param {string} selector The CSS selector to extract from the HTML. @param {string} document The HTML containing the modal content. @param {Object} options See options for [`up.modal.follow()`](/up.modal.follow). @return {Promise} A promise that will be fulfilled when the modal has been opened. @deprecated Use `up.layer.open({ document, mode: "modal" })` instead. */ extract: function(target, html, options) { if (options == null) { options = {}; } up.migrate.deprecated('up.modal.extract(target, document)', 'up.layer.open({ document, mode: "modal" })'); return up.layer.open(u.merge(options, { target: target, html: html, layer: 'modal' })); }, /*** Closes a currently open overlay. @function up.modal.close @param {Object} options @return {Promise} @deprecated Use `up.layer.dismiss()` instead. */ close: function(options) { if (options == null) { options = {}; } up.migrate.deprecated('up.modal.close()', 'up.layer.dismiss()'); up.layer.dismiss(null, options); return up.migrate.formerlyAsync('up.layer.dismiss()'); }, /*** Returns the location URL of the fragment displayed in the current overlay. @function up.modal.url @return {string} @deprecated Use `up.layer.location` instead. */ url: function() { up.migrate.deprecated('up.modal.url()', 'up.layer.location'); return up.layer.location; }, /*** Returns the location URL of the layer behind the current overlay. @function up.modal.coveredUrl @return {string} @deprecated Use `up.layer.parent.location` instead. */ coveredUrl: function() { var ref; up.migrate.deprecated('up.modal.coveredUrl()', 'up.layer.parent.location'); return (ref = up.layer.parent) != null ? ref.location : void 0; }, /*** Sets default options for future modal overlays. @property up.modal.config @deprecated Use `up.layer.config.modal` instead. */ get_config: function() { up.migrate.deprecated('up.modal.config', 'up.layer.config.modal'); return up.layer.config.modal; }, /*** Returns whether the given element or selector is contained within the current layer. @function up.modal.contains @param {string} elementOrSelector The element to test @return {boolean} @deprecated Use `up.layer.contains()` instead. */ contains: function(element) { up.migrate.deprecated('up.modal.contains()', 'up.layer.contains()'); return up.layer.contains(element); }, /*** Returns whether an overlay is currently open. @function up.modal.isOpen @return {boolean} @deprecated Use `up.layer.isOverlay()` instead. */ isOpen: function() { up.migrate.deprecated('up.modal.isOpen()', 'up.layer.isOverlay()'); return up.layer.isOverlay(); }, get_flavors: function() { throw FLAVORS_ERROR; }, flavor: function() { throw FLAVORS_ERROR; } }); 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'); /*** Clicking this link will load the destination via AJAX and open the given selector in a modal overlay. @selector a[up-modal] @params-note All attributes for `a[up-layer=new]` may also be used. @param {string} up-modal The CSS selector that will be extracted from the response and displayed in a modal dialog. @deprecated Use `a[up-layer="new modal"]` instead. */ up.migrate.targetMacro('up-modal', { 'up-layer': 'new modal' }, function() { return up.migrate.deprecated('a[up-modal]', 'a[up-layer="new modal"]'); }); /*** Clicking this link will load the destination via AJAX and open the given selector in a modal drawer that slides in from the edge of the screen. @selector a[up-drawer] @params-note All attributes for `a[up-layer=new]` may also be used. @param {string} up-drawer The CSS selector that will be extracted from the response and displayed in a modal dialog. @deprecated Use `a[up-layer="new drawer"]` instead. */ up.migrate.targetMacro('up-drawer', { 'up-layer': 'new drawer' }, function() { return up.migrate.deprecated('a[up-drawer]', 'a[up-layer="new drawer"]'); }); }).call(this); /*** @module up.layer */ (function() { var e, u; u = up.util; e = up.element; up.popup = u.literal({ /*** Attaches a popup overlay to the given element or selector. @function up.popup.attach @param {Element|jQuery|string} anchor The element to which the popup will be attached. @param {Object} [options] See options for `up.render()`. @return {Promise} @deprecated Use `up.layer.open({ origin, layer: 'popup' })` instead. */ attach: function(origin, options) { if (options == null) { options = {}; } origin = up.fragment.get(origin); up.migrate.deprecated('up.popup.attach(origin)', "up.layer.open({ origin, layer: 'popup' })"); return up.layer.open(u.merge(options, { origin: origin, layer: 'popup' })); }, /*** Closes a currently open overlay. @function up.popup.close @param {Object} options @return {Promise} @deprecated Use `up.layer.dismiss()` instead. */ close: function(options) { if (options == null) { options = {}; } up.migrate.deprecated('up.popup.close()', 'up.layer.dismiss()'); return up.layer.dismiss(null, options); }, /*** Returns the location URL of the fragment displayed in the current overlay. @function up.popup.url @return {string} @deprecated Use `up.layer.location` instead. */ url: function() { up.migrate.deprecated('up.popup.url()', 'up.layer.location'); return up.layer.location; }, /*** Returns the location URL of the layer behind the current overlay. @function up.popup.coveredUrl @return {string} @deprecated Use `up.layer.parent.location` instead. */ coveredUrl: function() { var ref; up.migrate.deprecated('up.popup.coveredUrl()', 'up.layer.parent.location'); return (ref = up.layer.parent) != null ? ref.location : void 0; }, /*** Sets default options for future popup overlays. @property up.popup.config @deprecated Use `up.layer.config.popup` instead. */ get_config: function() { up.migrate.deprecated('up.popup.config', 'up.layer.config.popup'); return up.layer.config.popup; }, /*** Returns whether the given element or selector is contained within the current layer. @function up.popup.contains @param {string} elementOrSelector The element to test @return {boolean} @deprecated Use `up.layer.contains()` instead. */ contains: function(element) { up.migrate.deprecated('up.popup.contains()', 'up.layer.contains()'); return up.layer.contains(element); }, /*** Returns whether an overlay is currently open. @function up.popup.isOpen @return {boolean} @deprecated Use `up.layer.isOverlay()` instead. */ isOpen: function() { up.migrate.deprecated('up.popup.isOpen()', 'up.layer.isOverlay()'); return up.layer.isOverlay(); }, sync: function() { up.migrate.deprecated('up.popup.sync()', 'up.layer.sync()'); return 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' }, function() { return up.migrate.deprecated('[up-popup]', '[up-layer="new popup"]'); }); }).call(this); /*** Tooltips ======== Unpoly used to come with a basic tooltip implementation. This feature is now deprecated. @module up.tooltip */ (function() { up.tooltip = (function() { return up.macro('[up-tooltip]', function(opener) { up.migrate.warn('[up-tooltip] has been deprecated. A [title] was set instead.'); return up.element.setMissingAttr(opener, 'title', opener.getAttribute('up-tooltip')); }); })(); }).call(this); (function() { var preloadDelayMoved, u, slice = [].slice; u = up.util; /*** @module up.network */ 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:fatal'); up.migrate.renamedEvent('up:proxy:aborted', 'up:request:aborted'); up.migrate.renamedEvent('up:proxy:slow', 'up:request:late'); up.migrate.renamedEvent('up:proxy:recover', 'up:request:recover'); preloadDelayMoved = function() { return up.migrate.deprecated('up.proxy.config.preloadDelay', 'up.link.config.preloadDelay'); }; Object.defineProperty(up.network.config, 'preloadDelay', { get: function() { preloadDelayMoved(); return up.link.config.preloadDelay; }, set: function(value) { preloadDelayMoved(); return up.link.config.preloadDelay = value; } }); up.migrate.renamedProperty(up.network.config, 'maxRequests', 'concurrency'); up.migrate.renamedProperty(up.network.config, 'slowDelay', 'badResponseTime'); up.migrate.handleRequestOptions = function(options) { return up.migrate.fixKey(options, 'data', 'params'); }; /*** Makes an AJAX request to the given URL and caches the response. The function returns a promise that fulfills with the response text. \#\#\# Example ``` up.ajax('/search', { params: { query: 'sunshine' } }).then(function(text) { console.log('The response text is %o', text) }).catch(function() { console.error('The request failed') }) ``` @function up.ajax @param {string} [url] The URL for the request. Instead of passing the URL as a string argument, you can also pass it as an `{ url }` option. @param {Object} [options] See options for `up.request()`. @return {Promise} A promise for the response text. @deprecated Use `up.request()` instead. */ up.ajax = function() { var args, pickResponseText; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.deprecated('up.ajax()', 'up.request()'); pickResponseText = function(response) { return response.text; }; return up.request.apply(up, args).then(pickResponseText); }; /*** Removes all cache entries. @function up.proxy.clear @deprecated Use `up.cache.clear()` instead. */ up.network.clear = function() { up.migrate.deprecated('up.proxy.clear()', 'up.cache.clear()'); return up.cache.clear(); }; up.network.preload = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.deprecated('up.proxy.preload(link)', 'up.link.preload(link)'); return (ref = up.link).preload.apply(ref, args); }; /*** @class up.Request */ up.Request.prototype.navigate = function() { up.migrate.deprecated('up.Request#navigate()', 'up.Request#loadPage()'); return this.loadPage(); }; /*** @class up.Response */ /*** Returns whether the server responded with a 2xx HTTP status. @function up.Response#isSuccess @return {boolean} @deprecated Use `up.Response#ok` instead. */ up.Response.prototype.isSuccess = function() { up.migrate.deprecated('up.Response#isSuccess()', 'up.Response#ok'); return this.ok; }; /*** Returns whether the response was not [successful](/up.Response.prototype.ok). @function up.Response#isError @return {boolean} @deprecated Use `!up.Response#ok` instead. */ up.Response.prototype.isError = function() { up.migrate.deprecated('up.Response#isError()', '!up.Response#ok'); return !this.ok; }; }).call(this); /*** @module up.radio */ (function() { up.migrate.renamedProperty(up.radio.config, 'hungry', 'hungrySelectors'); }).call(this); /*** @module up.viewport */ (function() { var slice = [].slice; up.migrate.renamedPackage('layout', 'viewport'); up.migrate.renamedProperty(up.viewport.config, 'viewports', 'viewportSelectors'); up.migrate.renamedProperty(up.viewport.config, 'snap', 'revealSnap'); /*** Returns the scrolling container for the given element. Returns the [document's scrolling element](/up.viewport.root) if no closer viewport exists. @function up.viewport.get @param {string|Element|jQuery} target @return {Element} @deprecated Use `up.viewport.get()` instead. */ up.viewport.closest = function() { var args, ref; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; up.migrate.deprecated('up.viewport.closest()', 'up.viewport.get()'); return (ref = up.viewport).get.apply(ref, args); }; }).call(this); (function() { up.framework.stopExtension(); }).call(this); (function() { }).call(this);