{"version":3,"sources":["../src/util.js"],"names":["Util","$","TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","toType","obj","toString","call","match","toLowerCase","getSpecialTransitionEndEvent","bindType","delegateType","handle","event","target","is","handleObj","handler","apply","arguments","undefined","transitionEndEmulator","duration","called","one","setTimeout","triggerTransitionEnd","setTransitionEndSupport","fn","emulateTransitionEnd","special","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","$selector","find","length","err","getTransitionDurationFromElement","transitionDuration","css","floatTransitionDuration","parseFloat","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase"],"mappings":"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","sourcesContent":["import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Util = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n const TRANSITION_END = 'transitionend'\n const MAX_UID = 1000000\n const MILLISECONDS_MULTIPLIER = 1000\n\n // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n }\n\n function transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n }\n\n function setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n }\n\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n const Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n if (!selector || selector === '#') {\n selector = element.getAttribute('href') || ''\n }\n\n try {\n const $selector = $(document).find(selector)\n return $selector.length > 0 ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n const floatTransitionDuration = parseFloat(transitionDuration)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n\n return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n }\n }\n\n setTransitionEndSupport()\n\n return Util\n})($)\n\nexport default Util\n"],"file":"util.js"}