123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-alpha.4): 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;
- var TransitionEndEvent = {
- WebkitTransition: 'webkitTransitionEnd',
- MozTransition: 'transitionend',
- OTransition: 'oTransitionEnd otransitionend',
- transition: 'transitionend'
- };
- // shoutout AngusCroll (https://goo.gl/pxwQGp)
- function toType(obj) {
- return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
- }
- function isElement(obj) {
- return (obj[0] || obj).nodeType;
- }
- 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;
- }
- };
- }
- function transitionEndTest() {
- if (window.QUnit) {
- return false;
- }
- var el = document.createElement('bootstrap');
- for (var name in TransitionEndEvent) {
- if (el.style[name] !== undefined) {
- return { end: TransitionEndEvent[name] };
- }
- }
- return false;
- }
- 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();
- }
- }
- /**
- * --------------------------------------------------------------------------
- * Public Util Api
- * --------------------------------------------------------------------------
- */
- var Util = {
- TRANSITION_END: 'bsTransitionEnd',
- getUID: function getUID(prefix) {
- do {
- /* eslint-disable no-bitwise */
- prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
- /* eslint-enable no-bitwise */
- } while (document.getElementById(prefix));
- return prefix;
- },
- getSelectorFromElement: function getSelectorFromElement(element) {
- var selector = element.getAttribute('data-target');
- if (!selector) {
- selector = element.getAttribute('href') || '';
- selector = /^#[a-z]/i.test(selector) ? selector : null;
- }
- return selector;
- },
- reflow: function reflow(element) {
- new Function('bs', 'return bs')(element.offsetHeight);
- },
- triggerTransitionEnd: function triggerTransitionEnd(element) {
- $(element).trigger(transition.end);
- },
- supportsTransitionEnd: function supportsTransitionEnd() {
- return Boolean(transition);
- },
- typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
- for (var property in configTypes) {
- if (configTypes.hasOwnProperty(property)) {
- var expectedTypes = configTypes[property];
- var value = config[property];
- var valueType = void 0;
- if (value && isElement(value)) {
- valueType = 'element';
- } else {
- valueType = 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;
- }(jQuery);
- //# sourceMappingURL=util.js.map
|