{"version":3,"sources":["../src/util.js"],"names":["TRANSITION_END","transitionEndEmulator","duration","_this","this","called","$","Util","setTimeout","getUID","prefix","Math","document","getSelectorFromElement","element","selector","hrefAttr","err","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","reflow","offsetHeight","triggerTransitionEnd","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","expectedTypes","value","valueType","toString","call","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","parentNode","jQueryDetection","TypeError","version","bindType","delegateType","handle","event","arguments"],"mappings":"okBAeA,IAAMA,EAAN,gBAsBA,SAAAC,EAAAC,GAAyC,IAAAC,EAAAC,KACnCC,GAAJ,EAYA,OAVAC,EAAAA,MAAAA,IAAYC,EAAZD,eAAiC,WAC/BD,GAAAA,IAGFG,WAAW,WACTH,GACEE,EAAAA,qBAAAA,IAFJC,GAMAJ,KAcF,IAAMG,GAEJP,eAFW,kBAIXS,OAJW,SAAAC,GAKT,GAEEA,MAvDN,IAuDmBC,KAAAA,gBACNC,SAAAA,eAHTF,IAIA,OAAAA,GAGFG,uBAZW,SAAAC,GAaT,IAAIC,EAAWD,EAAAA,aAAf,eAEA,IAAIC,GAAJ,MAAiBA,EAAkB,CACjC,IAAMC,EAAWF,EAAAA,aAAjB,QACAC,EAAWC,GAAAA,MAAYA,EAAmBA,EAA/BA,OAAXD,GAGF,IACE,OAAOH,SAAAA,cAAAA,GAAAA,EAAP,KACA,MAAAK,GACA,OAAA,OAIJC,iCA3BW,SAAAJ,GA4BT,IAAAA,EACE,OAAA,EAIF,IAAIK,EAAqBb,EAAAA,GAAAA,IAAzB,uBACIc,EAAkBd,EAAAA,GAAAA,IAAtB,oBAEMe,EAA0BC,WAAhCH,GACMI,EAAuBD,WAVWF,GAaxC,OAAIC,GAAJE,GAKAJ,EAAqBA,EAAAA,MAAAA,KAArBA,GACAC,EAAkBA,EAAAA,MAAAA,KAAlBA,GA7FJ,KA+FYE,WAAAA,GAAiCA,WAAlCF,KAPL,GAUJI,OAnDW,SAAAV,GAoDT,OAAOA,EAAPW,cAGFC,qBAvDW,SAAAZ,GAwDTR,EAAAA,GAAAA,QAAAA,IAIFqB,sBA5DW,WA6DT,OAAOC,QAAP5B,IAGF6B,UAhEW,SAAAC,GAiET,OAAQA,EAAAA,IAADA,GAAPC,UAGFC,gBApEW,SAAAC,EAAAC,EAAAC,GAqET,IAAK,IAALC,KAAAD,EACE,GAAIE,OAAAA,UAAAA,eAAAA,KAAAA,EAAJD,GAAiE,CAC/D,IAAME,EAAgBH,EAAtBC,GACMG,EAAgBL,EAAtBE,GACMI,EAAgBD,GAAShC,EAAAA,UAATgC,GAAAA,WArH9BT,EAqHQS,KApHCE,SAAAC,KAAAZ,GAAAa,MAAA,eAAA,GAAPC,eAuHM,IAAK,IAAAC,OAAAP,GAAAQ,KAALN,GACE,MAAM,IAAAO,MACDd,EAAHe,cAAA,aAAAZ,EAAA,oBAAAI,EAAA,wBAAAF,EADF,MAzHV,IAAAR,GAkIEmB,eAtFW,SAAAnC,GAuFT,IAAKF,SAAAA,gBAALsC,aACE,OAAA,KAIF,GAAA,mBAAWpC,EAAPqC,YAA2C,CAC7C,IAAMC,EAAOtC,EAAbqC,cACA,OAAOC,aAAAA,WAAAA,EAAP,KAGF,OAAItC,aAAJuC,WACEvC,EAIGA,EAALwC,WAIO/C,EAAAA,eAAoBO,EAA3BwC,YAHE,MAMJC,gBA7GW,WA8GT,QAAA,IAAIjD,EACF,MAAM,IAAAkD,UAAN,kGAGF,IAAMC,EAAUnD,EAAAA,GAAAA,OAAAA,MAAAA,KAAAA,GAAAA,MAAhB,KAOA,GAAImD,EAAAA,GALJ,GAK4BA,EAAAA,GAJ5B,GAFA,IAMqDA,EAAAA,IAJrD,IAIgFA,EAAAA,IAA2BA,EAAAA,GAH3G,GAGoIA,EAAAA,IAFpI,EAGE,MAAM,IAAAV,MAAN,wFAKNxC,EAAAA,kBAzIED,EAAAA,GAAAA,qBAAAA,EACAA,EAAAA,MAAAA,QAAgBC,EAAhBD,iBA7BEoD,SADK1D,EAEL2D,aAFK3D,EAGL4D,OAHK,SAAAC,GAIH,GAAIvD,EAAEuD,EAAFvD,QAAAA,GAAJF,MACE,OAAOyD,EAAAA,UAAAA,QAAAA,MAAAA,KADqBC","file":"../../../scripts/Bootstrap/util-4f5feda337.js","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction 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\nfunction 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\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst 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\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? 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 let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * 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 findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n },\n\n jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n"]}