]>
git.ipfire.org Git - ipfire.org.git/blob - src/scss/bootstrap-4.0.0-alpha.6/js/dist/util.js
2 * --------------------------------------------------------------------------
3 * Bootstrap (v4.0.0-alpha.6): util.js
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 * --------------------------------------------------------------------------
8 var Util = function ($) {
11 * ------------------------------------------------------------------------
12 * Private TransitionEnd Helpers
13 * ------------------------------------------------------------------------
16 var transition
= false;
18 var MAX_UID
= 1000000;
20 var TransitionEndEvent
= {
21 WebkitTransition
: 'webkitTransitionEnd',
22 MozTransition
: 'transitionend',
23 OTransition
: 'oTransitionEnd otransitionend',
24 transition
: 'transitionend'
27 // shoutout AngusCroll (https://goo.gl/pxwQGp)
28 function toType(obj
) {
29 return {}.toString
.call(obj
).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
32 function isElement(obj
) {
33 return (obj
[0] || obj
).nodeType
;
36 function getSpecialTransitionEndEvent() {
38 bindType
: transition
.end
,
39 delegateType
: transition
.end
,
40 handle
: function handle(event
) {
41 if ($(event
.target
).is(this)) {
42 return event
.handleObj
.handler
.apply(this, arguments
); // eslint-disable-line prefer-rest-params
49 function transitionEndTest() {
54 var el
= document
.createElement('bootstrap');
56 for (var name
in TransitionEndEvent
) {
57 if (el
.style
[name
] !== undefined) {
59 end
: TransitionEndEvent
[name
]
67 function transitionEndEmulator(duration
) {
72 $(this).one(Util
.TRANSITION_END
, function () {
76 setTimeout(function () {
78 Util
.triggerTransitionEnd(_this
);
85 function setTransitionEndSupport() {
86 transition
= transitionEndTest();
88 $.fn
.emulateTransitionEnd
= transitionEndEmulator
;
90 if (Util
.supportsTransitionEnd()) {
91 $.event
.special
[Util
.TRANSITION_END
] = getSpecialTransitionEndEvent();
96 * --------------------------------------------------------------------------
98 * --------------------------------------------------------------------------
103 TRANSITION_END
: 'bsTransitionEnd',
105 getUID
: function getUID(prefix
) {
107 // eslint-disable-next-line no-bitwise
108 prefix
+= ~~(Math
.random() * MAX_UID
); // "~~" acts like a faster Math.floor() here
109 } while (document
.getElementById(prefix
));
112 getSelectorFromElement
: function getSelectorFromElement(element
) {
113 var selector
= element
.getAttribute('data-target');
116 selector
= element
.getAttribute('href') || '';
117 selector
= /^#[a-z]/i.test(selector
) ? selector
: null;
122 reflow
: function reflow(element
) {
123 return element
.offsetHeight
;
125 triggerTransitionEnd
: function triggerTransitionEnd(element
) {
126 $(element
).trigger(transition
.end
);
128 supportsTransitionEnd
: function supportsTransitionEnd() {
129 return Boolean(transition
);
131 typeCheckConfig
: function typeCheckConfig(componentName
, config
, configTypes
) {
132 for (var property
in configTypes
) {
133 if (configTypes
.hasOwnProperty(property
)) {
134 var expectedTypes
= configTypes
[property
];
135 var value
= config
[property
];
136 var valueType
= value
&& isElement(value
) ? 'element' : toType(value
);
138 if (!new RegExp(expectedTypes
).test(valueType
)) {
139 throw new Error(componentName
.toUpperCase() + ': ' + ('Option "' + property
+ '" provided type "' + valueType
+ '" ') + ('but expected type "' + expectedTypes
+ '".'));
146 setTransitionEndSupport();
150 //# sourceMappingURL=util.js.map