diff options
Diffstat (limited to 'js/jquery-migrate-3.5.2.js')
| -rwxr-xr-x | js/jquery-migrate-3.5.2.js | 1031 |
1 files changed, 0 insertions, 1031 deletions
diff --git a/js/jquery-migrate-3.5.2.js b/js/jquery-migrate-3.5.2.js deleted file mode 100755 index 91ba673..0000000 --- a/js/jquery-migrate-3.5.2.js +++ /dev/null @@ -1,1031 +0,0 @@ -/*! - * jQuery Migrate - v3.5.2 - 2024-07-17T22:31Z - * Copyright OpenJS Foundation and other contributors - */ -(function(factory) { - "use strict"; - - if (typeof define === "function" && define.amd) { - - // AMD. Register as an anonymous module. - define(["jquery"], function(jQuery) { - return factory(jQuery, window); - }); - } else if (typeof module === "object" && module.exports) { - - // Node/CommonJS - // eslint-disable-next-line no-undef - module.exports = factory(require("jquery"), window); - } else { - - // Browser globals - factory(jQuery, window); - } -})(function(jQuery, window) { - "use strict"; - - jQuery.migrateVersion = "3.5.2"; - - // Returns 0 if v1 == v2, -1 if v1 < v2, 1 if v1 > v2 - function compareVersions(v1, v2) { - var i, - rVersionParts = /^(\d+)\.(\d+)\.(\d+)/, - v1p = rVersionParts.exec(v1) || [], - v2p = rVersionParts.exec(v2) || []; - - for (i = 1; i <= 3; i++) { - if (+v1p[i] > +v2p[i]) { - return 1; - } - if (+v1p[i] < +v2p[i]) { - return -1; - } - } - return 0; - } - - function jQueryVersionSince(version) { - return compareVersions(jQuery.fn.jquery, version) >= 0; - } - - // A map from disabled patch codes to `true`. This should really - // be a `Set` but those are unsupported in IE. - var disabledPatches = Object.create(null); - - // Don't apply patches for specified codes. Helpful for code bases - // where some Migrate warnings have been addressed and it's desirable - // to avoid needless patches or false positives. - jQuery.migrateDisablePatches = function() { - var i; - for (i = 0; i < arguments.length; i++) { - disabledPatches[arguments[i]] = true; - } - }; - - // Allow enabling patches disabled via `jQuery.migrateDisablePatches`. - // Helpful if you want to disable a patch only for some code that won't - // be updated soon to be able to focus on other warnings - and enable it - // immediately after such a call: - // ```js - // jQuery.migrateDisablePatches( "workaroundA" ); - // elem.pluginViolatingWarningA( "pluginMethod" ); - // jQuery.migrateEnablePatches( "workaroundA" ); - // ``` - jQuery.migrateEnablePatches = function() { - var i; - for (i = 0; i < arguments.length; i++) { - delete disabledPatches[arguments[i]]; - } - }; - - jQuery.migrateIsPatchEnabled = function(patchCode) { - return !disabledPatches[patchCode]; - }; - - (function() { - - // Support: IE9 only - // IE9 only creates console object when dev tools are first opened - // IE9 console is a host object, callable but doesn't have .apply() - if (!window.console || !window.console.log) { - return; - } - - // Need jQuery 3.x-4.x and no older Migrate loaded - if (!jQuery || !jQueryVersionSince("3.0.0") || - jQueryVersionSince("5.0.0")) { - window.console.log("JQMIGRATE: jQuery 3.x-4.x REQUIRED"); - } - if (jQuery.migrateWarnings) { - window.console.log("JQMIGRATE: Migrate plugin loaded multiple times"); - } - - // Show a message on the console so devs know we're active - window.console.log("JQMIGRATE: Migrate is installed" + - (jQuery.migrateMute ? "" : " with logging active") + - ", version " + jQuery.migrateVersion); - - })(); - - var warnedAbout = {}; - - // By default each warning is only reported once. - jQuery.migrateDeduplicateWarnings = true; - - // List of warnings already given; public read only - jQuery.migrateWarnings = []; - - // Set to false to disable traces that appear with warnings - if (jQuery.migrateTrace === undefined) { - jQuery.migrateTrace = true; - } - - // Forget any warnings we've already given; public - jQuery.migrateReset = function() { - warnedAbout = {}; - jQuery.migrateWarnings.length = 0; - }; - - function migrateWarn(code, msg) { - var console = window.console; - if (jQuery.migrateIsPatchEnabled(code) && - (!jQuery.migrateDeduplicateWarnings || !warnedAbout[msg])) { - warnedAbout[msg] = true; - jQuery.migrateWarnings.push(msg + " [" + code + "]"); - if (console && console.warn && !jQuery.migrateMute) { - console.warn("JQMIGRATE: " + msg); - if (jQuery.migrateTrace && console.trace) { - console.trace(); - } - } - } - } - - function migrateWarnProp(obj, prop, value, code, msg) { - Object.defineProperty(obj, prop, { - configurable: true, - enumerable: true, - get: function() { - migrateWarn(code, msg); - return value; - }, - set: function(newValue) { - migrateWarn(code, msg); - value = newValue; - } - }); - } - - function migrateWarnFuncInternal(obj, prop, newFunc, code, msg) { - var finalFunc, - origFunc = obj[prop]; - - obj[prop] = function() { - - // If `msg` not provided, do not warn; more sophisticated warnings - // logic is most likely embedded in `newFunc`, in that case here - // we just care about the logic choosing the proper implementation - // based on whether the patch is disabled or not. - if (msg) { - migrateWarn(code, msg); - } - - // Since patches can be disabled & enabled dynamically, we - // need to decide which implementation to run on each invocation. - finalFunc = jQuery.migrateIsPatchEnabled(code) ? - newFunc : - - // The function may not have existed originally so we need a fallback. - (origFunc || jQuery.noop); - - return finalFunc.apply(this, arguments); - }; - } - - function migratePatchAndWarnFunc(obj, prop, newFunc, code, msg) { - if (!msg) { - throw new Error("No warning message provided"); - } - return migrateWarnFuncInternal(obj, prop, newFunc, code, msg); - } - - function migratePatchFunc(obj, prop, newFunc, code) { - return migrateWarnFuncInternal(obj, prop, newFunc, code); - } - - if (window.document.compatMode === "BackCompat") { - - // jQuery has never supported or tested Quirks Mode - migrateWarn("quirks", "jQuery is not compatible with Quirks Mode"); - } - - var findProp, - class2type = {}, - oldInit = jQuery.fn.init, - oldFind = jQuery.find, - - rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/, - rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g, - - // Require that the "whitespace run" starts from a non-whitespace - // to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position. - rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; - - migratePatchFunc(jQuery.fn, "init", function(arg1) { - var args = Array.prototype.slice.call(arguments); - - if (jQuery.migrateIsPatchEnabled("selector-empty-id") && - typeof arg1 === "string" && arg1 === "#") { - - // JQuery( "#" ) is a bogus ID selector, but it returned an empty set - // before jQuery 3.0 - migrateWarn("selector-empty-id", "jQuery( '#' ) is not a valid selector"); - args[0] = []; - } - - return oldInit.apply(this, args); - }, "selector-empty-id"); - - // This is already done in Core but the above patch will lose this assignment - // so we need to redo it. It doesn't matter whether the patch is enabled or not - // as the method is always going to be a Migrate-created wrapper. - jQuery.fn.init.prototype = jQuery.fn; - - migratePatchFunc(jQuery, "find", function(selector) { - var args = Array.prototype.slice.call(arguments); - - // Support: PhantomJS 1.x - // String#match fails to match when used with a //g RegExp, only on some strings - if (typeof selector === "string" && rattrHashTest.test(selector)) { - - // The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0 - // First see if qS thinks it's a valid selector, if so avoid a false positive - try { - window.document.querySelector(selector); - } catch (err1) { - - // Didn't *look* valid to qSA, warn and try quoting what we think is the value - selector = selector.replace(rattrHashGlob, function(_, attr, op, value) { - return "[" + attr + op + "\"" + value + "\"]"; - }); - - // If the regexp *may* have created an invalid selector, don't update it - // Note that there may be false alarms if selector uses jQuery extensions - try { - window.document.querySelector(selector); - migrateWarn("selector-hash", - "Attribute selector with '#' must be quoted: " + args[0]); - args[0] = selector; - } catch (err2) { - migrateWarn("selector-hash", - "Attribute selector with '#' was not fixed: " + args[0]); - } - } - } - - return oldFind.apply(this, args); - }, "selector-hash"); - - // Copy properties attached to original jQuery.find method (e.g. .attr, .isXML) - for (findProp in oldFind) { - if (Object.prototype.hasOwnProperty.call(oldFind, findProp)) { - jQuery.find[findProp] = oldFind[findProp]; - } - } - - // The number of elements contained in the matched element set - migratePatchAndWarnFunc(jQuery.fn, "size", function() { - return this.length; - }, "size", - "jQuery.fn.size() is deprecated and removed; use the .length property"); - - migratePatchAndWarnFunc(jQuery, "parseJSON", function() { - return JSON.parse.apply(null, arguments); - }, "parseJSON", - "jQuery.parseJSON is deprecated; use JSON.parse"); - - migratePatchAndWarnFunc(jQuery, "holdReady", jQuery.holdReady, - "holdReady", "jQuery.holdReady is deprecated"); - - migratePatchAndWarnFunc(jQuery, "unique", jQuery.uniqueSort, - "unique", "jQuery.unique is deprecated; use jQuery.uniqueSort"); - - // Now jQuery.expr.pseudos is the standard incantation - migrateWarnProp(jQuery.expr, "filters", jQuery.expr.pseudos, "expr-pre-pseudos", - "jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"); - migrateWarnProp(jQuery.expr, ":", jQuery.expr.pseudos, "expr-pre-pseudos", - "jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos"); - - // Prior to jQuery 3.1.1 there were internal refs so we don't warn there - if (jQueryVersionSince("3.1.1")) { - migratePatchAndWarnFunc(jQuery, "trim", function(text) { - return text == null ? - "" : - (text + "").replace(rtrim, "$1"); - }, "trim", - "jQuery.trim is deprecated; use String.prototype.trim"); - } - - // Prior to jQuery 3.2 there were internal refs so we don't warn there - if (jQueryVersionSince("3.2.0")) { - migratePatchAndWarnFunc(jQuery, "nodeName", function(elem, name) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, "nodeName", - "jQuery.nodeName is deprecated"); - - migratePatchAndWarnFunc(jQuery, "isArray", Array.isArray, "isArray", - "jQuery.isArray is deprecated; use Array.isArray" - ); - } - - if (jQueryVersionSince("3.3.0")) { - - migratePatchAndWarnFunc(jQuery, "isNumeric", - function(obj) { - - // As of jQuery 3.0, isNumeric is limited to - // strings and numbers (primitives or objects) - // that can be coerced to finite numbers (gh-2662) - var type = typeof obj; - return (type === "number" || type === "string") && - - // parseFloat NaNs numeric-cast false positives ("") - // ...but misinterprets leading-number strings, e.g. hex literals ("0x...") - // subtraction forces infinities to NaN - !isNaN(obj - parseFloat(obj)); - }, "isNumeric", - "jQuery.isNumeric() is deprecated" - ); - - // Populate the class2type map - jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol". - split(" "), - function(_, name) { - class2type["[object " + name + "]"] = name.toLowerCase(); - }); - - migratePatchAndWarnFunc(jQuery, "type", function(obj) { - if (obj == null) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[Object.prototype.toString.call(obj)] || "object" : - typeof obj; - }, "type", - "jQuery.type is deprecated"); - - migratePatchAndWarnFunc(jQuery, "isFunction", - function(obj) { - return typeof obj === "function"; - }, "isFunction", - "jQuery.isFunction() is deprecated"); - - migratePatchAndWarnFunc(jQuery, "isWindow", - function(obj) { - return obj != null && obj === obj.window; - }, "isWindow", - "jQuery.isWindow() is deprecated" - ); - } - - // Support jQuery slim which excludes the ajax module - if (jQuery.ajax) { - - var oldAjax = jQuery.ajax, - rjsonp = /(=)\?(?=&|$)|\?\?/; - - migratePatchFunc(jQuery, "ajax", function() { - var jQXHR = oldAjax.apply(this, arguments); - - // Be sure we got a jQXHR (e.g., not sync) - if (jQXHR.promise) { - migratePatchAndWarnFunc(jQXHR, "success", jQXHR.done, "jqXHR-methods", - "jQXHR.success is deprecated and removed"); - migratePatchAndWarnFunc(jQXHR, "error", jQXHR.fail, "jqXHR-methods", - "jQXHR.error is deprecated and removed"); - migratePatchAndWarnFunc(jQXHR, "complete", jQXHR.always, "jqXHR-methods", - "jQXHR.complete is deprecated and removed"); - } - - return jQXHR; - }, "jqXHR-methods"); - - // Only trigger the logic in jQuery <4 as the JSON-to-JSONP auto-promotion - // behavior is gone in jQuery 4.0 and as it has security implications, we don't - // want to restore the legacy behavior. - if (!jQueryVersionSince("4.0.0")) { - - // Register this prefilter before the jQuery one. Otherwise, a promoted - // request is transformed into one with the script dataType and we can't - // catch it anymore. - jQuery.ajaxPrefilter("+json", function(s) { - - // Warn if JSON-to-JSONP auto-promotion happens. - if (s.jsonp !== false && (rjsonp.test(s.url) || - typeof s.data === "string" && - (s.contentType || "") - .indexOf("application/x-www-form-urlencoded") === 0 && - rjsonp.test(s.data) - )) { - migrateWarn("jsonp-promotion", "JSON-to-JSONP auto-promotion is deprecated"); - } - }); - } - - } - - var oldRemoveAttr = jQuery.fn.removeAttr, - oldToggleClass = jQuery.fn.toggleClass, - rbooleans = /^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i, - rmatchNonSpace = /\S+/g; - - migratePatchFunc(jQuery.fn, "removeAttr", function(name) { - var self = this, - patchNeeded = false; - - jQuery.each(name.match(rmatchNonSpace), function(_i, attr) { - if (rbooleans.test(attr)) { - - // Only warn if at least a single node had the property set to - // something else than `false`. Otherwise, this Migrate patch - // doesn't influence the behavior and there's no need to set or warn. - self.each(function() { - if (jQuery(this).prop(attr) !== false) { - patchNeeded = true; - return false; - } - }); - } - - if (patchNeeded) { - migrateWarn("removeAttr-bool", - "jQuery.fn.removeAttr no longer sets boolean properties: " + attr); - self.prop(attr, false); - } - }); - - return oldRemoveAttr.apply(this, arguments); - }, "removeAttr-bool"); - - migratePatchFunc(jQuery.fn, "toggleClass", function(state) { - - // Only deprecating no-args or single boolean arg - if (state !== undefined && typeof state !== "boolean") { - - return oldToggleClass.apply(this, arguments); - } - - migrateWarn("toggleClass-bool", "jQuery.fn.toggleClass( boolean ) is deprecated"); - - // Toggle entire class name of each element - return this.each(function() { - var className = this.getAttribute && this.getAttribute("class") || ""; - - if (className) { - jQuery.data(this, "__className__", className); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if (this.setAttribute) { - this.setAttribute("class", - className || state === false ? - "" : - jQuery.data(this, "__className__") || "" - ); - } - }); - }, "toggleClass-bool"); - - function camelCase(string) { - return string.replace(/-([a-z])/g, function(_, letter) { - return letter.toUpperCase(); - }); - } - - var origFnCss, internalCssNumber, - internalSwapCall = false, - ralphaStart = /^[a-z]/, - - // The regex visualized: - // - // /----------\ - // | | /-------\ - // | / Top \ | | | - // /--- Border ---+-| Right |-+---+- Width -+---\ - // | | Bottom | | - // | \ Left / | - // | | - // | /----------\ | - // | /-------------\ | | |- END - // | | | | / Top \ | | - // | | / Margin \ | | | Right | | | - // |---------+-| |-+---+-| Bottom |-+----| - // | \ Padding / \ Left / | - // BEGIN -| | - // | /---------\ | - // | | | | - // | | / Min \ | / Width \ | - // \--------------+-| |-+---| |---/ - // \ Max / \ Height / - rautoPx = /^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/; - - // If this version of jQuery has .swap(), don't false-alarm on internal uses - if (jQuery.swap) { - jQuery.each(["height", "width", "reliableMarginRight"], function(_, name) { - var oldHook = jQuery.cssHooks[name] && jQuery.cssHooks[name].get; - - if (oldHook) { - jQuery.cssHooks[name].get = function() { - var ret; - - internalSwapCall = true; - ret = oldHook.apply(this, arguments); - internalSwapCall = false; - return ret; - }; - } - }); - } - - migratePatchFunc(jQuery, "swap", function(elem, options, callback, args) { - var ret, name, - old = {}; - - if (!internalSwapCall) { - migrateWarn("swap", "jQuery.swap() is undocumented and deprecated"); - } - - // Remember the old values, and insert the new ones - for (name in options) { - old[name] = elem.style[name]; - elem.style[name] = options[name]; - } - - ret = callback.apply(elem, args || []); - - // Revert the old values - for (name in options) { - elem.style[name] = old[name]; - } - - return ret; - }, "swap"); - - if (jQueryVersionSince("3.4.0") && typeof Proxy !== "undefined") { - jQuery.cssProps = new Proxy(jQuery.cssProps || {}, { - set: function() { - migrateWarn("cssProps", "jQuery.cssProps is deprecated"); - return Reflect.set.apply(this, arguments); - } - }); - } - - // In jQuery >=4 where jQuery.cssNumber is missing fill it with the latest 3.x version: - // https://github.com/jquery/jquery/blob/3.7.1/src/css.js#L216-L246 - // This way, number values for the CSS properties below won't start triggering - // Migrate warnings when jQuery gets updated to >=4.0.0 (gh-438). - if (jQueryVersionSince("4.0.0")) { - - // We need to keep this as a local variable as we need it internally - // in a `jQuery.fn.css` patch and this usage shouldn't warn. - internalCssNumber = { - animationIterationCount: true, - aspectRatio: true, - borderImageSlice: true, - columnCount: true, - flexGrow: true, - flexShrink: true, - fontWeight: true, - gridArea: true, - gridColumn: true, - gridColumnEnd: true, - gridColumnStart: true, - gridRow: true, - gridRowEnd: true, - gridRowStart: true, - lineHeight: true, - opacity: true, - order: true, - orphans: true, - scale: true, - widows: true, - zIndex: true, - zoom: true, - - // SVG-related - fillOpacity: true, - floodOpacity: true, - stopOpacity: true, - strokeMiterlimit: true, - strokeOpacity: true - }; - - if (typeof Proxy !== "undefined") { - jQuery.cssNumber = new Proxy(internalCssNumber, { - get: function() { - migrateWarn("css-number", "jQuery.cssNumber is deprecated"); - return Reflect.get.apply(this, arguments); - }, - set: function() { - migrateWarn("css-number", "jQuery.cssNumber is deprecated"); - return Reflect.set.apply(this, arguments); - } - }); - } else { - - // Support: IE 9-11+ - // IE doesn't support proxies, but we still want to restore the legacy - // jQuery.cssNumber there. - jQuery.cssNumber = internalCssNumber; - } - } else { - - // Make `internalCssNumber` defined for jQuery <4 as well as it's needed - // in the `jQuery.fn.css` patch below. - internalCssNumber = jQuery.cssNumber; - } - - function isAutoPx(prop) { - - // The first test is used to ensure that: - // 1. The prop starts with a lowercase letter (as we uppercase it for the second regex). - // 2. The prop is not empty. - return ralphaStart.test(prop) && - rautoPx.test(prop[0].toUpperCase() + prop.slice(1)); - } - - origFnCss = jQuery.fn.css; - - migratePatchFunc(jQuery.fn, "css", function(name, value) { - var camelName, - origThis = this; - - if (name && typeof name === "object" && !Array.isArray(name)) { - jQuery.each(name, function(n, v) { - jQuery.fn.css.call(origThis, n, v); - }); - return this; - } - - if (typeof value === "number") { - camelName = camelCase(name); - - // Use `internalCssNumber` to avoid triggering our warnings in this - // internal check. - if (!isAutoPx(camelName) && !internalCssNumber[camelName]) { - migrateWarn("css-number", - "Number-typed values are deprecated for jQuery.fn.css( \"" + - name + "\", value )"); - } - } - - return origFnCss.apply(this, arguments); - }, "css-number"); - - var origData = jQuery.data; - - migratePatchFunc(jQuery, "data", function(elem, name, value) { - var curData, sameKeys, key; - - // Name can be an object, and each entry in the object is meant to be set as data - if (name && typeof name === "object" && arguments.length === 2) { - - curData = jQuery.hasData(elem) && origData.call(this, elem); - sameKeys = {}; - for (key in name) { - if (key !== camelCase(key)) { - migrateWarn("data-camelCase", - "jQuery.data() always sets/gets camelCased names: " + key); - curData[key] = name[key]; - } else { - sameKeys[key] = name[key]; - } - } - - origData.call(this, elem, sameKeys); - - return name; - } - - // If the name is transformed, look for the un-transformed name in the data object - if (name && typeof name === "string" && name !== camelCase(name)) { - - curData = jQuery.hasData(elem) && origData.call(this, elem); - if (curData && name in curData) { - migrateWarn("data-camelCase", - "jQuery.data() always sets/gets camelCased names: " + name); - if (arguments.length > 2) { - curData[name] = value; - } - return curData[name]; - } - } - - return origData.apply(this, arguments); - }, "data-camelCase"); - - // Support jQuery slim which excludes the effects module - if (jQuery.fx) { - - var intervalValue, intervalMsg, - oldTweenRun = jQuery.Tween.prototype.run, - linearEasing = function(pct) { - return pct; - }; - - migratePatchFunc(jQuery.Tween.prototype, "run", function() { - if (jQuery.easing[this.easing].length > 1) { - migrateWarn( - "easing-one-arg", - "'jQuery.easing." + this.easing.toString() + "' should use only one argument" - ); - - jQuery.easing[this.easing] = linearEasing; - } - - oldTweenRun.apply(this, arguments); - }, "easing-one-arg"); - - intervalValue = jQuery.fx.interval; - intervalMsg = "jQuery.fx.interval is deprecated"; - - // Support: IE9, Android <=4.4 - // Avoid false positives on browsers that lack rAF - // Don't warn if document is hidden, jQuery uses setTimeout (#292) - if (window.requestAnimationFrame) { - Object.defineProperty(jQuery.fx, "interval", { - configurable: true, - enumerable: true, - get: function() { - if (!window.document.hidden) { - migrateWarn("fx-interval", intervalMsg); - } - - // Only fallback to the default if patch is enabled - if (!jQuery.migrateIsPatchEnabled("fx-interval")) { - return intervalValue; - } - return intervalValue === undefined ? 13 : intervalValue; - }, - set: function(newValue) { - migrateWarn("fx-interval", intervalMsg); - intervalValue = newValue; - } - }); - } - - } - - var oldLoad = jQuery.fn.load, - oldEventAdd = jQuery.event.add, - originalFix = jQuery.event.fix; - - jQuery.event.props = []; - jQuery.event.fixHooks = {}; - - migrateWarnProp(jQuery.event.props, "concat", jQuery.event.props.concat, - "event-old-patch", - "jQuery.event.props.concat() is deprecated and removed"); - - migratePatchFunc(jQuery.event, "fix", function(originalEvent) { - var event, - type = originalEvent.type, - fixHook = this.fixHooks[type], - props = jQuery.event.props; - - if (props.length) { - migrateWarn("event-old-patch", - "jQuery.event.props are deprecated and removed: " + props.join()); - while (props.length) { - jQuery.event.addProp(props.pop()); - } - } - - if (fixHook && !fixHook._migrated_) { - fixHook._migrated_ = true; - migrateWarn("event-old-patch", - "jQuery.event.fixHooks are deprecated and removed: " + type); - if ((props = fixHook.props) && props.length) { - while (props.length) { - jQuery.event.addProp(props.pop()); - } - } - } - - event = originalFix.call(this, originalEvent); - - return fixHook && fixHook.filter ? - fixHook.filter(event, originalEvent) : - event; - }, "event-old-patch"); - - migratePatchFunc(jQuery.event, "add", function(elem, types) { - - // This misses the multiple-types case but that seems awfully rare - if (elem === window && types === "load" && window.document.readyState === "complete") { - migrateWarn("load-after-event", - "jQuery(window).on('load'...) called after load event occurred"); - } - return oldEventAdd.apply(this, arguments); - }, "load-after-event"); - - jQuery.each(["load", "unload", "error"], function(_, name) { - - migratePatchFunc(jQuery.fn, name, function() { - var args = Array.prototype.slice.call(arguments, 0); - - // If this is an ajax load() the first arg should be the string URL; - // technically this could also be the "Anything" arg of the event .load() - // which just goes to show why this dumb signature has been deprecated! - // jQuery custom builds that exclude the Ajax module justifiably die here. - if (name === "load" && typeof args[0] === "string") { - return oldLoad.apply(this, args); - } - - migrateWarn("shorthand-removed-v3", - "jQuery.fn." + name + "() is deprecated"); - - args.splice(0, 0, name); - if (arguments.length) { - return this.on.apply(this, args); - } - - // Use .triggerHandler here because: - // - load and unload events don't need to bubble, only applied to window or image - // - error event should not bubble to window, although it does pre-1.7 - // See http://bugs.jquery.com/ticket/11820 - this.triggerHandler.apply(this, args); - return this; - }, "shorthand-removed-v3"); - - }); - - jQuery.each(("blur focus focusin focusout resize scroll click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup contextmenu").split(" "), - function(_i, name) { - - // Handle event binding - migratePatchAndWarnFunc(jQuery.fn, name, function(data, fn) { - return arguments.length > 0 ? - this.on(name, null, data, fn) : - this.trigger(name); - }, - "shorthand-deprecated-v3", - "jQuery.fn." + name + "() event shorthand is deprecated"); - }); - - // Trigger "ready" event only once, on document ready - jQuery(function() { - jQuery(window.document).triggerHandler("ready"); - }); - - jQuery.event.special.ready = { - setup: function() { - if (this === window.document) { - migrateWarn("ready-event", "'ready' event is deprecated"); - } - } - }; - - migratePatchAndWarnFunc(jQuery.fn, "bind", function(types, data, fn) { - return this.on(types, null, data, fn); - }, "pre-on-methods", "jQuery.fn.bind() is deprecated"); - migratePatchAndWarnFunc(jQuery.fn, "unbind", function(types, fn) { - return this.off(types, null, fn); - }, "pre-on-methods", "jQuery.fn.unbind() is deprecated"); - migratePatchAndWarnFunc(jQuery.fn, "delegate", function(selector, types, data, fn) { - return this.on(types, selector, data, fn); - }, "pre-on-methods", "jQuery.fn.delegate() is deprecated"); - migratePatchAndWarnFunc(jQuery.fn, "undelegate", function(selector, types, fn) { - return arguments.length === 1 ? - this.off(selector, "**") : - this.off(types, selector || "**", fn); - }, "pre-on-methods", "jQuery.fn.undelegate() is deprecated"); - migratePatchAndWarnFunc(jQuery.fn, "hover", function(fnOver, fnOut) { - return this.on("mouseenter", fnOver).on("mouseleave", fnOut || fnOver); - }, "pre-on-methods", "jQuery.fn.hover() is deprecated"); - - var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - makeMarkup = function(html) { - var doc = window.document.implementation.createHTMLDocument(""); - doc.body.innerHTML = html; - return doc.body && doc.body.innerHTML; - }, - warnIfChanged = function(html) { - var changed = html.replace(rxhtmlTag, "<$1></$2>"); - if (changed !== html && makeMarkup(html) !== makeMarkup(changed)) { - migrateWarn("self-closed-tags", - "HTML tags must be properly nested and closed: " + html); - } - }; - - /** - * Deprecated, please use `jQuery.migrateDisablePatches( "self-closed-tags" )` instead. - * @deprecated - */ - migratePatchAndWarnFunc(jQuery, "UNSAFE_restoreLegacyHtmlPrefilter", function() { - jQuery.migrateEnablePatches("self-closed-tags"); - }, "legacy-self-closed-tags", - "jQuery.UNSAFE_restoreLegacyHtmlPrefilter deprecated; use " + - "`jQuery.migrateEnablePatches( \"self-closed-tags\" )`"); - - migratePatchFunc(jQuery, "htmlPrefilter", function(html) { - warnIfChanged(html); - return html.replace(rxhtmlTag, "<$1></$2>"); - }, "self-closed-tags"); - - // This patch needs to be disabled by default as it re-introduces - // security issues (CVE-2020-11022, CVE-2020-11023). - jQuery.migrateDisablePatches("self-closed-tags"); - - var origOffset = jQuery.fn.offset; - - migratePatchFunc(jQuery.fn, "offset", function() { - var elem = this[0]; - - if (elem && (!elem.nodeType || !elem.getBoundingClientRect)) { - migrateWarn("offset-valid-elem", "jQuery.fn.offset() requires a valid DOM element"); - return arguments.length ? this : undefined; - } - - return origOffset.apply(this, arguments); - }, "offset-valid-elem"); - - // Support jQuery slim which excludes the ajax module - // The jQuery.param patch is about respecting `jQuery.ajaxSettings.traditional` - // so it doesn't make sense for the slim build. - if (jQuery.ajax) { - - var origParam = jQuery.param; - - migratePatchFunc(jQuery, "param", function(data, traditional) { - var ajaxTraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; - - if (traditional === undefined && ajaxTraditional) { - - migrateWarn("param-ajax-traditional", - "jQuery.param() no longer uses jQuery.ajaxSettings.traditional"); - traditional = ajaxTraditional; - } - - return origParam.call(this, data, traditional); - }, "param-ajax-traditional"); - - } - - migratePatchAndWarnFunc(jQuery.fn, "andSelf", jQuery.fn.addBack, "andSelf", - "jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"); - - // Support jQuery slim which excludes the deferred module in jQuery 4.0+ - if (jQuery.Deferred) { - - var oldDeferred = jQuery.Deferred, - tuples = [ - - // Action, add listener, callbacks, .then handlers, final state - ["resolve", "done", jQuery.Callbacks("once memory"), - jQuery.Callbacks("once memory"), "resolved"], - ["reject", "fail", jQuery.Callbacks("once memory"), - jQuery.Callbacks("once memory"), "rejected"], - ["notify", "progress", jQuery.Callbacks("memory"), - jQuery.Callbacks("memory")] - ]; - - migratePatchFunc(jQuery, "Deferred", function(func) { - var deferred = oldDeferred(), - promise = deferred.promise(); - - function newDeferredPipe( /* fnDone, fnFail, fnProgress */) { - var fns = arguments; - - return jQuery.Deferred(function(newDefer) { - jQuery.each(tuples, function(i, tuple) { - var fn = typeof fns[i] === "function" && fns[i]; - - // Deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - deferred[tuple[1]](function() { - var returned = fn && fn.apply(this, arguments); - if (returned && typeof returned.promise === "function") { - returned.promise() - .done(newDefer.resolve) - .fail(newDefer.reject) - .progress(newDefer.notify); - } else { - newDefer[tuple[0] + "With"]( - this === promise ? newDefer.promise() : this, - fn ? [returned] : arguments - ); - } - }); - }); - fns = null; - }).promise(); - } - - migratePatchAndWarnFunc(deferred, "pipe", newDeferredPipe, "deferred-pipe", - "deferred.pipe() is deprecated"); - migratePatchAndWarnFunc(promise, "pipe", newDeferredPipe, "deferred-pipe", - "deferred.pipe() is deprecated"); - - if (func) { - func.call(deferred, deferred); - } - - return deferred; - }, "deferred-pipe"); - - // Preserve handler of uncaught exceptions in promise chains - jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook; - - } - - return jQuery; -}); |
