|
|
@@ -0,0 +1,111 @@
|
|
|
+// 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);
|
|
|
+};
|
|
|
+
|