|
| 1 | +/*! |
| 2 | + * jQuery UI Core @VERSION |
| 3 | + * http://jqueryui.com |
| 4 | + * |
| 5 | + * Copyright 2013 jQuery Foundation and other contributors |
| 6 | + * Released under the MIT license. |
| 7 | + * http://jquery.org/license |
| 8 | + * |
| 9 | + * http://api.jqueryui.com/category/ui-core/ |
| 10 | + */ |
| 11 | +(function( $, undefined ) { |
| 12 | + |
| 13 | +var uuid = 0, |
| 14 | + runiqueId = /^ui-id-\d+$/; |
| 15 | + |
| 16 | +// $.ui might exist from components with no dependencies, e.g., $.ui.position |
| 17 | +$.ui = $.ui || {}; |
| 18 | + |
| 19 | +$.extend( $.ui, { |
| 20 | + version: "@VERSION", |
| 21 | + |
| 22 | + keyCode: { |
| 23 | + BACKSPACE: 8, |
| 24 | + COMMA: 188, |
| 25 | + DELETE: 46, |
| 26 | + DOWN: 40, |
| 27 | + END: 35, |
| 28 | + ENTER: 13, |
| 29 | + ESCAPE: 27, |
| 30 | + HOME: 36, |
| 31 | + LEFT: 37, |
| 32 | + NUMPAD_ADD: 107, |
| 33 | + NUMPAD_DECIMAL: 110, |
| 34 | + NUMPAD_DIVIDE: 111, |
| 35 | + NUMPAD_ENTER: 108, |
| 36 | + NUMPAD_MULTIPLY: 106, |
| 37 | + NUMPAD_SUBTRACT: 109, |
| 38 | + PAGE_DOWN: 34, |
| 39 | + PAGE_UP: 33, |
| 40 | + PERIOD: 190, |
| 41 | + RIGHT: 39, |
| 42 | + SPACE: 32, |
| 43 | + TAB: 9, |
| 44 | + UP: 38 |
| 45 | + } |
| 46 | +}); |
| 47 | + |
| 48 | +// plugins |
| 49 | +$.fn.extend({ |
| 50 | + focus: (function( orig ) { |
| 51 | + return function( delay, fn ) { |
| 52 | + return typeof delay === "number" ? |
| 53 | + this.each(function() { |
| 54 | + var elem = this; |
| 55 | + setTimeout(function() { |
| 56 | + $( elem ).focus(); |
| 57 | + if ( fn ) { |
| 58 | + fn.call( elem ); |
| 59 | + } |
| 60 | + }, delay ); |
| 61 | + }) : |
| 62 | + orig.apply( this, arguments ); |
| 63 | + }; |
| 64 | + })( $.fn.focus ), |
| 65 | + |
| 66 | + scrollParent: function() { |
| 67 | + var scrollParent; |
| 68 | + if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) { |
| 69 | + scrollParent = this.parents().filter(function() { |
| 70 | + return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); |
| 71 | + }).eq(0); |
| 72 | + } else { |
| 73 | + scrollParent = this.parents().filter(function() { |
| 74 | + return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); |
| 75 | + }).eq(0); |
| 76 | + } |
| 77 | + |
| 78 | + return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent; |
| 79 | + }, |
| 80 | + |
| 81 | + zIndex: function( zIndex ) { |
| 82 | + if ( zIndex !== undefined ) { |
| 83 | + return this.css( "zIndex", zIndex ); |
| 84 | + } |
| 85 | + |
| 86 | + if ( this.length ) { |
| 87 | + var elem = $( this[ 0 ] ), position, value; |
| 88 | + while ( elem.length && elem[ 0 ] !== document ) { |
| 89 | + // Ignore z-index if position is set to a value where z-index is ignored by the browser |
| 90 | + // This makes behavior of this function consistent across browsers |
| 91 | + // WebKit always returns auto if the element is positioned |
| 92 | + position = elem.css( "position" ); |
| 93 | + if ( position === "absolute" || position === "relative" || position === "fixed" ) { |
| 94 | + // IE returns 0 when zIndex is not specified |
| 95 | + // other browsers return a string |
| 96 | + // we ignore the case of nested elements with an explicit value of 0 |
| 97 | + // <div style="z-index: -10;"><div style="z-index: 0;"></div></div> |
| 98 | + value = parseInt( elem.css( "zIndex" ), 10 ); |
| 99 | + if ( !isNaN( value ) && value !== 0 ) { |
| 100 | + return value; |
| 101 | + } |
| 102 | + } |
| 103 | + elem = elem.parent(); |
| 104 | + } |
| 105 | + } |
| 106 | + |
| 107 | + return 0; |
| 108 | + }, |
| 109 | + |
| 110 | + uniqueId: function() { |
| 111 | + return this.each(function() { |
| 112 | + if ( !this.id ) { |
| 113 | + this.id = "ui-id-" + (++uuid); |
| 114 | + } |
| 115 | + }); |
| 116 | + }, |
| 117 | + |
| 118 | + removeUniqueId: function() { |
| 119 | + return this.each(function() { |
| 120 | + if ( runiqueId.test( this.id ) ) { |
| 121 | + $( this ).removeAttr( "id" ); |
| 122 | + } |
| 123 | + }); |
| 124 | + } |
| 125 | +}); |
| 126 | + |
| 127 | +// selectors |
| 128 | +function focusable( element, isTabIndexNotNaN ) { |
| 129 | + var map, mapName, img, |
| 130 | + nodeName = element.nodeName.toLowerCase(); |
| 131 | + if ( "area" === nodeName ) { |
| 132 | + map = element.parentNode; |
| 133 | + mapName = map.name; |
| 134 | + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { |
| 135 | + return false; |
| 136 | + } |
| 137 | + img = $( "img[usemap=#" + mapName + "]" )[0]; |
| 138 | + return !!img && visible( img ); |
| 139 | + } |
| 140 | + return ( /input|select|textarea|button|object/.test( nodeName ) ? |
| 141 | + !element.disabled : |
| 142 | + "a" === nodeName ? |
| 143 | + element.href || isTabIndexNotNaN : |
| 144 | + isTabIndexNotNaN) && |
| 145 | + // the element and all of its ancestors must be visible |
| 146 | + visible( element ); |
| 147 | +} |
| 148 | + |
| 149 | +function visible( element ) { |
| 150 | + return $.expr.filters.visible( element ) && |
| 151 | + !$( element ).parents().addBack().filter(function() { |
| 152 | + return $.css( this, "visibility" ) === "hidden"; |
| 153 | + }).length; |
| 154 | +} |
| 155 | + |
| 156 | +$.extend( $.expr[ ":" ], { |
| 157 | + data: $.expr.createPseudo ? |
| 158 | + $.expr.createPseudo(function( dataName ) { |
| 159 | + return function( elem ) { |
| 160 | + return !!$.data( elem, dataName ); |
| 161 | + }; |
| 162 | + }) : |
| 163 | + // support: jQuery <1.8 |
| 164 | + function( elem, i, match ) { |
| 165 | + return !!$.data( elem, match[ 3 ] ); |
| 166 | + }, |
| 167 | + |
| 168 | + focusable: function( element ) { |
| 169 | + return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); |
| 170 | + }, |
| 171 | + |
| 172 | + tabbable: function( element ) { |
| 173 | + var tabIndex = $.attr( element, "tabindex" ), |
| 174 | + isTabIndexNaN = isNaN( tabIndex ); |
| 175 | + return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); |
| 176 | + } |
| 177 | +}); |
| 178 | + |
| 179 | +// support: jQuery <1.8 |
| 180 | +if ( !$( "<a>" ).outerWidth( 1 ).jquery ) { |
| 181 | + $.each( [ "Width", "Height" ], function( i, name ) { |
| 182 | + var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], |
| 183 | + type = name.toLowerCase(), |
| 184 | + orig = { |
| 185 | + innerWidth: $.fn.innerWidth, |
| 186 | + innerHeight: $.fn.innerHeight, |
| 187 | + outerWidth: $.fn.outerWidth, |
| 188 | + outerHeight: $.fn.outerHeight |
| 189 | + }; |
| 190 | + |
| 191 | + function reduce( elem, size, border, margin ) { |
| 192 | + $.each( side, function() { |
| 193 | + size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; |
| 194 | + if ( border ) { |
| 195 | + size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; |
| 196 | + } |
| 197 | + if ( margin ) { |
| 198 | + size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; |
| 199 | + } |
| 200 | + }); |
| 201 | + return size; |
| 202 | + } |
| 203 | + |
| 204 | + $.fn[ "inner" + name ] = function( size ) { |
| 205 | + if ( size === undefined ) { |
| 206 | + return orig[ "inner" + name ].call( this ); |
| 207 | + } |
| 208 | + |
| 209 | + return this.each(function() { |
| 210 | + $( this ).css( type, reduce( this, size ) + "px" ); |
| 211 | + }); |
| 212 | + }; |
| 213 | + |
| 214 | + $.fn[ "outer" + name] = function( size, margin ) { |
| 215 | + if ( typeof size !== "number" ) { |
| 216 | + return orig[ "outer" + name ].call( this, size ); |
| 217 | + } |
| 218 | + |
| 219 | + return this.each(function() { |
| 220 | + $( this).css( type, reduce( this, size, true, margin ) + "px" ); |
| 221 | + }); |
| 222 | + }; |
| 223 | + }); |
| 224 | +} |
| 225 | + |
| 226 | +// support: jQuery <1.8 |
| 227 | +if ( !$.fn.addBack ) { |
| 228 | + $.fn.addBack = function( selector ) { |
| 229 | + return this.add( selector == null ? |
| 230 | + this.prevObject : this.prevObject.filter( selector ) |
| 231 | + ); |
| 232 | + }; |
| 233 | +} |
| 234 | + |
| 235 | +// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413) |
| 236 | +if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) { |
| 237 | + $.fn.removeData = (function( removeData ) { |
| 238 | + return function( key ) { |
| 239 | + if ( arguments.length ) { |
| 240 | + return removeData.call( this, $.camelCase( key ) ); |
| 241 | + } else { |
| 242 | + return removeData.call( this ); |
| 243 | + } |
| 244 | + }; |
| 245 | + })( $.fn.removeData ); |
| 246 | +} |
| 247 | + |
| 248 | + |
| 249 | + |
| 250 | + |
| 251 | + |
| 252 | +// deprecated |
| 253 | +$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); |
| 254 | + |
| 255 | +$.support.selectstart = "onselectstart" in document.createElement( "div" ); |
| 256 | +$.fn.extend({ |
| 257 | + disableSelection: function() { |
| 258 | + return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) + |
| 259 | + ".ui-disableSelection", function( event ) { |
| 260 | + event.preventDefault(); |
| 261 | + }); |
| 262 | + }, |
| 263 | + |
| 264 | + enableSelection: function() { |
| 265 | + return this.unbind( ".ui-disableSelection" ); |
| 266 | + } |
| 267 | +}); |
| 268 | + |
| 269 | +$.extend( $.ui, { |
| 270 | + // $.ui.plugin is deprecated. Use $.widget() extensions instead. |
| 271 | + plugin: { |
| 272 | + add: function( module, option, set ) { |
| 273 | + var i, |
| 274 | + proto = $.ui[ module ].prototype; |
| 275 | + for ( i in set ) { |
| 276 | + proto.plugins[ i ] = proto.plugins[ i ] || []; |
| 277 | + proto.plugins[ i ].push( [ option, set[ i ] ] ); |
| 278 | + } |
| 279 | + }, |
| 280 | + call: function( instance, name, args ) { |
| 281 | + var i, |
| 282 | + set = instance.plugins[ name ]; |
| 283 | + if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) { |
| 284 | + return; |
| 285 | + } |
| 286 | + |
| 287 | + for ( i = 0; i < set.length; i++ ) { |
| 288 | + if ( instance.options[ set[ i ][ 0 ] ] ) { |
| 289 | + set[ i ][ 1 ].apply( instance.element, args ); |
| 290 | + } |
| 291 | + } |
| 292 | + } |
| 293 | + }, |
| 294 | + |
| 295 | + // only used by resizable |
| 296 | + hasScroll: function( el, a ) { |
| 297 | + |
| 298 | + //If overflow is hidden, the element might have extra content, but the user wants to hide it |
| 299 | + if ( $( el ).css( "overflow" ) === "hidden") { |
| 300 | + return false; |
| 301 | + } |
| 302 | + |
| 303 | + var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop", |
| 304 | + has = false; |
| 305 | + |
| 306 | + if ( el[ scroll ] > 0 ) { |
| 307 | + return true; |
| 308 | + } |
| 309 | + |
| 310 | + // TODO: determine which cases actually cause this to happen |
| 311 | + // if the element doesn't have the scroll set, see if it's possible to |
| 312 | + // set the scroll |
| 313 | + el[ scroll ] = 1; |
| 314 | + has = ( el[ scroll ] > 0 ); |
| 315 | + el[ scroll ] = 0; |
| 316 | + return has; |
| 317 | + } |
| 318 | +}); |
| 319 | + |
| 320 | +})( jQuery ); |
0 commit comments