aboutsummaryrefslogtreecommitdiff
path: root/js/src/util.js
diff options
context:
space:
mode:
authorfat <[email protected]>2015-05-07 16:34:28 -0700
committerfat <[email protected]>2015-05-07 16:34:28 -0700
commitc3a79b1a8c2fa8d7fc8edcd3e626dad8b45d5dc3 (patch)
tree06a02f216b801efdba5d920da89b2cad47fd2408 /js/src/util.js
parent0724bd91ff81b5eca0addce0c336c72b3ec10be5 (diff)
downloadbootstrap-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.js166
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