| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- // Licensed to Cloudera, Inc. under one
- // or more contributor license agreements. See the NOTICE file
- // distributed with this work for additional information
- // regarding copyright ownership. Cloudera, Inc. licenses this file
- // to you under the Apache License, Version 2.0 (the
- // "License"); you may not use this file except in compliance
- // with the License. You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- /*
- * Repo for missing jQuery 2 functions, this ease the transition without updating every other plugin in Hue
- *
- */
- jQuery.uaMatch = function (ua) {
- ua = ua.toLowerCase();
- var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
- /(webkit)[ \/]([\w.]+)/.exec(ua) ||
- /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
- /(msie) ([\w.]+)/.exec(ua) ||
- ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
- [];
- return {
- browser: match[ 1 ] || "",
- version: match[ 2 ] || "0"
- };
- };
- // Don't clobber any existing jQuery.browser in case it's different
- if (!jQuery.browser) {
- matched = jQuery.uaMatch(navigator.userAgent);
- browser = {};
- if (matched.browser) {
- browser[ matched.browser ] = true;
- browser.version = matched.version;
- }
- // Chrome is Webkit, but Webkit is also Safari.
- if (browser.chrome) {
- browser.webkit = true;
- } else if (browser.webkit) {
- browser.safari = true;
- }
- jQuery.browser = browser;
- }
- // Since jQuery.clean is used internally on older versions, we only shim if it's missing
- if (!jQuery.clean) {
- jQuery.clean = function (elems, context, fragment, scripts) {
- // Set context per 1.8 logic
- context = context || document;
- context = !context.nodeType && context[0] || context;
- context = context.ownerDocument || context;
- var i, elem, handleScript, jsTags,
- ret = [];
- jQuery.merge(ret, jQuery.buildFragment(elems, context).childNodes);
- // Complex logic lifted directly from jQuery 1.8
- if (fragment) {
- // Special handling of each script element
- handleScript = function (elem) {
- // Check if we consider it executable
- if (!elem.type || rscriptType.test(elem.type)) {
- // Detach the script and store it in the scripts array (if provided) or the fragment
- // Return truthy to indicate that it has been handled
- return scripts ?
- scripts.push(elem.parentNode ? elem.parentNode.removeChild(elem) : elem) :
- fragment.appendChild(elem);
- }
- };
- for (i = 0; (elem = ret[i]) != null; i++) {
- // Check if we're done after handling an executable script
- if (!( jQuery.nodeName(elem, "script") && handleScript(elem) )) {
- // Append to fragment and handle embedded scripts
- fragment.appendChild(elem);
- if (typeof elem.getElementsByTagName !== "undefined") {
- // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
- jsTags = jQuery.grep(jQuery.merge([], elem.getElementsByTagName("script")), handleScript);
- // Splice the scripts into ret after their former ancestor and advance our index beyond them
- ret.splice.apply(ret, [i + 1, 0].concat(jsTags));
- i += jsTags.length;
- }
- }
- }
- }
- return ret;
- };
- }
- var rscriptType = /\/(java|ecma)script/i,
- oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
- jQuery.fn.andSelf = function () {
- return oldSelf.apply(this, arguments);
- };
|