diff options
| author | fat <[email protected]> | 2015-05-07 16:34:28 -0700 |
|---|---|---|
| committer | fat <[email protected]> | 2015-05-07 16:34:28 -0700 |
| commit | c3a79b1a8c2fa8d7fc8edcd3e626dad8b45d5dc3 (patch) | |
| tree | 06a02f216b801efdba5d920da89b2cad47fd2408 /js/src/util.js | |
| parent | 0724bd91ff81b5eca0addce0c336c72b3ec10be5 (diff) | |
| download | bootstrap-c3a79b1a8c2fa8d7fc8edcd3e626dad8b45d5dc3.tar.xz bootstrap-c3a79b1a8c2fa8d7fc8edcd3e626dad8b45d5dc3.zip | |
change the export pattern to protect against leaking globals
Diffstat (limited to 'js/src/util.js')
| -rw-r--r-- | js/src/util.js | 166 |
1 files changed, 86 insertions, 80 deletions
diff --git a/js/src/util.js b/js/src/util.js index e9542149e..68205edef 100644 --- a/js/src/util.js +++ b/js/src/util.js @@ -5,114 +5,120 @@ * -------------------------------------------------------------------------- */ +const Util = (() => { -/** - * -------------------------------------------------------------------------- - * Public Util Api - * -------------------------------------------------------------------------- - */ -var Util = { + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ - TRANSITION_END: 'bsTransitionEnd', + let transition = false - getUID(prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix - }, + const TransitionEndEvent = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } - getSelectorFromElement(element) { - let selector = element.getAttribute('data-target') + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function (event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments) + } + } + } + } - if (!selector) { - selector = element.getAttribute('href') || '' - selector = /^#[a-z]/i.test(selector) ? selector : null + function transitionEndTest() { + if (window.QUnit) { + return false } - return selector - }, + let el = document.createElement('bootstrap') - reflow(element) { - new Function('bs', 'return bs')(element.offsetHeight) - }, + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { end: TransitionEndEvent[name] } + } + } - supportsTransitionEnd() { - return !!transition + return false } -} - -export default Util - + function transitionEndEmulator(duration) { + let called = false -/** - * -------------------------------------------------------------------------- - * Private TransitionEnd Helpers - * -------------------------------------------------------------------------- - */ + $(this).one(Util.TRANSITION_END, function () { + called = true + }) -let transition = false - -const TransitionEndEvent = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' -} - -function getSpecialTransitionEndEvent() { - return { - bindType: transition.end, - delegateType: transition.end, - handle: function (event) { - if ($(event.target).is(this)) { - return event.handleObj.handler.apply(this, arguments) + setTimeout(() => { + if (!called) { + $(this).trigger(transition.end) } - } - } -} + }, duration) -function transitionEndTest() { - if (window.QUnit) { - return false + return this } - let el = document.createElement('bootstrap') + function setTransitionEndSupport() { + transition = transitionEndTest() + + $.fn.emulateTransitionEnd = transitionEndEmulator - for (var name in TransitionEndEvent) { - if (el.style[name] !== undefined) { - return { end: TransitionEndEvent[name] } + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent() } } - return false -} -function transitionEndEmulator(duration) { - let called = false + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ - $(this).one(Util.TRANSITION_END, function () { - called = true - }) + let Util = { - setTimeout(() => { - if (!called) { - $(this).trigger(transition.end) - } - }, duration) + TRANSITION_END: 'bsTransitionEnd', + + getUID(prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + }, - return this -} + getSelectorFromElement(element) { + let selector = element.getAttribute('data-target') -function setTransitionEndSupport() { - transition = transitionEndTest() + if (!selector) { + selector = element.getAttribute('href') || '' + selector = /^#[a-z]/i.test(selector) ? selector : null + } + + return selector + }, - $.fn.emulateTransitionEnd = transitionEndEmulator + reflow(element) { + new Function('bs', 'return bs')(element.offsetHeight) + }, + + supportsTransitionEnd() { + return !!transition + } - if (Util.supportsTransitionEnd()) { - $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent() } -} -setTransitionEndSupport() + setTransitionEndSupport() + + return Util + +})() + +export default Util |
