You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							139 lines
						
					
					
						
							4.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							139 lines
						
					
					
						
							4.3 KiB
						
					
					
				| /** | |
|  * -------------------------------------------------------------------------- | |
|  * Bootstrap (v4.0.0): util.js | |
|  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | |
|  * -------------------------------------------------------------------------- | |
|  */ | |
| var Util = function ($) { | |
|   /** | |
|    * ------------------------------------------------------------------------ | |
|    * Private TransitionEnd Helpers | |
|    * ------------------------------------------------------------------------ | |
|    */ | |
|   var transition = false; | |
|   var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) | |
|  | |
|   function toType(obj) { | |
|     return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); | |
|   } | |
| 
 | |
|   function getSpecialTransitionEndEvent() { | |
|     return { | |
|       bindType: transition.end, | |
|       delegateType: transition.end, | |
|       handle: function handle(event) { | |
|         if ($(event.target).is(this)) { | |
|           return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params | |
|         } | |
| 
 | |
|         return undefined; // eslint-disable-line no-undefined | |
|       } | |
|     }; | |
|   } | |
| 
 | |
|   function transitionEndTest() { | |
|     if (typeof window !== 'undefined' && window.QUnit) { | |
|       return false; | |
|     } | |
| 
 | |
|     return { | |
|       end: 'transitionend' | |
|     }; | |
|   } | |
| 
 | |
|   function transitionEndEmulator(duration) { | |
|     var _this = this; | |
| 
 | |
|     var called = false; | |
|     $(this).one(Util.TRANSITION_END, function () { | |
|       called = true; | |
|     }); | |
|     setTimeout(function () { | |
|       if (!called) { | |
|         Util.triggerTransitionEnd(_this); | |
|       } | |
|     }, duration); | |
|     return this; | |
|   } | |
| 
 | |
|   function setTransitionEndSupport() { | |
|     transition = transitionEndTest(); | |
|     $.fn.emulateTransitionEnd = transitionEndEmulator; | |
| 
 | |
|     if (Util.supportsTransitionEnd()) { | |
|       $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); | |
|     } | |
|   } | |
| 
 | |
|   function escapeId(selector) { | |
|     // We escape IDs in case of special selectors (selector = '#myId:something') | |
|     // $.escapeSelector does not exist in jQuery < 3 | |
|     selector = typeof $.escapeSelector === 'function' ? $.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1'); | |
|     return selector; | |
|   } | |
|   /** | |
|    * -------------------------------------------------------------------------- | |
|    * Public Util Api | |
|    * -------------------------------------------------------------------------- | |
|    */ | |
| 
 | |
| 
 | |
|   var Util = { | |
|     TRANSITION_END: 'bsTransitionEnd', | |
|     getUID: function getUID(prefix) { | |
|       do { | |
|         // eslint-disable-next-line no-bitwise | |
|         prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here | |
|       } while (document.getElementById(prefix)); | |
| 
 | |
|       return prefix; | |
|     }, | |
|     getSelectorFromElement: function getSelectorFromElement(element) { | |
|       var selector = element.getAttribute('data-target'); | |
| 
 | |
|       if (!selector || selector === '#') { | |
|         selector = element.getAttribute('href') || ''; | |
|       } // If it's an ID | |
|  | |
| 
 | |
|       if (selector.charAt(0) === '#') { | |
|         selector = escapeId(selector); | |
|       } | |
| 
 | |
|       try { | |
|         var $selector = $(document).find(selector); | |
|         return $selector.length > 0 ? selector : null; | |
|       } catch (err) { | |
|         return null; | |
|       } | |
|     }, | |
|     reflow: function reflow(element) { | |
|       return element.offsetHeight; | |
|     }, | |
|     triggerTransitionEnd: function triggerTransitionEnd(element) { | |
|       $(element).trigger(transition.end); | |
|     }, | |
|     supportsTransitionEnd: function supportsTransitionEnd() { | |
|       return Boolean(transition); | |
|     }, | |
|     isElement: function isElement(obj) { | |
|       return (obj[0] || obj).nodeType; | |
|     }, | |
|     typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { | |
|       for (var property in configTypes) { | |
|         if (Object.prototype.hasOwnProperty.call(configTypes, property)) { | |
|           var expectedTypes = configTypes[property]; | |
|           var value = config[property]; | |
|           var valueType = value && Util.isElement(value) ? 'element' : toType(value); | |
| 
 | |
|           if (!new RegExp(expectedTypes).test(valueType)) { | |
|             throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); | |
|           } | |
|         } | |
|       } | |
|     } | |
|   }; | |
|   setTransitionEndSupport(); | |
|   return Util; | |
| }($); | |
| //# sourceMappingURL=util.js.map
 |