{"version":3,"sources":["https:\/\/immet-dist.spbstu.ru\/lib\/amd\/src\/popper.js"],"names":["global","factory","exports","module","define","amd","Popper","isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","length","navigator","userAgent","indexOf","supportsMicroTasks","Promise","debounce","fn","called","resolve","then","scheduled","setTimeout","isFunction","functionToCheck","toString","call","getStyleComputedProperty","element","property","nodeType","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","ownerDocument","_getStyleComputedProp","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","arguments","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","split","isIE10","isIE10$1","appVersion","getSize","computedStyle","Math","max","getWindowSizes","height","width","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","obj","value","_extends","assign","source","hasOwnProperty","getClientRect","offsets","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","sort","a","b","filteredAreas","filter","_ref2","computedPlacement","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","findIndex","prop","cur","match","runModifiers","modifiers","data","ends","modifiersToRun","slice","forEach","console","warn","enabled","update","isDestroyed","arrowStyles","attributes","flipped","options","flip","originalPlacement","position","isCreated","onCreate","onUpdate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","disableEventListeners","removeOnDestroy","removeChild","getWindow","defaultView","attachToScrollParents","event","callback","scrollParents","isBody","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","cancelAnimationFrame","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","setAttribute","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","getOppositeVariation","placements","validPlacements","clockwise","counter","index","concat","reverse","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","toValue","str","size","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","index2","_data$offsets","_this","requestAnimationFrame","bind","Defaults","jquery","modifierOptions","onLoad","Utils","PopperUtils","shift","shiftvariation","isVertical","shiftOffsets","preventOverflow","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","arrowElement","querySelector","len","sideCapitalized","toLowerCase","altSide","arrowElementSize","center","popperMarginSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","inner","subtractLength","hide","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","willChange","invertTop","invertLeft","applyStyle"],"mappings":"mSAwBC,UAAUA,CAAV,CAAkBC,CAAlB,CAA2B,CACP,QAAnB,uBAAOC,CAAAA,OAAP,qBAAOA,OAAP,IAAiD,WAAlB,QAAOC,CAAAA,MAAtC,CAA+DA,MAAM,CAACD,OAAP,CAAiBD,CAAO,EAAvF,CACkB,UAAlB,QAAOG,CAAAA,MAAP,EAAgCA,MAAM,CAACC,GAAvC,CAA6CD,OAAM,eAACH,CAAD,CAAnD,CACCD,CAAM,CAACM,MAAP,CAAgBL,CAAO,EACzB,CAJA,EAIC,IAJD,CAIQ,UAAY,CAAE,aAKvB,OAHIM,CAAAA,CAAS,CAAqB,WAAlB,QAAOC,CAAAA,MAAP,EAA4D,WAA3B,QAAOA,CAAAA,MAAM,CAACC,QAG\/D,CAFIC,CAAqB,CAAG,CAAC,MAAD,CAAS,SAAT,CAAoB,SAApB,CAE5B,CADIC,CAAe,CAAG,CACtB,CAASC,CAAC,CAAG,CAAb,CAAgBA,CAAC,CAAGF,CAAqB,CAACG,MAA1C,CAAkDD,CAAC,EAAI,CAAvD,CAA0D,CACxD,GAAIL,CAAS,EAA6D,CAAzD,EAAAO,SAAS,CAACC,SAAV,CAAoBC,OAApB,CAA4BN,CAAqB,CAACE,CAAD,CAAjD,CAAjB,CAA6E,CAC3ED,CAAe,CAAG,CAAlB,CACA,KACD,CACF,CAVoB,GAuCjBM,CAAAA,CAAkB,CAAGV,CAAS,EAAIC,MAAM,CAACU,OAvCxB,CAkDjBC,CAAQ,CAAGF,CAAkB,CAtCjC,SAA2BG,CAA3B,CAA+B,CAC7B,GAAIC,CAAAA,CAAM,GAAV,CACA,MAAO,WAAY,CACjB,GAAIA,CAAJ,CAAY,CACV,MACD,CACDA,CAAM,GAAN,CACAH,OAAO,CAACI,OAAR,GAAkBC,IAAlB,CAAuB,UAAY,CACjCF,CAAM,GAAN,CACAD,CAAE,EACH,CAHD,CAID,CACF,CA0BgC,CAxBjC,SAAsBA,CAAtB,CAA0B,CACxB,GAAII,CAAAA,CAAS,GAAb,CACA,MAAO,WAAY,CACjB,GAAI,CAACA,CAAL,CAAgB,CACdA,CAAS,GAAT,CACAC,UAAU,CAAC,UAAY,CACrBD,CAAS,GAAT,CACAJ,CAAE,EACH,CAHS,CAGPT,CAHO,CAIX,CACF,CACF,CArCoB,CA2DrB,QAASe,CAAAA,CAAT,CAAoBC,CAApB,CAAqC,CAEnC,MAAOA,CAAAA,CAAe,EAA+C,mBAA3C,GADZ,EACY,CAAQC,QAAR,CAAiBC,IAAjB,CAAsBF,CAAtB,CAC3B,CASD,QAASG,CAAAA,CAAT,CAAkCC,CAAlC,CAA2CC,CAA3C,CAAqD,CACnD,GAAyB,CAArB,GAAAD,CAAO,CAACE,QAAZ,CAA4B,CAC1B,MAAO,EACR,CAED,GAAIC,CAAAA,CAAG,CAAG1B,MAAM,CAAC2B,gBAAP,CAAwBJ,CAAxB,CAAiC,IAAjC,CAAV,CACA,MAAOC,CAAAA,CAAQ,CAAGE,CAAG,CAACF,CAAD,CAAN,CAAmBE,CACnC,CASD,QAASE,CAAAA,CAAT,CAAuBL,CAAvB,CAAgC,CAC9B,GAAyB,MAArB,GAAAA,CAAO,CAACM,QAAZ,CAAiC,CAC\/B,MAAON,CAAAA,CACR,CACD,MAAOA,CAAAA,CAAO,CAACO,UAAR,EAAsBP,CAAO,CAACQ,IACtC,CASD,QAASC,CAAAA,CAAT,CAAyBT,CAAzB,CAAkC,CAEhC,GAAI,CAACA,CAAL,CAAc,CACZ,MAAOvB,CAAAA,MAAM,CAACC,QAAP,CAAgBgC,IACxB,CAED,OAAQV,CAAO,CAACM,QAAhB,EACE,IAAK,MAAL,CACA,IAAK,MAAL,CACE,MAAON,CAAAA,CAAO,CAACW,aAAR,CAAsBD,IAA7B,CACF,IAAK,WAAL,CACE,MAAOV,CAAAA,CAAO,CAACU,IAAf,CALJ,CAUA,GAAIE,CAAAA,CAAqB,CAAGb,CAAwB,CAACC,CAAD,CAApD,CACIa,CAAQ,CAAGD,CAAqB,CAACC,QADrC,CAEIC,CAAS,CAAGF,CAAqB,CAACE,SAFtC,CAGIC,CAAS,CAAGH,CAAqB,CAACG,SAHtC,CAKA,GAAI,gBAAgBC,IAAhB,CAAqBH,CAAQ,CAAGE,CAAX,CAAuBD,CAA5C,CAAJ,CAA4D,CAC1D,MAAOd,CAAAA,CACR,CAED,MAAOS,CAAAA,CAAe,CAACJ,CAAa,CAACL,CAAD,CAAd,CACvB,CASD,QAASiB,CAAAA,CAAT,CAAyBjB,CAAzB,CAAkC,IAE5BkB,CAAAA,CAAY,CAAGlB,CAAO,EAAIA,CAAO,CAACkB,YAFN,CAG5BZ,CAAQ,CAAGY,CAAY,EAAIA,CAAY,CAACZ,QAHZ,CAKhC,GAAI,CAACA,CAAD,EAA0B,MAAb,GAAAA,CAAb,EAAiD,MAAb,GAAAA,CAAxC,CAA6D,CAC3D,GAAIN,CAAJ,CAAa,CACX,MAAOA,CAAAA,CAAO,CAACW,aAAR,CAAsBQ,eAC9B,CAED,MAAO1C,CAAAA,MAAM,CAACC,QAAP,CAAgByC,eACxB,CAID,GAAuD,CAAC,CAApD,IAAC,IAAD,CAAO,OAAP,EAAgBlC,OAAhB,CAAwBiC,CAAY,CAACZ,QAArC,GAAgH,QAAvD,GAAAP,CAAwB,CAACmB,CAAD,CAAe,UAAf,CAArF,CAA8H,CAC5H,MAAOD,CAAAA,CAAe,CAACC,CAAD,CACvB,CAED,MAAOA,CAAAA,CACR,CAED,QAASE,CAAAA,CAAT,CAA2BpB,CAA3B,CAAoC,CAClC,GAAIM,CAAAA,CAAQ,CAAGN,CAAO,CAACM,QAAvB,CAEA,GAAiB,MAAb,GAAAA,CAAJ,CAAyB,CACvB,QACD,CACD,MAAoB,MAAb,GAAAA,CAAQ,EAAeW,CAAe,CAACjB,CAAO,CAACqB,iBAAT,CAAf,GAA+CrB,CAC9E,CASD,QAASsB,CAAAA,CAAT,CAAiBC,CAAjB,CAAuB,CACrB,GAAwB,IAApB,GAAAA,CAAI,CAAChB,UAAT,CAA8B,CAC5B,MAAOe,CAAAA,CAAO,CAACC,CAAI,CAAChB,UAAN,CACf,CAED,MAAOgB,CAAAA,CACR,CAUD,QAASC,CAAAA,CAAT,CAAgCC,CAAhC,CAA0CC,CAA1C,CAAoD,CAElD,GAAI,CAACD,CAAD,EAAa,CAACA,CAAQ,CAACvB,QAAvB,EAAmC,CAACwB,CAApC,EAAgD,CAACA,CAAQ,CAACxB,QAA9D,CAAwE,CACtE,MAAOzB,CAAAA,MAAM,CAACC,QAAP,CAAgByC,eACxB,CAJiD,GAO9CQ,CAAAA,CAAK,CAAGF,CAAQ,CAACG,uBAAT,CAAiCF,CAAjC,EAA6CG,IAAI,CAACC,2BAPZ,CAQ9CC,CAAK,CAAGJ,CAAK,CAAGF,CAAH,CAAcC,CARmB,CAS9CM,CAAG,CAAGL,CAAK,CAAGD,CAAH,CAAcD,CATqB,CAY9CQ,CAAK,CAAGvD,QAAQ,CAACwD,WAAT,EAZsC,CAalDD,CAAK,CAACE,QAAN,CAAeJ,CAAf,CAAsB,CAAtB,EACAE,CAAK,CAACG,MAAN,CAAaJ,CAAb,CAAkB,CAAlB,EACA,GAAIK,CAAAA,CAAuB,CAAGJ,CAAK,CAACI,uBAApC,CAIA,GAAIZ,CAAQ,GAAKY,CAAb,EAAwCX,CAAQ,GAAKW,CAArD,EAAgFN,CAAK,CAACO,QAAN,CAAeN,CAAf,CAApF,CAAyG,CACvG,GAAIZ,CAAiB,CAACiB,CAAD,CAArB,CAAgD,CAC9C,MAAOA,CAAAA,CACR,CAED,MAAOpB,CAAAA,CAAe,CAACoB,CAAD,CACvB,CAGD,GAAIE,CAAAA,CAAY,CAAGjB,CAAO,CAACG,CAAD,CAA1B,CACA,GAAIc,CAAY,CAAC\/B,IAAjB,CAAuB,CACrB,MAAOgB,CAAAA,CAAsB,CAACe,CAAY,CAAC\/B,IAAd,CAAoBkB,CAApB,CAC9B,CAFD,IAEO,CACL,MAAOF,CAAAA,CAAsB,CAACC,CAAD,CAAWH,CAAO,CAACI,CAAD,CAAP,CAAkBlB,IAA7B,CAC9B,CACF,CAUD,QAASgC,CAAAA,CAAT,CAAmBxC,CAAnB,CAA4B,IACtByC,CAAAA,CAAI,CAAsB,CAAnB,CAAAC,SAAS,CAAC5D,MAAV,EAAwB4D,SAAS,CAAC,CAAD,CAAT,SAAxB,CAAqDA,SAAS,CAAC,CAAD,CAA9D,CAAoE,KADrD,CAGtBC,CAAS,CAAY,KAAT,GAAAF,CAAI,CAAa,WAAb,CAA2B,YAHrB,CAItBnC,CAAQ,CAAGN,CAAO,CAACM,QAJG,CAM1B,GAAiB,MAAb,GAAAA,CAAQ,EAA4B,MAAb,GAAAA,CAA3B,CAAgD,IAC1CsC,CAAAA,CAAI,CAAG5C,CAAO,CAACW,aAAR,CAAsBQ,eADa,CAE1C0B,CAAgB,CAAG7C,CAAO,CAACW,aAAR,CAAsBkC,gBAAtB,EAA0CD,CAFnB,CAG9C,MAAOC,CAAAA,CAAgB,CAACF,CAAD,CACxB,CAED,MAAO3C,CAAAA,CAAO,CAAC2C,CAAD,CACf,CAWD,QAASG,CAAAA,CAAT,CAAuBC,CAAvB,CAA6B\/C,CAA7B,CAAsC,IAChCgD,CAAAA,CAAQ,CAAsB,CAAnB,CAAAN,SAAS,CAAC5D,MAAV,EAAwB4D,SAAS,CAAC,CAAD,CAAT,SAAxB,CAAqDA,SAAS,CAAC,CAAD,CAA9D,GADqB,CAGhCO,CAAS,CAAGT,CAAS,CAACxC,CAAD,CAAU,KAAV,CAHW,CAIhCkD,CAAU,CAAGV,CAAS,CAACxC,CAAD,CAAU,MAAV,CAJU,CAKhCmD,CAAQ,CAAGH,CAAQ,CAAG,CAAC,CAAJ,CAAQ,CALK,CAMpCD,CAAI,CAACK,GAAL,EAAYH,CAAS,CAAGE,CAAxB,CACAJ,CAAI,CAACM,MAAL,EAAeJ,CAAS,CAAGE,CAA3B,CACAJ,CAAI,CAACO,IAAL,EAAaJ,CAAU,CAAGC,CAA1B,CACAJ,CAAI,CAACQ,KAAL,EAAcL,CAAU,CAAGC,CAA3B,CACA,MAAOJ,CAAAA,CACR,CAYD,QAASS,CAAAA,CAAT,CAAwBC,CAAxB,CAAgCC,CAAhC,CAAsC,IAChCC,CAAAA,CAAK,CAAY,GAAT,GAAAD,CAAI,CAAW,MAAX,CAAoB,KADA,CAEhCE,CAAK,CAAa,MAAV,GAAAD,CAAK,CAAc,OAAd,CAAwB,QAFL,CAIpC,MAAO,CAACF,CAAM,CAAC,SAAWE,CAAX,CAAmB,OAApB,CAAN,CAAmCE,KAAnC,CAAyC,IAAzC,EAA+C,CAA\/C,CAAD,CAAqD,EAACJ,CAAM,CAAC,SAAWG,CAAX,CAAmB,OAApB,CAAN,CAAmCC,KAAnC,CAAyC,IAAzC,EAA+C,CAA\/C,CAC9D,CA9RoB,GAsSjBC,CAAAA,EAAM,OAtSW,CAwSjBC,EAAQ,CAAG,UAAY,CACzB,GAAID,EAAM,SAAV,CAA0B,CACxBA,EAAM,CAA+C,CAAC,CAA7C,GAAA\/E,SAAS,CAACiF,UAAV,CAAqB\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\/D,CAAAA,CAAK,CAAG+D,CAAI,CAAC\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\/B,CAA5C,CAKAwD,CAAI,CAAC\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\/E,CAAK,CAAC+E,WAAN,CAAoB,IAApB,CACA\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\/H,CAA+I,UAA\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\/C,CAAAA,CAAS,CAAG+C,CAAI,CAAC\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\/C,CAAAA,CAAS,CAAG+C,CAAI,CAAC\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\/C,CAAS,CAAG+C,CAAI,CAAC\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\/C,CAAAA,CAAS,CAAG+C,CAAI,CAAC\/C,SADF,CAEfqI,CAAa,CAAGrI,CAAS,CAAC3E,KAAV,CAAgB,GAAhB,EAAqB,CAArB,CAFD,CAGf6N,CAAa,CAAGnG,CAAI,CAACtF,OAHN,CAIf6B,CAAM,CAAG4J,CAAa,CAAC5J,MAJR,CAKfC,CAAS,CAAG2J,CAAa,CAAC3J,SALX,CAOfyC,CAAO,CAAgD,CAAC,CAA9C,IAAC,MAAD,CAAS,OAAT,EAAkBvL,OAAlB,CAA0B4R,CAA1B,CAPK,CASf8D,CAAc,CAA8C,CAAC,CAA5C,IAAC,KAAD,CAAQ,MAAR,EAAgB1V,OAAhB,CAAwB4R,CAAxB,CATF,CAWnB\/I,CAAM,CAAC0C,CAAO,CAAG,MAAH,CAAY,KAApB,CAAN,CAAmCzC,CAAS,CAAC8I,CAAD,CAAT,EAA4B8D,CAAc,CAAG7M,CAAM,CAAC0C,CAAO,CAAG,OAAH,CAAa,QAArB,CAAT,CAA0C,CAApF,CAAnC,CAEAe,CAAI,CAAC\/C,SAAL,CAAiBwB,CAAoB,CAACxB,CAAD,CAArC,CACA+C,CAAI,CAACtF,OAAL,CAAa6B,MAAb,CAAsB9B,CAAa,CAAC8B,CAAD,CAAnC,CAEA,MAAOyD,CAAAA,CACR,CA8NQ,CAvMO,CA0NdqJ,IAAI,CAAE,CAEJjT,KAAK,CAAE,GAFH,CAIJmK,OAAO,GAJH,CAMJzM,EAAE,CA9SN,SAAckM,CAAd,CAAoB,CAClB,GAAI,CAACgE,CAAkB,CAAChE,CAAI,CAAC9G,QAAL,CAAc6G,SAAf,CAA0B,MAA1B,CAAkC,iBAAlC,CAAvB,CAA6E,CAC3E,MAAOC,CAAAA,CACR,CAHiB,GAKd9C,CAAAA,CAAO,CAAG8C,CAAI,CAACtF,OAAL,CAAa8B,SALT,CAMd8M,CAAK,CAAGhK,CAAI,CAACU,CAAI,CAAC9G,QAAL,CAAc6G,SAAf,CAA0B,SAAUnI,CAAV,CAAoB,CAC5D,MAAyB,iBAAlB,GAAAA,CAAQ,CAAC2J,IACjB,CAFe,CAAJ,CAET5E,UARe,CAUlB,GAAIO,CAAO,CAACpF,MAAR,CAAiBwR,CAAK,CAACzR,GAAvB,EAA8BqF,CAAO,CAACnF,IAAR,CAAeuR,CAAK,CAACtR,KAAnD,EAA4DkF,CAAO,CAACrF,GAAR,CAAcyR,CAAK,CAACxR,MAAhF,EAA0FoF,CAAO,CAAClF,KAAR,CAAgBsR,CAAK,CAACvR,IAApH,CAA0H,CAExH,GAAI,KAAAiI,CAAI,CAACqJ,IAAT,CAAwB,CACtB,MAAOrJ,CAAAA,CACR,CAEDA,CAAI,CAACqJ,IAAL,IACArJ,CAAI,CAACW,UAAL,CAAgB,qBAAhB,EAAyC,EAC1C,CARD,IAQO,CAEL,GAAI,KAAAX,CAAI,CAACqJ,IAAT,CAAyB,CACvB,MAAOrJ,CAAAA,CACR,CAEDA,CAAI,CAACqJ,IAAL,IACArJ,CAAI,CAACW,UAAL,CAAgB,qBAAhB,IACD,CAED,MAAOX,CAAAA,CACR,CA2QO,CA1NQ,CAkPduJ,YAAY,CAAE,CAEZnT,KAAK,CAAE,GAFK,CAIZmK,OAAO,GAJK,CAMZzM,EAAE,CAp9BN,SAAsBkM,CAAtB,CAA4Ba,CAA5B,CAAqC,IAC\/BzC,CAAAA,CAAC,CAAGyC,CAAO,CAACzC,CADmB,CAE\/BG,CAAC,CAAGsC,CAAO,CAACtC,CAFmB,CAG\/BhC,CAAM,CAAGyD,CAAI,CAACtF,OAAL,CAAa6B,MAHS,CAO\/BiN,CAA2B,CAAGlK,CAAI,CAACU,CAAI,CAAC9G,QAAL,CAAc6G,SAAf,CAA0B,SAAUnI,CAAV,CAAoB,CAClF,MAAyB,YAAlB,GAAAA,CAAQ,CAAC2J,IACjB,CAFqC,CAAJ,CAE\/BkI,eATgC,CAUnC,GAAID,CAA2B,SAA\/B,CAA+C,CAC7CnJ,OAAO,CAACC,IAAR,CAAa,+HAAb,CACD,CAZkC,GAa\/BmJ,CAAAA,CAAe,CAAGD,CAA2B,SAA3B,CAA4CA,CAA5C,CAA0E3I,CAAO,CAAC4I,eAbrE,CAe\/B9T,CAAY,CAAGD,CAAe,CAACsK,CAAI,CAAC9G,QAAL,CAAcqD,MAAf,CAfC,CAgB\/BmN,CAAgB,CAAG\/O,CAAqB,CAAChF,CAAD,CAhBT,CAmB\/BuC,CAAM,CAAG,CACX8I,QAAQ,CAAEzE,CAAM,CAACyE,QADN,CAnBsB,CAwB\/BtG,CAAO,CAAG,CACZ3C,IAAI,CAAEa,IAAI,CAAC4O,KAAL,CAAWjL,CAAM,CAACxE,IAAlB,CADM,CAEZF,GAAG,CAAEe,IAAI,CAAC4O,KAAL,CAAWjL,CAAM,CAAC1E,GAAlB,CAFO,CAGZC,MAAM,CAAEc,IAAI,CAAC4O,KAAL,CAAWjL,CAAM,CAACzE,MAAlB,CAHI,CAIZE,KAAK,CAAEY,IAAI,CAAC4O,KAAL,CAAWjL,CAAM,CAACvE,KAAlB,CAJK,CAxBqB,CA+B\/BI,CAAK,CAAS,QAAN,GAAAgG,CAAC,CAAgB,KAAhB,CAAwB,QA\/BF,CAgC\/B\/F,CAAK,CAAS,OAAN,GAAAkG,CAAC,CAAe,MAAf,CAAwB,OAhCF,CAqC\/BoL,CAAgB,CAAGnI,CAAwB,CAAC,WAAD,CArCZ,CAgD\/BzJ,CAAI,CAAG,IAAK,EAhDmB,CAiD\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","sourcesContent":["\/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.12.6\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and\/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\/\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Popper = factory());\n}(this, (function () { 'use strict';\n\nvar isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n\/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*\/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n\/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n *\/\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n\/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n *\/\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n \/\/ NOTE: 1 DOM access here\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n\/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n *\/\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n\/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n *\/\nfunction getScrollParent(element) {\n \/\/ Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return window.document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n \/\/ Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (\/(auto|scroll)\/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n\/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n *\/\nfunction getOffsetParent(element) {\n \/\/ NOTE: 1 DOM access here\n var offsetParent = element && element.offsetParent;\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement;\n }\n\n return window.document.documentElement;\n }\n\n \/\/ .offsetParent will return the closest TD or TABLE in case\n \/\/ no offsetParent is present, I hate this job...\n if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n\/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n *\/\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n\/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n *\/\nfunction findCommonOffsetParent(element1, element2) {\n \/\/ This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return window.document.documentElement;\n }\n\n \/\/ Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n \/\/ Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n \/\/ Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n \/\/ one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n\/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n *\/\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n\/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n *\/\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n\/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n *\/\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return +styles['border' + sideA + 'Width'].split('px')[0] + +styles['border' + sideB + 'Width'].split('px')[0];\n}\n\n\/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n *\/\nvar isIE10 = undefined;\n\nvar isIE10$1 = function () {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n};\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE10$1() ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0);\n}\n\nfunction getWindowSizes() {\n var body = window.document.body;\n var html = window.document.documentElement;\n var computedStyle = isIE10$1() && window.getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n *\/\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n\/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n *\/\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n \/\/ IE10 10 FIX: Please, don't ask, the element isn't\n \/\/ considered in DOM in some circumstances...\n \/\/ This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10$1()) {\n try {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n \/\/ subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n \/\/ if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n \/\/ we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var isIE10 = isIE10$1();\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = +styles.borderTopWidth.split('px')[0];\n var borderLeftWidth = +styles.borderLeftWidth.split('px')[0];\n\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n \/\/ Subtract margins of documentElement in case it's being used as parent\n \/\/ we do this only on HTML because it's the only element that behaves\n \/\/ differently when margins are applied to it. The margins are included in\n \/\/ the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = +styles.marginTop.split('px')[0];\n var marginLeft = +styles.marginLeft.split('px')[0];\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n \/\/ Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = getScroll(html);\n var scrollLeft = getScroll(html, 'left');\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n\/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n *\/\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n\n\/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n *\/\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n \/\/ NOTE: 1 DOM access here\n var boundaries = { top: 0, left: 0 };\n var offsetParent = findCommonOffsetParent(popper, reference);\n\n \/\/ Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n \/\/ Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(popper));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent);\n\n \/\/ In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n \/\/ for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n \/\/ Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n\/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n *\/\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n\/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n *\/\nfunction getReferenceOffsets(state, popper, reference) {\n var commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n\n\/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n *\/\nfunction getOuterSizes(element) {\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n\/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n *\/\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(\/left|right|bottom|top\/g, function (matched) {\n return hash[matched];\n });\n}\n\n\/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n *\/\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n \/\/ Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n \/\/ Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n \/\/ depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] \/ 2 - popperRect[measurement] \/ 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n\/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n *\/\nfunction find(arr, check) {\n \/\/ use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n \/\/ use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n\/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n *\/\nfunction findIndex(arr, prop, value) {\n \/\/ use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n \/\/ use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n\/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n *\/\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n \/\/ eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; \/\/ eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n \/\/ Add properties to offsets to make them a complete clientRect object\n \/\/ we do this before each modifier to make sure the previous one doesn't\n \/\/ mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n\/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n *\/\nfunction update() {\n \/\/ if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n \/\/ compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference);\n\n \/\/ compute auto placement, store placement inside the data object,\n \/\/ modifiers will be able to edit `placement` if needed\n \/\/ and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n \/\/ store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n \/\/ compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n data.offsets.popper.position = 'absolute';\n\n \/\/ run the modifiers\n data = runModifiers(this.modifiers, data);\n\n \/\/ the first `update` will call `onCreate` callback\n \/\/ the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n\/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n *\/\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n\/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n *\/\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length - 1; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n\/**\n * Destroy the popper\n * @method\n * @memberof Popper\n *\/\nfunction destroy() {\n this.state.isDestroyed = true;\n\n \/\/ touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n \/\/ remove the popper if user explicity asked for the deletion on destroy\n \/\/ do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n\/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n *\/\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n\/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n *\/\nfunction setupEventListeners(reference, options, state, updateBound) {\n \/\/ Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n \/\/ Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n\/**\n * It will add resize\/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n *\/\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n\/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n *\/\nfunction removeEventListeners(reference, state) {\n \/\/ Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n \/\/ Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n \/\/ Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n\/**\n * It will remove resize\/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n *\/\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n window.cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n\/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n *\/\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n\/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n *\/\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n \/\/ add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n\/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n *\/\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n\/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n *\/\nfunction applyStyle(data) {\n \/\/ any property present in `data.styles` will be applied to the popper,\n \/\/ in this way we can make the 3rd party modifiers add custom styles to it\n \/\/ Be aware, modifiers could override the properties defined in the previous\n \/\/ lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n \/\/ any property present in `data.attributes` will be applied to the popper,\n \/\/ they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n \/\/ if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n\/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n *\/\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n \/\/ compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n \/\/ compute auto placement, store placement inside the data object,\n \/\/ modifiers will be able to edit `placement` if needed\n \/\/ and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n \/\/ Apply `position` to popper before anything else because\n \/\/ without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n\n\/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n *\/\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n \/\/ Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n \/\/ Styles\n var styles = {\n position: popper.position\n };\n\n \/\/ floor sides to avoid blurry text\n var offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right)\n };\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n \/\/ if gpuAcceleration is set to `true` and transform is supported,\n \/\/ we use `translate3d` to apply the position to the popper we\n \/\/ automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n \/\/ now, let's make a step back and look at this code closely (wtf?)\n \/\/ If the content of the popper grows once it's been positioned, it\n \/\/ may happen that the popper gets misplaced because of the new content\n \/\/ overflowing its reference element\n \/\/ To avoid this problem, we provide two options (x and y), which allow\n \/\/ the consumer to define the offset origin.\n \/\/ If we position a popper on top of a reference element, we can set\n \/\/ `x` to `top` to make the popper grow towards its top instead of\n \/\/ its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n \/\/ othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n \/\/ Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n \/\/ Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n\/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n *\/\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n\/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n *\/\nfunction arrow(data, options) {\n \/\/ arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n \/\/ if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n \/\/ if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n \/\/ if the arrowElement isn't a query selector we must check that the\n \/\/ provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n \/\/\n \/\/ extends keepTogether behavior making sure the popper and its\n \/\/ reference have enough pixels in conjuction\n \/\/\n\n \/\/ top\/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n \/\/ bottom\/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n\n \/\/ compute center of the popper\n var center = reference[side] + reference[len] \/ 2 - arrowElementSize \/ 2;\n\n \/\/ Compute the sideValue using the updated popper offsets\n \/\/ take popper margin in account because we don't have this info available\n var popperMarginSide = getStyleComputedProperty(data.instance.popper, 'margin' + sideCapitalized).replace('px', '');\n var sideValue = center - getClientRect(data.offsets.popper)[side] - popperMarginSide;\n\n \/\/ prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {};\n data.offsets.arrow[side] = Math.round(sideValue);\n data.offsets.arrow[altSide] = ''; \/\/ make sure to unset any eventual altSide value from the DOM node\n\n return data;\n}\n\n\/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n *\/\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n\/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n *\/\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n\/\/ Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n\/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n *\/\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n\/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n *\/\nfunction flip(data, options) {\n \/\/ if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n \/\/ seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n \/\/ using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n \/\/ flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n \/\/ this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n \/\/ this object contains `position`, we want to preserve it along with\n \/\/ any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n\/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n *\/\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n\/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n *\/\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n \/\/ separate value from unit\n var split = str.match(\/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)\/);\n var value = +split[1];\n var unit = split[2];\n\n \/\/ If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] \/ 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n \/\/ if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size \/ 100 * value;\n } else {\n \/\/ if is an explicit pixel unit, we get rid of the unit and keep the value\n \/\/ if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n\/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n *\/\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n \/\/ Use height if placement is left or right and index is 0 otherwise use width\n \/\/ in this way the first offset will use an axis and the second one\n \/\/ will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n \/\/ Split the offset string to obtain a list of values and operands\n \/\/ The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(\/(\\+|\\-)\/).map(function (frag) {\n return frag.trim();\n });\n\n \/\/ Detect if the offset string contains a pair of values or a single one\n \/\/ they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(\/,|\\s\/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n \/\/ If divider is found, we divide the list of values and operands to divide\n \/\/ them by ofset X and Y.\n var splitRegex = \/\\s*,\\s*|\\s+\/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n \/\/ Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n \/\/ Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n \/\/ This aggregates any `+` or `-` sign that aren't considered operators\n \/\/ e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n \/\/ Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n \/\/ Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n\/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n *\/\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n\/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n *\/\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n \/\/ If offsetParent is the reference element, we really want to\n \/\/ go one step up and use the next offsetParent as reference to\n \/\/ avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement);\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n\/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n *\/\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n \/\/ if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n\/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n *\/\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n \/\/ Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n \/\/ Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n\/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n *\/\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n\/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n *\/\n\n\/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n *\/\nvar modifiers = {\n \/**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n *\/\n shift: {\n \/** @prop {number} order=100 - Index used to define the order of execution *\/\n order: 100,\n \/** @prop {Boolean} enabled=true - Whether the modifier is enabled or not *\/\n enabled: true,\n \/** @prop {ModifierFn} *\/\n fn: shift\n },\n\n \/**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https:\/\/github.com\/FezVrasta\/popper.js\/issues\/373)\n *\n * @memberof modifiers\n * @inner\n *\/\n offset: {\n \/** @prop {number} order=200 - Index used to define the order of execution *\/\n order: 200,\n \/** @prop {Boolean} enabled=true - Whether the modifier is enabled or not *\/\n enabled: true,\n \/** @prop {ModifierFn} *\/\n fn: offset,\n \/** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n *\/\n offset: 0\n },\n\n \/**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" \u2014 or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n *\/\n preventOverflow: {\n \/** @prop {number} order=300 - Index used to define the order of execution *\/\n order: 300,\n \/** @prop {Boolean} enabled=true - Whether the modifier is enabled or not *\/\n enabled: true,\n \/** @prop {ModifierFn} *\/\n fn: preventOverflow,\n \/**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n *\/\n priority: ['left', 'right', 'top', 'bottom'],\n \/**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n *\/\n padding: 5,\n \/**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n *\/\n boundariesElement: 'scrollParent'\n },\n\n \/**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n *\/\n keepTogether: {\n \/** @prop {number} order=400 - Index used to define the order of execution *\/\n order: 400,\n \/** @prop {Boolean} enabled=true - Whether the modifier is enabled or not *\/\n enabled: true,\n \/** @prop {ModifierFn} *\/\n fn: keepTogether\n },\n\n \/**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n *\/\n arrow: {\n \/** @prop {number} order=500 - Index used to define the order of execution *\/\n order: 500,\n \/** @prop {Boolean} enabled=true - Whether the modifier is enabled or not *\/\n enabled: true,\n \/** @prop {ModifierFn} *\/\n fn: arrow,\n \/** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow *\/\n element: '[x-arrow]'\n },\n\n \/**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n *\/\n flip: {\n \/** @prop {number} order=600 - Index used to define the order of execution *\/\n order: 600,\n \/** @prop {Boolean} enabled=true - Whether the modifier is enabled or not *\/\n enabled: true,\n \/** @prop {ModifierFn} *\/\n fn: flip,\n \/**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n *\/\n behavior: 'flip',\n \/**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n *\/\n padding: 5,\n \/**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n *\/\n boundariesElement: 'viewport'\n },\n\n \/**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n *\/\n inner: {\n \/** @prop {number} order=700 - Index used to define the order of execution *\/\n order: 700,\n \/** @prop {Boolean} enabled=false - Whether the modifier is enabled or not *\/\n enabled: false,\n \/** @prop {ModifierFn} *\/\n fn: inner\n },\n\n \/**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n *\/\n hide: {\n \/** @prop {number} order=800 - Index used to define the order of execution *\/\n order: 800,\n \/** @prop {Boolean} enabled=true - Whether the modifier is enabled or not *\/\n enabled: true,\n \/** @prop {ModifierFn} *\/\n fn: hide\n },\n\n \/**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n *\/\n computeStyle: {\n \/** @prop {number} order=850 - Index used to define the order of execution *\/\n order: 850,\n \/** @prop {Boolean} enabled=true - Whether the modifier is enabled or not *\/\n enabled: true,\n \/** @prop {ModifierFn} *\/\n fn: computeStyle,\n \/**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n *\/\n gpuAcceleration: true,\n \/**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n *\/\n x: 'bottom',\n \/**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n *\/\n y: 'right'\n },\n\n \/**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n *\/\n applyStyle: {\n \/** @prop {number} order=900 - Index used to define the order of execution *\/\n order: 900,\n \/** @prop {Boolean} enabled=true - Whether the modifier is enabled or not *\/\n enabled: true,\n \/** @prop {ModifierFn} *\/\n fn: applyStyle,\n \/** @prop {Function} *\/\n onLoad: applyStyleOnLoad,\n \/**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n *\/\n gpuAcceleration: undefined\n }\n};\n\n\/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n *\/\n\n\/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n *\/\nvar Defaults = {\n \/**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n *\/\n placement: 'bottom',\n\n \/**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n *\/\n eventsEnabled: true,\n\n \/**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n *\/\n removeOnDestroy: false,\n\n \/**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n *\/\n onCreate: function onCreate() {},\n\n \/**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization\/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n *\/\n onUpdate: function onUpdate() {},\n\n \/**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n *\/\n modifiers: modifiers\n};\n\n\/**\n * @callback onCreate\n * @param {dataObject} data\n *\/\n\n\/**\n * @callback onUpdate\n * @param {dataObject} data\n *\/\n\n\/\/ Utils\n\/\/ Methods\nvar Popper = function () {\n \/**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n *\/\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n \/\/ make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n \/\/ with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n \/\/ init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n \/\/ get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n \/\/ Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n \/\/ Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n \/\/ sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n \/\/ modifiers have the ability to execute arbitrary code when Popper.js get inited\n \/\/ such code is executed in the same order of its modifier\n \/\/ they could add new properties to their options configuration\n \/\/ BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n \/\/ fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n \/\/ setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n \/\/ We can't use class properties because they don't get listed in the\n \/\/ class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n \/**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n *\/\n\n\n \/**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n *\/\n\n }]);\n return Popper;\n}();\n\n\/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n *\/\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nreturn Popper;\n\n})));\n\/\/# sourceMappingURL=popper.js.map\n"],"file":"popper.min.js"}