shepherdjs_rails 2.1.0 → 2.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://Shepherd/webpack/universalModuleDefinition","webpack://Shepherd/webpack/bootstrap","webpack://Shepherd/./node_modules/lodash/isUndefined.js","webpack://Shepherd/./node_modules/lodash/isObjectLike.js","webpack://Shepherd/./node_modules/lodash/isString.js","webpack://Shepherd/./node_modules/lodash/_baseGetTag.js","webpack://Shepherd/./src/js/utils/modal.js","webpack://Shepherd/./src/js/evented.js","webpack://Shepherd/./node_modules/lodash/isFunction.js","webpack://Shepherd/./node_modules/lodash/_overArg.js","webpack://Shepherd/./src/js/utils/dom.js","webpack://Shepherd/./src/js/step.js","webpack://Shepherd/./node_modules/lodash/isArray.js","webpack://Shepherd/./node_modules/lodash/isObject.js","webpack://Shepherd/./node_modules/lodash/isEmpty.js","webpack://Shepherd/./node_modules/lodash/forOwn.js","webpack://Shepherd/./src/js/bind.js","webpack://Shepherd/./src/js/utils.js","webpack://Shepherd/./node_modules/tippy.js/dist/tippy.all.min.js","webpack://Shepherd/(webpack)/buildin/global.js","webpack://Shepherd/./src/js/shepherd.js","webpack://Shepherd/./node_modules/lodash/drop.js","webpack://Shepherd/./node_modules/lodash/_baseSlice.js","webpack://Shepherd/./node_modules/lodash/toInteger.js","webpack://Shepherd/./node_modules/lodash/_baseKeys.js","webpack://Shepherd/./node_modules/lodash/_getTag.js","webpack://Shepherd/./node_modules/lodash/isArguments.js","webpack://Shepherd/./node_modules/lodash/isArrayLike.js","webpack://Shepherd/./node_modules/lodash/isLength.js","webpack://Shepherd/./node_modules/lodash/isBuffer.js","webpack://Shepherd/./node_modules/lodash/_isPrototype.js","webpack://Shepherd/./node_modules/lodash/isTypedArray.js","webpack://Shepherd/./node_modules/lodash/isElement.js","webpack://Shepherd/./node_modules/lodash/isPlainObject.js","webpack://Shepherd/./node_modules/lodash/_getPrototype.js","webpack://Shepherd/./node_modules/lodash/_baseForOwn.js","webpack://Shepherd/./node_modules/lodash/_baseFor.js","webpack://Shepherd/./node_modules/lodash/_createBaseFor.js","webpack://Shepherd/./node_modules/lodash/keys.js","webpack://Shepherd/./node_modules/lodash/_castFunction.js","webpack://Shepherd/./node_modules/element-matches/index.js","webpack://Shepherd/./node_modules/lodash/zipObject.js","webpack://Shepherd/./node_modules/lodash/_assignValue.js","webpack://Shepherd/./node_modules/lodash/_baseAssignValue.js","webpack://Shepherd/./node_modules/lodash/_defineProperty.js","webpack://Shepherd/./node_modules/lodash/_getNative.js","webpack://Shepherd/./node_modules/lodash/eq.js","webpack://Shepherd/./node_modules/lodash/_baseZipObject.js","webpack://Shepherd/./src/js/utils/error-messages.js","webpack://Shepherd/./src/js/tour.js","webpack://Shepherd/./node_modules/lodash/isNumber.js","webpack://Shepherd/./src/js/modal.js","webpack://Shepherd/./node_modules/lodash/defer.js","webpack://Shepherd/./node_modules/lodash/_baseDelay.js","webpack://Shepherd/./node_modules/lodash/_baseRest.js","webpack://Shepherd/./node_modules/lodash/identity.js","webpack://Shepherd/./node_modules/lodash/_overRest.js","webpack://Shepherd/./node_modules/lodash/_apply.js","webpack://Shepherd/./node_modules/lodash/_setToString.js","webpack://Shepherd/./node_modules/lodash/debounce.js","webpack://Shepherd/./node_modules/lodash/now.js","webpack://Shepherd/./node_modules/lodash/_root.js","webpack://Shepherd/./node_modules/lodash/_freeGlobal.js","webpack://Shepherd/./node_modules/lodash/toNumber.js","webpack://Shepherd/./src/js/utils/tooltip-defaults.js","webpack://Shepherd/./src/js/utils/cleanup.js"],"names":["root","factory","exports","module","define","amd","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","undefined","baseGetTag","isArray","isObjectLike","nativeObjectToString","toString","svgNS","elementIds","modalOverlay","modalOverlayMask","modalOverlayMaskOpening","classNames","isVisible","modalTarget","createModalOverlay","element","containerElement","document","createElementNS","setAttributeNS","defsElement","maskContainer","maskRect","maskOpening","maskConsumer","concat","appendChild","positionModalOpening","targetElement","openingElement","getBoundingClientRect","SVGElement","_targetElement$getBou","x","y","width","height","preventModalBodyTouch","event","preventDefault","preventModalOverlayTouch","stopPropagation","closeModalOpening","getModalMaskOpening","modalElement","querySelector","toggleShepherdModalClass","currentElement","shepherdModal","classList","remove","add","Evented","handler","ctx","once","arguments","length","_isUndefined3","default","bindings","push","on","_this","forEach","binding","index","splice","_this2","args","_drop3","context","apply","isObject","tag","func","transform","arg","_modal","addStepEventListeners","_onScreenChange","window","removeEventListener","addEventListener","overlay","passive","cleanupStepEventListeners","elementIsHidden","offsetWidth","offsetHeight","getElementForStep","step","attachTo","options","op","selector","type","_typeof","_slicedToArray","split","HTMLElement","_evented","_bind","_utils","id","uniqueId","Step","tour","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","bindMethods","_assertThisInitialized","setOptions","bindAdvance","bindButtonEvents","bindCancelLink","setupTooltip","parseAttachTo","content","_isEmpty3","buttons","footer","createElement","createFromHTML","map","cfg","button","classes","text","header","showCancelLink","link","paragraphs","_isFunction3","_isString3","paragraph","innerHTML","title","_addContent","_addButtons","_addCancelLink","cancel","trigger","complete","tooltip","destroy","_isElement3","el","parentNode","removeChild","target","_updateStepTargetOnHide","modal","hide","body","removeAttribute","Boolean","state","_createTooltipContent","advanceOn","scrollToHandler","scrollIntoView","_this3","when","_forOwn3","_this4","beforeShowPromise","then","_show","_this5","beforeShowStep","setupElements","setAttribute","scrollTo","setTimeout","show","highlightClass","Array","baseKeys","getTag","isArguments","isArrayLike","isBuffer","isPrototype","isTypedArray","size","baseForOwn","castFunction","iteratee","_parseShorthand","parseShorthand","isOpen","targetIsEl","targetIsSelector","matches","next","events","action","click","page","dataset","buttonEvent","e","methods","method","html","children","_parseAttachToOpts","obj","props","_isObjectLike3","values","_zipObject3","tippy","Error","missingTippy","attachToOpts","attachToOptions","tippyOptions","_objectSpread","placement","arrow","popperOptions","finalPopperOptions","assign","defaultPopperOptions","modifiers","centeredStylePopperModifier","one","resultingTippyOptions","returnOpts","console","error","_errorMessages","computeStyle","enabled","fn","data","styles","left","top","positionFixed","opts","exec","global","nodeType","ownerDocument","defaultView","a","getComputedStyle","nodeName","host","overflow","overflowX","overflowY","test","ke","Ee","documentElement","offsetParent","nextElementSibling","indexOf","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","scrollingElement","parseFloat","f","ae","parseInt","h","b","Te","right","bottom","u","clientWidth","clientHeight","borderTopWidth","borderLeftWidth","marginTop","marginLeft","g","w","parentElement","v","innerWidth","innerHeight","E","keys","area","sort","filter","O","C","marginBottom","marginRight","L","replace","T","A","find","S","slice","findIndex","Y","warn","offsets","popper","reference","D","some","X","charAt","toUpperCase","style","N","R","updateBound","H","scrollParents","scrollElement","eventsEnabled","M","cancelAnimationFrame","scheduleUpdate","z","isNaN","isFinite","_","V","order","j","Se","reverse","G","trim","search","reduce","match","K","$","yt","clientX","clientY","q","popperInstance","xt","popperChildren","ee","followCursor","pt","_tippy","ie","showOnInit","W","wait","Ve","delay","ne","isEnabled","I","hideOnClick","ot","Xe","POPPER","ut","interactive","relatedTarget","ye","Ct","touchHold","arrowType","flip","padding","distance","behavior","flipBehavior","offset","onCreate","gt","arrowTransform","ft","onUpdate","MutationObserver","update","observe","U","childList","subtree","characterData","De","vt","B","eventType","he","clearTimeout","Et","wt","performance","Ot","kt","interactiveDebounce","Qe","Be","le","disableEventListeners","duration","isDestroyed","touch","isVirtual","hasAttribute","onShow","visibility","We","backdrop","livePlacement","enableEventListeners","margin","bt","appendTo","onMount","isMounted","transitionDelay","re","sticky","updateDuration","requestAnimationFrame","ht","it","onShown","isShown","P","onHide","onHidden","Ne","querySelectorAll","disconnect","multiple","F","Dt","$e","clearDelayTimeouts","set","setContent","enable","disable","lazy","a11y","Re","Q","Xt","Yt","Lt","St","Pt","navigator","maxTouchPoints","msMaxTouchPoints","Me","attributes","getAttribute","rt","Element","NodeList","Fe","targets","instances","destroyAll","Math","min","te","floor","round","max","allowHTML","animateFill","animation","inertia","interactiveBorder","maxWidth","shouldPopperHideOnBlur","theme","zIndex","de","me","ce","fe","userAgent","be","platform","MSStream","ue","ge","xe","we","ve","Promise","resolve","MSInputMethodContext","documentMode","Ce","configurable","writable","Le","Ae","Ye","Pe","FLIP","CLOCKWISE","COUNTERCLOCKWISE","TypeError","Oe","Defaults","isCreated","jquery","onLoad","instance","arrowStyles","flipped","boundariesElement","originalPlacement","position","willChange","removeOnDestroy","Utils","PopperUtils","placements","shift","start","end","preventOverflow","boundaries","priority","primary","escapeWithReference","secondary","keepTogether","toLowerCase","arrowElement","flipVariations","inner","gpuAcceleration","devicePixelRatio","x-placement","applyStyle","TOOLTIP","CONTENT","BACKDROP","ARROW","ROUND_ARROW","Ie","He","_e","at","transitionDuration","ze","qe","className","je","Ke","replaceChild","et","tt","JSON","parse","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","closest","scrollX","pageXOffset","scrollY","pageYOffset","focus","scroll","st","lt","scale","translate","dt","RegExp","mt","ct","axis","numbers","At","Tt","now","activeElement","blur","version","defaults","setDefaults","disableAnimations","hideAllPoppers","useCapture","textContent","pe","head","insertBefore","firstChild","Function","_step","_tour","Shepherd","Tour","baseSlice","toInteger","array","guard","result","nativeKeys","overArg","isFunction","isLength","isPlainObject","getPrototype","funcProto","objectProto","funcToString","objectCtorString","proto","Ctor","constructor","getPrototypeOf","baseFor","createBaseFor","fromRight","keysFunc","iterable","assignValue","baseZipObject","baseAssignValue","eq","objValue","getNative","other","assignFunc","valsLength","_tooltipDefaults","_cleanup","_dom","_modal2","steps","Modal","_setTooltipDefaults","_setTourID","arg1","arg2","setupStep","currentStep","confirmCancel","cancelMessage","confirmCancelMessage","confirm","done","cleanupSteps","tourObject","cleanup","activeTour","_removeBodyAttrs","getCurrentStep","current","stepOptions","_isNumber3","defaultStepOptions","setupForStep","_styleTargetElementForStep","forward","getById","_updateStateBeforeShow","showOn","_skipStep","previous","_setupActiveTour","_addBodyAttrs","canClickTarget","pointerEvents","nextIndex","tooltipDefaults","isActive","tourName","uuid","_modalOverlayElem","_modalOverlayOpening","_defer3","modalClassNames","display","useModalOverlay","_styleForStep","modalOverlayOpening","_debounce3","leading","trailing","baseDelay","defer","baseRest","identity","overRest","setToString","nativeMax","otherArgs","thisArg","toNumber","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","timeWaiting","trailingEdge","debounced","isInvoking","flush","Date","freeGlobal","freeSelf","self","stepElement"],"mappings":"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","file":"js/shepherd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Shepherd\"] = factory();\n\telse\n\t\troot[\"Shepherd\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 18);\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","const svgNS = 'http://www.w3.org/2000/svg';\n\nconst elementIds = {\n modalOverlay: 'shepherdModalOverlayContainer',\n modalOverlayMask: 'shepherdModalMask',\n modalOverlayMaskOpening: 'shepherdModalMaskOpening'\n};\n\nconst classNames = {\n isVisible: 'shepherd-modal-is-visible',\n modalTarget: 'shepherd-modal-target'\n};\n\n/**\n * <svg id=\"shepherdModalOverlayContainer\" xmlns=\"http://www.w3.org/2000/svg\">\n */\nfunction _createModalContainer() {\n const element = document.createElementNS(svgNS, 'svg');\n\n element.setAttributeNS(null, 'id', elementIds.modalOverlay);\n\n return element;\n}\n\n/**\n * <mask id=\"shepherdModalMask\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">\n */\nfunction _createMaskContainer() {\n const element = document.createElementNS(svgNS, 'mask');\n\n element.setAttributeNS(null, 'id', elementIds.modalOverlayMask);\n element.setAttributeNS(null, 'x', '0');\n element.setAttributeNS(null, 'y', '0');\n element.setAttributeNS(null, 'width', '100%');\n element.setAttributeNS(null, 'height', '100%');\n\n return element;\n}\n\n/**\n * <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"#FFFFFF\"/>\n */\nfunction _createMaskRect() {\n const element = document.createElementNS(svgNS, 'rect');\n\n element.setAttributeNS(null, 'x', '0');\n element.setAttributeNS(null, 'y', '0');\n element.setAttributeNS(null, 'width', '100%');\n element.setAttributeNS(null, 'height', '100%');\n element.setAttributeNS(null, 'fill', '#FFFFFF');\n\n return element;\n}\n\n/**\n * <rect id=\"shepherdModalMaskOpening\" fill=\"#000000\"/>\n */\nfunction _createMaskOpening() {\n const element = document.createElementNS(svgNS, 'rect');\n\n element.setAttributeNS(null, 'id', elementIds.modalOverlayMaskOpening);\n element.setAttributeNS(null, 'fill', '#000000');\n\n return element;\n}\n\n/**\n * <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" mask=\"url(#shepherdModalMask)\"/>\n */\nfunction _createMaskConsumer() {\n const element = document.createElementNS(svgNS, 'rect');\n\n element.setAttributeNS(null, 'x', '0');\n element.setAttributeNS(null, 'y', '0');\n element.setAttributeNS(null, 'width', '100%');\n element.setAttributeNS(null, 'height', '100%');\n element.setAttributeNS(null, 'mask', `url(#${elementIds.modalOverlayMask})`);\n\n return element;\n}\n\n/**\n * Generates an SVG with the following structure:\n * ```html\n * <svg id=\"shepherdModalOverlayContainer\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <mask id=\"shepherdModalMask\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" >\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"#FFFFFF\"/>\n <!-- This element will \"punch a hole\" through the mask by preventing it from rendering within the perimeter -->\n <rect id=\"shepherdModalMaskOpening\"/>\n </mask>\n </defs>\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" mask=\"url(#shepherdModalMask)\"/>\n </svg>\n * ```\n */\nfunction createModalOverlay() {\n const containerElement = _createModalContainer();\n const defsElement = document.createElementNS(svgNS, 'defs');\n const maskContainer = _createMaskContainer();\n const maskRect = _createMaskRect();\n const maskOpening = _createMaskOpening();\n const maskConsumer = _createMaskConsumer();\n\n maskContainer.appendChild(maskRect);\n maskContainer.appendChild(maskOpening);\n\n defsElement.appendChild(maskContainer);\n\n containerElement.appendChild(defsElement);\n containerElement.appendChild(maskConsumer);\n\n return containerElement;\n}\n\nfunction positionModalOpening(targetElement, openingElement) {\n if (targetElement.getBoundingClientRect && openingElement instanceof SVGElement) {\n const { x, y, width, height } = targetElement.getBoundingClientRect();\n\n openingElement.setAttributeNS(null, 'x', x);\n openingElement.setAttributeNS(null, 'y', y);\n openingElement.setAttributeNS(null, 'width', width);\n openingElement.setAttributeNS(null, 'height', height);\n }\n}\n\nfunction closeModalOpening(openingElement) {\n if (openingElement && openingElement instanceof SVGElement) {\n openingElement.setAttributeNS(null, 'x', '0');\n openingElement.setAttributeNS(null, 'y', '0');\n openingElement.setAttributeNS(null, 'width', '0');\n openingElement.setAttributeNS(null, 'height', '0');\n }\n}\n\nfunction getModalMaskOpening(modalElement) {\n return modalElement.querySelector(`#${elementIds.modalOverlayMaskOpening}`);\n}\n\nfunction preventModalBodyTouch(event) {\n event.preventDefault();\n}\n\nfunction preventModalOverlayTouch(event) {\n event.stopPropagation();\n}\n\n/**\n * Remove any leftover modal target classes and add the modal target class to the currentElement\n * @param {HTMLElement} currentElement The element for the current step\n */\nfunction toggleShepherdModalClass(currentElement) {\n const shepherdModal = document.querySelector(`${classNames.modalTarget}`);\n\n if (shepherdModal) {\n shepherdModal.classList.remove(classNames.modalTarget);\n }\n\n currentElement.classList.add(classNames.modalTarget);\n}\n\nexport {\n createModalOverlay,\n positionModalOpening,\n preventModalBodyTouch,\n preventModalOverlayTouch,\n closeModalOpening,\n getModalMaskOpening,\n elementIds,\n classNames,\n toggleShepherdModalClass\n};\n","import { drop, isUndefined } from 'lodash';\n\nexport class Evented {\n on(event, handler, ctx) {\n const once = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];\n\n if (isUndefined(this.bindings)) {\n this.bindings = {};\n }\n if (isUndefined(this.bindings[event])) {\n this.bindings[event] = [];\n }\n this.bindings[event].push({ handler, ctx, once });\n }\n\n once(event, handler, ctx) {\n this.on(event, handler, ctx, true);\n }\n\n off(event, handler) {\n if (isUndefined(this.bindings) || isUndefined(this.bindings[event])) {\n return false;\n }\n\n if (isUndefined(handler)) {\n delete this.bindings[event];\n } else {\n this.bindings[event].forEach((binding, index) => {\n if (binding.handler === handler) {\n this.bindings[event].splice(index, 1);\n }\n });\n }\n }\n\n trigger(event) {\n if (!isUndefined(this.bindings) && this.bindings[event]) {\n const args = drop(arguments);\n\n this.bindings[event].forEach((binding, index) => {\n const { ctx, handler, once } = binding;\n\n const context = ctx || this;\n\n handler.apply(context, args);\n\n if (once) {\n this.bindings[event].splice(index, 1);\n }\n });\n }\n }\n\n}\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","import { elementIds } from './modal';\nimport { preventModalBodyTouch, preventModalOverlayTouch } from './modal';\n\n/**\n * Helper method to check if element is hidden, since we cannot use :visible without jQuery\n * @param {HTMLElement} element The element to check for visibility\n * @returns {boolean} true if element is hidden\n * @private\n */\nfunction elementIsHidden(element) {\n return element.offsetWidth === 0 && element.offsetHeight === 0;\n}\n\n/**\n * Get the element from an option object\n *\n * @method getElementFromObject\n * @param Object attachTo\n * @returns {Element}\n * @private\n */\nfunction getElementFromObject(attachTo) {\n const op = attachTo.element;\n\n if (op instanceof HTMLElement) {\n return op;\n }\n\n return document.querySelector(op);\n}\n\n/**\n * Return the element for a step\n *\n * @method getElementForStep\n * @param step step the step to get an element for\n * @returns {Element} the element for this step\n * @private\n */\nfunction getElementForStep(step) {\n const { options: { attachTo } } = step;\n\n if (!attachTo) {\n return null;\n }\n\n const type = typeof attachTo;\n\n let element;\n\n if (type === 'string') {\n element = getElementFromString(attachTo);\n } else if (type === 'object') {\n element = getElementFromObject(attachTo);\n } else {\n /* istanbul ignore next: cannot test undefined attachTo, but it does work! */\n element = null;\n }\n return element;\n}\n\n/**\n * Get the element from an option string\n *\n * @method getElementFromString\n * @param element the string in the step configuration\n * @returns {Element} the element from the string\n * @private\n */\nfunction getElementFromString(element) {\n const [selector] = element.split(' ');\n\n return document.querySelector(selector);\n}\n\nfunction addStepEventListeners() {\n if (typeof this._onScreenChange === 'function') {\n window.removeEventListener('resize', this._onScreenChange, false);\n window.removeEventListener('scroll', this._onScreenChange, false);\n }\n\n window.addEventListener('resize', this._onScreenChange, false);\n window.addEventListener('scroll', this._onScreenChange, false);\n\n const overlay = document.querySelector(`#${elementIds.modalOverlay}`);\n // Prevents window from moving on touch.\n window.addEventListener('touchmove', preventModalBodyTouch, { passive: false });\n\n // Allows content to move on touch.\n if (overlay) {\n overlay.addEventListener('touchmove', preventModalOverlayTouch, false);\n }\n}\n\n/**\n * Remove resize and scroll event listeners\n */\nfunction cleanupStepEventListeners() {\n if (typeof this._onScreenChange === 'function') {\n window.removeEventListener('resize', this._onScreenChange, false);\n window.removeEventListener('scroll', this._onScreenChange, false);\n\n this._onScreenChange = null;\n }\n}\n\nexport {\n addStepEventListeners,\n cleanupStepEventListeners,\n elementIsHidden,\n getElementForStep\n};\n","import {\n forOwn,\n isElement,\n isEmpty,\n isFunction,\n isString,\n isUndefined\n} from 'lodash';\nimport { Evented } from './evented.js';\nimport 'element-matches';\nimport { bindAdvance, bindButtonEvents, bindCancelLink, bindMethods } from './bind.js';\nimport { createFromHTML, setupTooltip, parseAttachTo } from './utils.js';\n\n/**\n * Creates incremented ID for each newly created step\n *\n * @private\n * @return {Number} The unique id for the step\n */\nconst uniqueId = (function() {\n let id = 0;\n return function() {\n return ++id;\n };\n})();\n\n/**\n * Class representing steps to be added to a tour\n * @extends {Evented}\n */\nexport class Step extends Evented {\n /**\n * Create a step\n * @param {Tour} tour The tour for the step\n * @param {Object} options The options for the step\n * @param {Object|string} options.attachTo What element the step should be attached to on the page.\n * It can either be a string of the form \"element on\", or an object with those properties.\n * For example: \".some #element left\", or {element: '.some #element', on: 'left'}.\n * If you use the object syntax, element can also be a DOM element. If you don’t specify an attachTo the\n * element will appear in the middle of the screen.\n * @param {HTMLElement|string} options.attachTo.element\n * @param {string} options.attachTo.on\n * @param {Object|string} options.advanceOn An action on the page which should advance shepherd to the next step.\n * It can be of the form `\"selector event\"`, or an object with those properties.\n * For example: `\".some-element click\"`, or `{selector: '.some-element', event: 'click'}`.\n * It doesn’t have to be an event inside the tour, it can be any event fired on any element on the page.\n * You can also always manually advance the Tour by calling `myTour.next()`.\n * @param {function} options.beforeShowPromise A function that returns a promise.\n * When the promise resolves, the rest of the `show` code for the step will execute.\n * @param {Object[]} options.buttons An array of buttons to add to the step. These will be rendered in a\n * footer below the main body text.\n * @param {function} options.buttons.button.action A function executed when the button is clicked on\n * @param {string} options.buttons.button.classes Extra classes to apply to the `<a>`\n * @param {Object} options.buttons.button.events A hash of events to bind onto the button, for example\n * `{'mouseover': function(){}}`. Adding a `click` event to events when you already have an `action` specified is not supported.\n * You can use events to skip steps or navigate to specific steps, with something like:\n * ```js\n * events: {\n * click: function() {\n * return Shepherd.activeTour.show('some_step_name');\n * }\n * }\n * ```\n * @param {string} options.buttons.button.text The HTML text of the button\n * @param {string} options.classes A string of extra classes to add to the step's content element.\n * @param {string} options.highlightClass An extra class to apply to the `attachTo` element when it is\n * highlighted (that is, when its step is active). You can then target that selector in your CSS.\n * @param {Object} options.tippyOptions Extra [options to pass to tippy.js]{@link https://atomiks.github.io/tippyjs/#all-options}\n * @param {boolean} options.scrollTo Should the element be scrolled to when this step is shown?\n * @param {function} options.scrollToHandler A function that lets you override the default scrollTo behavior and\n * define a custom action to do the scrolling, and possibly other logic.\n * @param {boolean} options.showCancelLink Should a cancel “✕” be shown in the header of the step?\n * @param {function} options.showOn A function that, when it returns `true`, will show the step.\n * If it returns false, the step will be skipped.\n * @param {string} options.text The text in the body of the step. It can be one of four types:\n * ```\n * - HTML string\n * - Array of HTML strings\n * - `HTMLElement` object\n * - `Function` to be executed when the step is built. It must return one of the three options above.\n * ```\n * @param {string} options.title The step's title. It becomes an `h3` at the top of the step.\n * @param {Object} options.when You can define `show`, `hide`, etc events inside `when`. For example:\n * ```js\n * when: {\n * show: function() {\n * window.scrollTo(0, 0);\n * }\n * }\n * ```\n * @return {Step} The newly created Step instance\n */\n constructor(tour, options) {\n super(tour, options);\n this.tour = tour;\n bindMethods.call(this, [\n '_show',\n 'cancel',\n 'complete',\n 'destroy',\n 'hide',\n 'isOpen',\n 'scrollTo',\n 'setupElements',\n 'show'\n ]);\n this.setOptions(options);\n this.bindAdvance = bindAdvance.bind(this);\n this.bindButtonEvents = bindButtonEvents.bind(this);\n this.bindCancelLink = bindCancelLink.bind(this);\n this.setupTooltip = setupTooltip.bind(this);\n this.parseAttachTo = parseAttachTo.bind(this);\n\n return this;\n }\n\n /**\n * Adds buttons to the step as passed into options\n *\n * @private\n * @param {HTMLElement} content The element for the step, to append the footer with buttons to\n */\n _addButtons(content) {\n if (!isEmpty(this.options.buttons)) {\n const footer = document.createElement('footer');\n const buttons = createFromHTML('<ul class=\"shepherd-buttons\"></ul>');\n\n footer.classList.add('shepherd-footer');\n\n this.options.buttons.map((cfg) => {\n const button = createFromHTML(`<li><a class=\"shepherd-button ${cfg.classes || ''}\">${cfg.text}</a>`);\n buttons.appendChild(button);\n this.bindButtonEvents(cfg, button.querySelector('a'));\n });\n\n footer.appendChild(buttons);\n content.appendChild(footer);\n }\n }\n\n /**\n * Adds the \"x\" button to cancel the tour\n * @param {HTMLElement} element The step element\n * @param {HTMLElement} header The header element for the step\n * @private\n */\n _addCancelLink(element, header) {\n if (this.options.showCancelLink) {\n const link = createFromHTML('<a href class=\"shepherd-cancel-link\"></a>');\n header.appendChild(link);\n\n element.classList.add('shepherd-has-cancel-link');\n this.bindCancelLink(link);\n }\n }\n\n /**\n * Adds text passed in as options\n *\n * @private\n * @param {HTMLElement} content The content to append the text to\n */\n _addContent(content) {\n const text = createFromHTML('<div class=\"shepherd-text\"></div>');\n let paragraphs = this.options.text;\n\n if (isFunction(paragraphs)) {\n paragraphs = paragraphs.call(this, text);\n }\n\n if (paragraphs instanceof HTMLElement) {\n text.appendChild(paragraphs);\n } else {\n if (isString(paragraphs)) {\n paragraphs = [paragraphs];\n }\n\n paragraphs.map((paragraph) => {\n text.innerHTML += `<p>${paragraph}</p>`;\n });\n }\n\n content.appendChild(text);\n }\n\n /**\n * Creates Shepherd element for step based on options\n *\n * @private\n * @return {HTMLElement} The DOM element for the step tooltip\n */\n _createTooltipContent() {\n const content = document.createElement('div');\n const classes = this.options.classes || '';\n const element = createFromHTML(`<div class=\"${classes}\" data-shepherd-step-id=\"${this.id}\">`);\n const header = document.createElement('header');\n\n if (this.options.title) {\n const title = document.createElement('h3');\n title.classList.add('shepherd-title');\n title.innerHTML = `${this.options.title}`;\n header.appendChild(title);\n element.classList.add('shepherd-has-title');\n }\n\n content.classList.add('shepherd-content');\n header.classList.add('shepherd-header');\n element.appendChild(content);\n content.appendChild(header);\n\n if (!isUndefined(this.options.text)) {\n this._addContent(content);\n }\n\n this._addButtons(content);\n this._addCancelLink(element, header);\n\n return element;\n }\n\n /**\n * Returns the tour for the step\n * @return {Tour} The tour instance\n */\n getTour() {\n return this.tour;\n }\n\n /**\n * Cancel the tour\n * Triggers the `cancel` event\n */\n cancel() {\n this.tour.cancel();\n this.trigger('cancel');\n }\n\n /**\n * Complete the tour\n * Triggers the `complete` event\n */\n complete() {\n this.tour.complete();\n this.trigger('complete');\n }\n\n /**\n * Remove the step, delete the step's element, and destroy the tippy instance for the step\n * Triggers `destroy` event\n */\n destroy() {\n if (this.tooltip) {\n this.tooltip.destroy();\n this.tooltip = null;\n }\n\n if (isElement(this.el) && this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n this.el = null;\n }\n\n if (this.target) {\n this._updateStepTargetOnHide();\n }\n\n this.trigger('destroy');\n }\n\n /**\n * Hide the step and destroy the tippy instance\n */\n hide() {\n this.tour.modal.hide();\n\n this.trigger('before-hide');\n\n document.body.removeAttribute('data-shepherd-step');\n\n if (this.target) {\n this._updateStepTargetOnHide();\n }\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n\n this.trigger('hide');\n }\n\n /**\n * Check if the step is open and visible\n * @return {boolean} True if the step is open and visible\n */\n isOpen() {\n return Boolean(\n this.tooltip &&\n this.tooltip.state &&\n this.tooltip.state.isVisible\n );\n }\n\n /**\n * Create the element and set up the tippy instance\n */\n setupElements() {\n if (!isUndefined(this.el)) {\n this.destroy();\n }\n\n this.el = this._createTooltipContent();\n\n if (this.options.advanceOn) {\n this.bindAdvance();\n }\n\n this.setupTooltip();\n }\n\n /**\n * If a custom scrollToHandler is defined, call that, otherwise do the generic\n * scrollIntoView call.\n */\n scrollTo() {\n const { element } = this.parseAttachTo();\n\n if (isFunction(this.options.scrollToHandler)) {\n this.options.scrollToHandler(element);\n } else if (isElement(element)) {\n element.scrollIntoView();\n }\n }\n\n /**\n * Sets the options for the step, maps `when` to events, sets up buttons\n * @param {Object} options The options for the step\n */\n setOptions(options = {}) {\n this.options = options;\n const { when } = this.options;\n\n this.destroy();\n this.id = this.options.id || `step-${uniqueId()}`;\n\n forOwn(when, (handler, event) => {\n this.on(event, handler, this);\n });\n }\n\n /**\n * Wraps `_show` and ensures `beforeShowPromise` resolves before calling show\n * @return {*|Promise}\n */\n show() {\n if (isFunction(this.options.beforeShowPromise)) {\n const beforeShowPromise = this.options.beforeShowPromise();\n if (!isUndefined(beforeShowPromise)) {\n return beforeShowPromise.then(() => this._show());\n }\n }\n this._show();\n }\n\n /**\n * Triggers `before-show`, generates the tooltip DOM content,\n * sets up a tippy instance for the tooltip, then triggers `show`.\n * @private\n */\n _show() {\n this.tour.beforeShowStep(this);\n this.trigger('before-show');\n\n if (!this.el) {\n this.setupElements();\n }\n\n this.target.classList.add('shepherd-enabled', 'shepherd-target');\n\n document.body.setAttribute('data-shepherd-step', this.id);\n\n if (this.options.scrollTo) {\n setTimeout(() => {\n this.scrollTo();\n });\n }\n\n this.tooltip.show();\n this.trigger('show');\n }\n\n _updateStepTargetOnHide() {\n if (this.options.highlightClass) {\n this.target.classList.remove(this.options.highlightClass);\n }\n\n this.target.classList.remove('shepherd-enabled', 'shepherd-target');\n }\n}\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseForOwn = require('./_baseForOwn'),\n castFunction = require('./_castFunction');\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nmodule.exports = forOwn;\n","import { parseShorthand } from './utils.js';\nimport { forOwn, isString, isUndefined } from 'lodash';\n\n/**\n * Sets up the handler to determine if we should advance the tour\n * @private\n */\nfunction _setupAdvanceOnHandler(selector) {\n return (event) => {\n if (this.isOpen()) {\n const targetIsEl = this.el && event.target === this.el;\n const targetIsSelector = !isUndefined(selector) && event.target.matches(selector);\n\n if (targetIsSelector || targetIsEl) {\n this.tour.next();\n }\n }\n };\n}\n\n/**\n * Bind the event handler for advanceOn\n */\nexport function bindAdvance() {\n // An empty selector matches the step element\n const { event, selector } = parseShorthand(this.options.advanceOn, ['selector', 'event']);\n const handler = _setupAdvanceOnHandler.call(this, selector);\n\n // TODO: this should also bind/unbind on show/hide\n const el = document.querySelector(selector);\n if (!isUndefined(selector) && el) {\n el.addEventListener(event, handler);\n } else {\n document.body.addEventListener(event, handler, true);\n }\n this.on('destroy', () => {\n return document.body.removeEventListener(event, handler, true);\n });\n}\n\n/**\n * Bind events to the buttons for next, back, etc\n * @param {Object} cfg An object containing the config options for the button\n * @param {HTMLElement} el The element for the button\n */\nexport function bindButtonEvents(cfg, el) {\n cfg.events = cfg.events || {};\n if (!isUndefined(cfg.action)) {\n // Including both a click event and an action is not supported\n cfg.events.click = cfg.action;\n }\n\n forOwn(cfg.events, (handler, event) => {\n if (isString(handler)) {\n const page = handler;\n handler = () => this.tour.show(page);\n }\n el.dataset.buttonEvent = true;\n el.addEventListener(event, handler);\n\n // Cleanup event listeners on destroy\n this.on('destroy', () => {\n el.removeAttribute('data-button-event');\n el.removeEventListener(event, handler);\n });\n });\n}\n\n/**\n * Add a click listener to the cancel link that cancels the tour\n * @param {HTMLElement} link The cancel link element\n */\nexport function bindCancelLink(link) {\n link.addEventListener('click', (e) => {\n e.preventDefault();\n this.cancel();\n });\n}\n\n/**\n * Take an array of strings and look up methods by name, then bind them to `this`\n * @param {String[]} methods The names of methods to bind\n */\nexport function bindMethods(methods) {\n methods.map((method) => {\n this[method] = this[method].bind(this);\n });\n}\n","import { isString, isObjectLike, isUndefined, zipObject } from 'lodash';\nimport tippy from 'tippy.js';\nimport { missingTippy } from './utils/error-messages';\n\nconst centeredStylePopperModifier = {\n computeStyle: {\n enabled: true,\n fn(data) {\n data.styles = Object.assign({}, data.styles, {\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)'\n });\n\n return data;\n }\n }\n};\n\n// Used to compose settings for tippyOptions.popperOptions (https://atomiks.github.io/tippyjs/#popper-options-option)\nconst defaultPopperOptions = {\n positionFixed: true\n};\n\n/**\n * TODO rewrite the way items are being added to use more performant documentFragment code\n * @param html\n * @return {HTMLElement} The element created from the passed HTML string\n */\nexport function createFromHTML(html) {\n const el = document.createElement('div');\n el.innerHTML = html;\n return el.children[0];\n}\n\n/**\n * Parse the position object or string to return the attachment and element to attach to\n * @param {Object|String} position Either a string or object denoting the selector and position for attachment\n * @return {Object} The object with `element` and `on` for the step\n * @private\n */\nexport function _parseAttachToOpts(opts) {\n if (isObjectLike(opts)) {\n if (opts.hasOwnProperty('element') && opts.hasOwnProperty('on')) {\n return opts;\n }\n return null;\n }\n\n const positionRe = /^(.+) ((auto|top|left|right|bottom)(-start|-end)?)$/;\n const matches = positionRe.exec(opts);\n\n if (!matches) {\n return null;\n }\n\n return {\n element: matches[1],\n on: matches[2]\n };\n}\n\n/**\n * @param obj\n * @param {Array} props\n * @return {*}\n */\nexport function parseShorthand(obj, props) {\n if (obj === null || isUndefined(obj)) {\n return obj;\n } else if (isObjectLike(obj)) {\n return obj;\n }\n\n const values = obj.split(' ');\n return zipObject(props, values);\n}\n\n/**\n * Determines options for the tooltip and initializes\n * `this.tooltip` as a Tippy.js instance.\n */\nexport function setupTooltip() {\n if (isUndefined(tippy)) {\n throw new Error(missingTippy);\n }\n\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n const attachToOpts = this.parseAttachTo();\n\n this.tooltip = _makeTippyInstance.call(this, attachToOpts);\n\n this.target = attachToOpts.element || document.body;\n\n this.el.classList.add('shepherd-element');\n}\n\n/**\n * Passes `options.attachTo` to `_parseAttachToOpts` to get the correct `attachTo` format\n * @returns {({} & {element, on}) | ({})}\n * `element` is a qualified HTML Element\n * `on` is a string position value\n */\nexport function parseAttachTo() {\n const options = _parseAttachToOpts(this.options.attachTo) || {};\n const returnOpts = Object.assign({}, options);\n\n if (isString(options.element)) {\n // Can't override the element in user opts reference because we can't\n // guarantee that the element will exist in the future.\n try {\n returnOpts.element = document.querySelector(options.element);\n } catch(e) {\n // TODO\n }\n if (!returnOpts.element) {\n console.error(`The element for this Shepherd step was not found ${options.element}`);\n }\n }\n\n return returnOpts;\n}\n\n/**\n * Generates a `Tippy` instance from a set of base `attachTo` options\n *\n * @return {tippy} The final tippy instance\n * @private\n */\nfunction _makeTippyInstance(attachToOptions) {\n if (!attachToOptions.element) {\n return _makeCenteredTippy.call(this);\n }\n\n const tippyOptions = _makeAttachedTippyOptions.call(this, attachToOptions);\n\n return tippy.one(attachToOptions.element, tippyOptions);\n}\n\n/**\n * Generates the hash of options that will be passed to `Tippy` instances\n * target an element in the DOM.\n *\n * @param {Object} attachToOptions The local `attachTo` options\n * @return {Object} The final tippy options object\n * @private\n */\nfunction _makeAttachedTippyOptions(attachToOptions) {\n const resultingTippyOptions = {\n content: this.el,\n placement: attachToOptions.on || 'right',\n ...this.options.tippyOptions\n };\n\n if (this.options.tippyOptions && this.options.tippyOptions.popperOptions) {\n Object.assign(defaultPopperOptions, this.options.tippyOptions.popperOptions);\n }\n\n resultingTippyOptions.popperOptions = defaultPopperOptions;\n\n return resultingTippyOptions;\n}\n\n/**\n * Generates a `Tippy` instance for a tooltip that doesn't have a\n * target element in the DOM -- and thus is positioned in the center\n * of the view\n *\n * @return {tippy} The final tippy instance\n * @private\n */\nfunction _makeCenteredTippy() {\n const tippyOptions = {\n content: this.el,\n placement: 'top',\n ...this.options.tippyOptions\n };\n\n tippyOptions.arrow = false;\n tippyOptions.popperOptions = tippyOptions.popperOptions || {};\n\n const finalPopperOptions = Object.assign(\n {},\n defaultPopperOptions,\n tippyOptions.popperOptions,\n {\n modifiers: Object.assign(\n centeredStylePopperModifier,\n tippyOptions.popperOptions.modifiers\n )\n }\n );\n\n tippyOptions.popperOptions = finalPopperOptions;\n\n return tippy.one(document.body, tippyOptions);\n}\n","(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.tippy=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var r=e.ownerDocument.defaultView,a=r.getComputedStyle(e,null);return t?a[t]:a}function r(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function a(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var p=t(e),o=p.overflow,i=p.overflowX,n=p.overflowY;return /(auto|scroll|overlay)/.test(o+n+i)?e:a(r(e))}function p(e){return 11===e?ke:10===e?Ee:ke||Ee}function o(e){if(!e)return document.documentElement;for(var r=p(10)?document.body:null,a=e.offsetParent||null;a===r&&e.nextElementSibling;)a=(e=e.nextElementSibling).offsetParent;var i=a&&a.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(a.nodeName)&&'static'===t(a,'position')?o(a):a:e?e.ownerDocument.documentElement:document.documentElement}function n(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||o(e.firstElementChild)===e)}function s(e){return null===e.parentNode?e:s(e.parentNode)}function l(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var r=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,a=r?e:t,p=r?t:e,i=document.createRange();i.setStart(a,0),i.setEnd(p,0);var d=i.commonAncestorContainer;if(e!==d&&t!==d||a.contains(p))return n(d)?d:o(d);var m=s(e);return m.host?l(m.host,t):l(e,s(t).host)}function d(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',r='top'===t?'scrollTop':'scrollLeft',a=e.nodeName;if('BODY'===a||'HTML'===a){var p=e.ownerDocument.documentElement,o=e.ownerDocument.scrollingElement||p;return o[r]}return e[r]}function m(e,t){var r=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],a=d(t,'top'),p=d(t,'left'),o=r?-1:1;return e.top+=a*o,e.bottom+=a*o,e.left+=p*o,e.right+=p*o,e}function c(e,t){var r='x'===t?'Left':'Top',a='Left'===r?'Right':'Bottom';return parseFloat(e['border'+r+'Width'],10)+parseFloat(e['border'+a+'Width'],10)}function f(e,t,r,a){return ae(t['offset'+e],t['scroll'+e],r['client'+e],r['offset'+e],r['scroll'+e],p(10)?parseInt(r['offset'+e])+parseInt(a['margin'+('Height'===e?'Top':'Left')])+parseInt(a['margin'+('Height'===e?'Bottom':'Right')]):0)}function h(e){var t=e.body,r=e.documentElement,a=p(10)&&getComputedStyle(r);return{height:f('Height',t,r,a),width:f('Width',t,r,a)}}function b(e){return Te({},e,{right:e.left+e.width,bottom:e.top+e.height})}function u(e){var r={};try{if(p(10)){r=e.getBoundingClientRect();var a=d(e,'top'),o=d(e,'left');r.top+=a,r.left+=o,r.bottom+=a,r.right+=o}else r=e.getBoundingClientRect()}catch(t){}var i={left:r.left,top:r.top,width:r.right-r.left,height:r.bottom-r.top},n='HTML'===e.nodeName?h(e.ownerDocument):{},s=n.width||e.clientWidth||i.right-i.left,l=n.height||e.clientHeight||i.bottom-i.top,m=e.offsetWidth-s,f=e.offsetHeight-l;if(m||f){var y=t(e);m-=c(y,'x'),f-=c(y,'y'),i.width-=m,i.height-=f}return b(i)}function y(e,r){var o=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],i=p(10),n='HTML'===r.nodeName,s=u(e),l=u(r),d=a(e),c=t(r),f=parseFloat(c.borderTopWidth,10),h=parseFloat(c.borderLeftWidth,10);o&&n&&(l.top=ae(l.top,0),l.left=ae(l.left,0));var y=b({top:s.top-l.top-f,left:s.left-l.left-h,width:s.width,height:s.height});if(y.marginTop=0,y.marginLeft=0,!i&&n){var g=parseFloat(c.marginTop,10),x=parseFloat(c.marginLeft,10);y.top-=f-g,y.bottom-=f-g,y.left-=h-x,y.right-=h-x,y.marginTop=g,y.marginLeft=x}return(i&&!o?r.contains(d):r===d&&'BODY'!==d.nodeName)&&(y=m(y,r)),y}function g(e){var t=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],r=e.ownerDocument.documentElement,a=y(e,r),p=ae(r.clientWidth,window.innerWidth||0),o=ae(r.clientHeight,window.innerHeight||0),i=t?0:d(r),n=t?0:d(r,'left'),s={top:i-a.top+a.marginTop,left:n-a.left+a.marginLeft,width:p,height:o};return b(s)}function x(e){var a=e.nodeName;return'BODY'!==a&&'HTML'!==a&&('fixed'===t(e,'position')||x(r(e)))}function w(e){if(!e||!e.parentElement||p())return document.documentElement;for(var r=e.parentElement;r&&'none'===t(r,'transform');)r=r.parentElement;return r||document.documentElement}function v(e,t,p,o){var i=!!(4<arguments.length&&void 0!==arguments[4])&&arguments[4],n={top:0,left:0},s=i?w(e):l(e,t);if('viewport'===o)n=g(s,i);else{var d;'scrollParent'===o?(d=a(r(t)),'BODY'===d.nodeName&&(d=e.ownerDocument.documentElement)):'window'===o?d=e.ownerDocument.documentElement:d=o;var m=y(d,s,i);if('HTML'===d.nodeName&&!x(s)){var c=h(e.ownerDocument),f=c.height,b=c.width;n.top+=m.top-m.marginTop,n.bottom=f+m.top,n.left+=m.left-m.marginLeft,n.right=b+m.left}else n=m}p=p||0;var u='number'==typeof p;return n.left+=u?p:p.left||0,n.top+=u?p:p.top||0,n.right-=u?p:p.right||0,n.bottom-=u?p:p.bottom||0,n}function k(e){var t=e.width,r=e.height;return t*r}function E(e,t,r,a,p){var o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var i=v(r,a,o,p),n={top:{width:i.width,height:t.top-i.top},right:{width:i.right-t.right,height:i.height},bottom:{width:i.width,height:i.bottom-t.bottom},left:{width:t.left-i.left,height:i.height}},s=Object.keys(n).map(function(e){return Te({key:e},n[e],{area:k(n[e])})}).sort(function(e,t){return t.area-e.area}),l=s.filter(function(e){var t=e.width,a=e.height;return t>=r.clientWidth&&a>=r.clientHeight}),d=0<l.length?l[0].key:s[0].key,m=e.split('-')[1];return d+(m?'-'+m:'')}function O(e,t,r){var a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,p=a?w(t):l(t,r);return y(r,p,a)}function C(e){var t=e.ownerDocument.defaultView,r=t.getComputedStyle(e),a=parseFloat(r.marginTop||0)+parseFloat(r.marginBottom||0),p=parseFloat(r.marginLeft||0)+parseFloat(r.marginRight||0),o={width:e.offsetWidth+p,height:e.offsetHeight+a};return o}function L(e){var t={left:'right',right:'left',bottom:'top',top:'bottom'};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,r){r=r.split('-')[0];var a=C(e),p={width:a.width,height:a.height},o=-1!==['right','left'].indexOf(r),i=o?'top':'left',n=o?'left':'top',s=o?'height':'width',l=o?'width':'height';return p[i]=t[i]+t[s]/2-a[s]/2,p[n]=r===n?t[n]-a[l]:t[L(n)],p}function A(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function Y(e,t,r){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===r});var a=A(e,function(e){return e[t]===r});return e.indexOf(a)}function S(t,r,a){var p=void 0===a?t:t.slice(0,Y(t,'name',a));return p.forEach(function(t){t['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var a=t['function']||t.fn;t.enabled&&e(a)&&(r.offsets.popper=b(r.offsets.popper),r.offsets.reference=b(r.offsets.reference),r=a(r,t))}),r}function P(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=O(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=E(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?'fixed':'absolute',e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var r=e.name,a=e.enabled;return a&&r===t})}function X(e){for(var t=[!1,'ms','Webkit','Moz','O'],r=e.charAt(0).toUpperCase()+e.slice(1),a=0;a<t.length;a++){var p=t[a],o=p?''+p+r:e;if('undefined'!=typeof document.body.style[o])return o}return null}function I(){return this.state.isDestroyed=!0,D(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.position='',this.popper.style.top='',this.popper.style.left='',this.popper.style.right='',this.popper.style.bottom='',this.popper.style.willChange='',this.popper.style[X('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function N(e){var t=e.ownerDocument;return t?t.defaultView:window}function H(e,t,r,p){var o='BODY'===e.nodeName,i=o?e.ownerDocument.defaultView:e;i.addEventListener(t,r,{passive:!0}),o||H(a(i.parentNode),t,r,p),p.push(i)}function R(e,t,r,p){r.updateBound=p,N(e).addEventListener('resize',r.updateBound,{passive:!0});var o=a(e);return H(o,'scroll',r.updateBound,r.scrollParents),r.scrollElement=o,r.eventsEnabled=!0,r}function W(){this.state.eventsEnabled||(this.state=R(this.reference,this.options,this.state,this.scheduleUpdate))}function B(e,t){return N(e).removeEventListener('resize',t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function M(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=B(this.reference,this.state))}function z(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function _(e,t){Object.keys(t).forEach(function(r){var a='';-1!==['width','height','top','right','bottom','left'].indexOf(r)&&z(t[r])&&(a='px'),e.style[r]=t[r]+a})}function F(e,t){Object.keys(t).forEach(function(r){var a=t[r];!1===a?e.removeAttribute(r):e.setAttribute(r,t[r])})}function U(e,t){var r=e.offsets,a=r.popper,p=r.reference,o=re,i=function(e){return e},n=o(a.width),s=o(p.width),l=-1!==['left','right'].indexOf(e.placement),d=-1!==e.placement.indexOf('-'),m=t?l||d||s%2==n%2?o:te:i,c=t?o:i;return{left:m(1==s%2&&1==n%2&&!d&&t?a.left-1:a.left),top:c(a.top),bottom:c(a.bottom),right:m(a.right)}}function V(e,t,r){var a=A(e,function(e){var r=e.name;return r===t}),p=!!a&&e.some(function(e){return e.name===r&&e.enabled&&e.order<a.order});if(!p){var o='`'+t+'`';console.warn('`'+r+'`'+' modifier is required by '+o+' modifier in order to work, be sure to include it before '+o+'!')}return p}function q(e){return'end'===e?'start':'start'===e?'end':e}function j(e){var t=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],r=Se.indexOf(e),a=Se.slice(r+1).concat(Se.slice(0,r));return t?a.reverse():a}function K(e,t,r,a){var p=e.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/),o=+p[1],i=p[2];if(!o)return e;if(0===i.indexOf('%')){var n;switch(i){case'%p':n=r;break;case'%':case'%r':default:n=a;}var s=b(n);return s[t]/100*o}if('vh'===i||'vw'===i){var l;return l='vh'===i?ae(document.documentElement.clientHeight,window.innerHeight||0):ae(document.documentElement.clientWidth,window.innerWidth||0),l/100*o}return o}function G(e,t,r,a){var p=[0,0],o=-1!==['right','left'].indexOf(a),i=e.split(/(\\+|\\-)/).map(function(e){return e.trim()}),n=i.indexOf(A(i,function(e){return-1!==e.search(/,|\\s/)}));i[n]&&-1===i[n].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var s=/\\s*,\\s*|\\s+/,l=-1===n?[i]:[i.slice(0,n).concat([i[n].split(s)[0]]),[i[n].split(s)[1]].concat(i.slice(n+1))];return l=l.map(function(e,a){var p=(1===a?!o:o)?'height':'width',i=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,i=!0,e):i?(e[e.length-1]+=t,i=!1,e):e.concat(t)},[]).map(function(e){return K(e,p,t,r)})}),l.forEach(function(e,t){e.forEach(function(r,a){z(r)&&(p[t]+=r*('-'===e[a-1]?-1:1))})}),p}function J(e,t){var r=t.offset,a=e.placement,p=e.offsets,o=p.popper,i=p.reference,n=a.split('-')[0],s=void 0;return s=z(+r)?[+r,0]:G(r,o,i,n),'left'===n?(o.top+=s[0],o.left-=s[1]):'right'===n?(o.top+=s[0],o.left+=s[1]):'top'===n?(o.left+=s[0],o.top-=s[1]):'bottom'===n&&(o.left+=s[0],o.top+=s[1]),e.popper=o,e}function Z(){document.addEventListener('click',Yt,!0),document.addEventListener('touchstart',Lt,{passive:!0}),window.addEventListener('blur',St),window.addEventListener('resize',Pt),!ye&&(navigator.maxTouchPoints||navigator.msMaxTouchPoints)&&document.addEventListener('pointerdown',Lt)}function $(e,t){function r(){yt(function(){z=!1})}function a(){X=new MutationObserver(function(){q.popperInstance.update()}),X.observe(U,{childList:!0,subtree:!0,characterData:!0})}function p(e){var t=N=e,r=t.clientX,a=t.clientY;if(q.popperInstance){var p=xt(q.popper),o=q.popperChildren.arrow?20:5,i='top'===p||'bottom'===p,n='left'===p||'right'===p,s=i?ae(o,r):r,l=n?ae(o,a):a;i&&s>o&&(s=ee(r,window.innerWidth-o)),n&&l>o&&(l=ee(a,window.innerHeight-o));var d=q.reference.getBoundingClientRect(),m=q.props.followCursor,c='horizontal'===m,f='vertical'===m;q.popperInstance.reference={getBoundingClientRect:function(){return{width:0,height:0,top:c?d.top:l,bottom:c?d.bottom:l,left:f?d.left:s,right:f?d.right:s}},clientWidth:0,clientHeight:0},q.popperInstance.scheduleUpdate()}}function o(e){var t=pt(e.target,q.props.target);t&&!t._tippy&&($(t,ie({},q.props,{target:'',showOnInit:!0})),i(e))}function i(e){if(T(),!q.state.isVisible){if(q.props.target)return o(e);if(W=!0,q.props.wait)return q.props.wait(q,e);x()&&document.addEventListener('mousemove',p);var t=Ve(q.props.delay,0,ne.delay);t?H=setTimeout(function(){Y()},t):Y()}}function n(){if(T(),!q.state.isVisible)return s();W=!1;var e=Ve(q.props.delay,1,ne.delay);e?R=setTimeout(function(){q.state.isVisible&&S()},e):S()}function s(){document.removeEventListener('mousemove',p),N=null}function l(){document.body.removeEventListener('mouseleave',n),document.removeEventListener('mousemove',_)}function d(e){!q.state.isEnabled||y(e)||(!q.state.isVisible&&(I=e),'click'===e.type&&!1!==q.props.hideOnClick&&q.state.isVisible?n():i(e))}function m(e){var t=ot(e.target,function(e){return e._tippy}),r=pt(e.target,Xe.POPPER)===q.popper,a=t===q.reference;r||a||ut(xt(q.popper),q.popper.getBoundingClientRect(),e,q.props)&&(l(),n())}function c(e){return y(e)?void 0:q.props.interactive?(document.body.addEventListener('mouseleave',n),void document.addEventListener('mousemove',_)):void n()}function f(e){if(e.target===q.reference){if(q.props.interactive){if(!e.relatedTarget)return;if(pt(e.relatedTarget,Xe.POPPER))return}n()}}function h(e){pt(e.target,q.props.target)&&i(e)}function b(e){pt(e.target,q.props.target)&&n()}function y(e){var t=-1<e.type.indexOf('touch'),r=ye&&Ct&&q.props.touchHold&&!t,a=Ct&&!q.props.touchHold&&t;return r||a}function u(){var e=q.popperChildren.tooltip,t=q.props.popperOptions,r=Xe['round'===q.props.arrowType?'ROUND_ARROW':'ARROW'],p=e.querySelector(r),o=ie({placement:q.props.placement},t||{},{modifiers:ie({},t?t.modifiers:{},{arrow:ie({element:r},t&&t.modifiers?t.modifiers.arrow:{}),flip:ie({enabled:q.props.flip,padding:q.props.distance+5,behavior:q.props.flipBehavior},t&&t.modifiers?t.modifiers.flip:{}),offset:ie({offset:q.props.offset},t&&t.modifiers?t.modifiers.offset:{})}),onCreate:function(){e.style[xt(q.popper)]=gt(q.props.distance,ne.distance),p&&q.props.arrowTransform&&ft(p,q.props.arrowTransform)},onUpdate:function(){var t=e.style;t.top='',t.bottom='',t.left='',t.right='',t[xt(q.popper)]=gt(q.props.distance,ne.distance),p&&q.props.arrowTransform&&ft(p,q.props.arrowTransform)}});return X||a(),new De(q.reference,q.popper,o)}function g(e){q.popperInstance?!x()&&(q.popperInstance.scheduleUpdate(),q.props.livePlacement&&q.popperInstance.enableEventListeners()):(q.popperInstance=u(),(!q.props.livePlacement||x())&&q.popperInstance.disableEventListeners()),q.popperInstance.reference=q.reference;var t=q.popperChildren.arrow;if(x()){t&&(t.style.margin='0');var r=Ve(q.props.delay,0,ne.delay);I.type&&p(r&&N?N:I)}else t&&(t.style.margin='');bt(q.popperInstance,e),q.props.appendTo.contains(q.popper)||(q.props.appendTo.appendChild(q.popper),q.props.onMount(q),q.state.isMounted=!0)}function x(){return q.props.followCursor&&!Ct&&'focus'!==I.type}function w(){We([q.popper],he?0:q.props.updateDuration);(function e(){q.popperInstance&&q.popperInstance.scheduleUpdate(),q.state.isMounted?requestAnimationFrame(e):We([q.popper],0)})()}function v(e,t){E(e,function(){!q.state.isVisible&&q.props.appendTo.contains(q.popper)&&t()})}function k(e,t){E(e,t)}function E(e,t){if(0===e)return t();var r=q.popperChildren.tooltip,a=function a(p){p.target===r&&(vt(r,'remove',a),t())};vt(r,'remove',B),vt(r,'add',a),B=a}function O(e,t,r){q.reference.addEventListener(e,t),r.push({eventType:e,handler:t})}function C(){M=q.props.trigger.trim().split(' ').reduce(function(e,t){return'manual'===t?e:(q.props.target?'mouseenter'===t?(O('mouseover',h,e),O('mouseout',b,e)):'focus'===t?(O('focusin',h,e),O('focusout',b,e)):'click'===t?O(t,h,e):void 0:(O(t,d,e),q.props.touchHold&&(O('touchstart',d,e),O('touchend',c,e)),'mouseenter'===t?O('mouseleave',c,e):'focus'===t?O(he?'focusout':'blur',f,e):void 0),e)},[])}function L(){M.forEach(function(e){var t=e.eventType,r=e.handler;q.reference.removeEventListener(t,r)})}function T(){clearTimeout(H),clearTimeout(R)}function A(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};Et(e,ne);var t=q.props,r=wt(q.reference,ie({},q.props,e,{performance:!0}));r.performance=Ot(e,'performance')?e.performance:t.performance,q.props=r,(Ot(e,'trigger')||Ot(e,'touchHold'))&&(L(),C()),Ot(e,'interactiveDebounce')&&(l(),_=kt(m,e.interactiveDebounce)),Qe(q.popper,t,r),q.popperChildren=Be(q.popper),q.popperInstance&&le.some(function(t){return Ot(e,t)})&&(q.popperInstance.destroy(),q.popperInstance=u(),!q.state.isVisible&&q.popperInstance.disableEventListeners(),q.props.followCursor&&N&&p(N))}function Y(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:Ve(q.props.duration,0,ne.duration[0]);return q.state.isDestroyed||!q.state.isEnabled||Ct&&!q.props.touch?void 0:q.reference.isVirtual||document.documentElement.contains(q.reference)?q.reference.hasAttribute('disabled')?void 0:z?void(z=!1):void(!1===q.props.onShow(q)||(q.popper.style.visibility='visible',q.state.isVisible=!0,We([q.popper,q.popperChildren.tooltip,q.popperChildren.backdrop],0),g(function(){q.state.isVisible&&(!x()&&q.popperInstance.update(),We([q.popperChildren.tooltip,q.popperChildren.backdrop,q.popperChildren.content],e),q.popperChildren.backdrop&&(q.popperChildren.content.style.transitionDelay=re(e/6)+'ms'),q.props.interactive&&q.reference.classList.add('tippy-active'),q.props.sticky&&w(),ht([q.popperChildren.tooltip,q.popperChildren.backdrop,q.popperChildren.content],'visible'),k(e,function(){0===q.props.updateDuration&&q.popperChildren.tooltip.classList.add('tippy-notransition'),q.props.interactive&&-1<['focus','click'].indexOf(I.type)&&it(q.popper),q.reference.setAttribute('aria-describedby',q.popper.id),q.props.onShown(q),q.state.isShown=!0}))}))):P()}function S(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:Ve(q.props.duration,1,ne.duration[1]);q.state.isDestroyed||!q.state.isEnabled||!1===q.props.onHide(q)||(0===q.props.updateDuration&&q.popperChildren.tooltip.classList.remove('tippy-notransition'),q.props.interactive&&q.reference.classList.remove('tippy-active'),q.popper.style.visibility='hidden',q.state.isVisible=!1,q.state.isShown=!1,We([q.popperChildren.tooltip,q.popperChildren.backdrop,q.popperChildren.content],e),ht([q.popperChildren.tooltip,q.popperChildren.backdrop,q.popperChildren.content],'hidden'),q.props.interactive&&!z&&-1<['focus','click'].indexOf(I.type)&&('focus'===I.type&&(z=!0),it(q.reference)),v(e,function(){W||s(),q.reference.removeAttribute('aria-describedby'),q.popperInstance.disableEventListeners(),q.props.appendTo.removeChild(q.popper),q.state.isMounted=!1,q.props.onHidden(q)}))}function P(e){q.state.isDestroyed||(q.state.isMounted&&S(0),L(),q.reference.removeEventListener('click',r),delete q.reference._tippy,q.props.target&&e&&Ne(q.reference.querySelectorAll(q.props.target)).forEach(function(e){return e._tippy&&e._tippy.destroy()}),q.popperInstance&&q.popperInstance.destroy(),X&&X.disconnect(),q.state.isDestroyed=!0)}var D=wt(e,t);if(!D.multiple&&e._tippy)return null;var X=null,I={},N=null,H=0,R=0,W=!1,B=function(){},M=[],z=!1,_=0<D.interactiveDebounce?kt(m,D.interactiveDebounce):m,F=Dt++,U=$e(F,D);U.addEventListener('mouseenter',function(e){q.props.interactive&&q.state.isVisible&&'mouseenter'===I.type&&i(e)}),U.addEventListener('mouseleave',function(e){q.props.interactive&&'mouseenter'===I.type&&0===q.props.interactiveDebounce&&ut(xt(U),U.getBoundingClientRect(),e,q.props)&&n()});var V=Be(U),q={id:F,reference:e,popper:U,popperChildren:V,popperInstance:null,props:D,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},clearDelayTimeouts:T,set:A,setContent:function(e){A({content:e})},show:Y,hide:S,enable:function(){q.state.isEnabled=!0},disable:function(){q.state.isEnabled=!1},destroy:P};return C(),e.addEventListener('click',r),D.lazy||(q.popperInstance=u(),q.popperInstance.disableEventListeners()),D.showOnInit&&i(),!D.a11y||D.target||Re(e)||e.setAttribute('tabindex','0'),e._tippy=q,U._tippy=q,q}function Q(e,t,r){Et(t,ne),Xt||(Z(),Xt=!0);var a=ie({},ne,t);Me(e)&&rt(e);var p=Fe(e),o=p[0],i=(r&&o?[o]:p).reduce(function(e,t){var r=t&&$(t,a);return r&&e.push(r),e},[]);return{targets:e,props:a,instances:i,destroyAll:function(){this.instances.forEach(function(e){e.destroy()}),this.instances=[]}}}for(var ee=Math.min,te=Math.floor,re=Math.round,ae=Math.max,pe='.tippy-iOS{cursor:pointer!important}.tippy-notransition{transition:none!important}.tippy-popper{-webkit-perspective:700px;perspective:700px;z-index:9999;outline:0;transition-timing-function:cubic-bezier(.165,.84,.44,1);pointer-events:none;line-height:1.4;max-width:calc(100% - 10px)}.tippy-popper[x-placement^=top] .tippy-backdrop{border-radius:40% 40% 0 0}.tippy-popper[x-placement^=top] .tippy-roundarrow{bottom:-8px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.tippy-popper[x-placement^=top] .tippy-arrow{border-top:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;bottom:-7px;margin:0 6px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-backdrop{-webkit-transform-origin:0 25%;transform-origin:0 25%}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-55%);transform:scale(1) translate(-50%,-55%)}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-50%,-45%);transform:scale(.2) translate(-50%,-45%);opacity:0}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}.tippy-popper[x-placement^=top] [data-animation=perspective]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=visible]{-webkit-transform:translateY(-10px) rotateX(0);transform:translateY(-10px) rotateX(0)}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(60deg);transform:translateY(0) rotateX(60deg)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(.5);transform:translateY(0) scale(.5)}.tippy-popper[x-placement^=bottom] .tippy-backdrop{border-radius:0 0 30% 30%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow{top:-8px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(0);transform:rotate(0)}.tippy-popper[x-placement^=bottom] .tippy-arrow{border-bottom:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;top:-7px;margin:0 6px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-backdrop{-webkit-transform-origin:0 -50%;transform-origin:0 -50%}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-45%);transform:scale(1) translate(-50%,-45%)}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-50%);transform:scale(.2) translate(-50%);opacity:0}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}.tippy-popper[x-placement^=bottom] [data-animation=perspective]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=visible]{-webkit-transform:translateY(10px) rotateX(0);transform:translateY(10px) rotateX(0)}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(-60deg);transform:translateY(0) rotateX(-60deg)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(.5);transform:translateY(0) scale(.5)}.tippy-popper[x-placement^=left] .tippy-backdrop{border-radius:50% 0 0 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow{right:-16px;-webkit-transform-origin:33.33333333% 50%;transform-origin:33.33333333% 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.tippy-popper[x-placement^=left] .tippy-arrow{border-left:8px solid #333;border-top:8px solid transparent;border-bottom:8px solid transparent;right:-7px;margin:3px 0;-webkit-transform-origin:0 50%;transform-origin:0 50%}.tippy-popper[x-placement^=left] .tippy-backdrop{-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-75%,-50%);transform:scale(.2) translate(-75%,-50%);opacity:0}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}.tippy-popper[x-placement^=left] [data-animation=perspective]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=visible]{-webkit-transform:translateX(-10px) rotateY(0);transform:translateX(-10px) rotateY(0)}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(-60deg);transform:translateX(0) rotateY(-60deg)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(.5);transform:translateX(0) scale(.5)}.tippy-popper[x-placement^=right] .tippy-backdrop{border-radius:0 50% 50% 0}.tippy-popper[x-placement^=right] .tippy-roundarrow{left:-16px;-webkit-transform-origin:66.66666666% 50%;transform-origin:66.66666666% 50%}.tippy-popper[x-placement^=right] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.tippy-popper[x-placement^=right] .tippy-arrow{border-right:8px solid #333;border-top:8px solid transparent;border-bottom:8px solid transparent;left:-7px;margin:3px 0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tippy-popper[x-placement^=right] .tippy-backdrop{-webkit-transform-origin:-50% 0;transform-origin:-50% 0}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-25%,-50%);transform:scale(.2) translate(-25%,-50%);opacity:0}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.tippy-popper[x-placement^=right] [data-animation=perspective]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=visible]{-webkit-transform:translateX(10px) rotateY(0);transform:translateX(10px) rotateY(0)}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(60deg);transform:translateX(0) rotateY(60deg)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(.5);transform:translateX(0) scale(.5)}.tippy-tooltip{position:relative;color:#fff;border-radius:4px;font-size:.9rem;padding:.3rem .6rem;max-width:350px;text-align:center;will-change:transform;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#333}.tippy-tooltip[data-size=small]{padding:.2rem .4rem;font-size:.75rem}.tippy-tooltip[data-size=large]{padding:.4rem .8rem;font-size:1rem}.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent}.tippy-tooltip[data-interactive],.tippy-tooltip[data-interactive] path{pointer-events:auto}.tippy-tooltip[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.53,2,.36,.85)}.tippy-tooltip[data-inertia][data-state=hidden]{transition-timing-function:ease}.tippy-arrow,.tippy-roundarrow{position:absolute;width:0;height:0}.tippy-roundarrow{width:24px;height:8px;fill:#333;pointer-events:none}.tippy-backdrop{position:absolute;will-change:transform;background-color:#333;border-radius:50%;width:calc(110% + 2rem);left:50%;top:50%;z-index:-1;transition:all cubic-bezier(.46,.1,.52,.98);-webkit-backface-visibility:hidden;backface-visibility:hidden}.tippy-backdrop:after{content:\"\";float:left;padding-top:100%}.tippy-backdrop+.tippy-content{transition-property:opacity;will-change:opacity}.tippy-backdrop+.tippy-content[data-state=visible]{opacity:1}.tippy-backdrop+.tippy-content[data-state=hidden]{opacity:0}',oe='3.3.0',ie=Object.assign||function(e){for(var t,r=1;r<arguments.length;r++)for(var a in t=arguments[r],t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},ne={a11y:!0,allowHTML:!0,animateFill:!0,animation:'shift-away',appendTo:function(){return document.body},arrow:!1,arrowTransform:'',arrowType:'sharp',content:'',delay:[0,20],distance:10,duration:[325,275],flip:!0,flipBehavior:'flip',followCursor:!1,hideOnClick:!0,inertia:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,lazy:!0,livePlacement:!0,maxWidth:'',multiple:!1,offset:0,onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},performance:!1,placement:'top',popperOptions:{},shouldPopperHideOnBlur:function(){return!0},showOnInit:!1,size:'regular',sticky:!1,target:'',theme:'dark',touch:!0,touchHold:!1,trigger:'mouseenter focus',updateDuration:200,wait:null,zIndex:9999},se=function(e){ne=ie({},ne,e)},le=['arrowType','distance','flip','flipBehavior','offset','placement','popperOptions'],de='undefined'!=typeof window,me=de?navigator:{},ce=de?window:{},fe=('MutationObserver'in ce),he=/MSIE |Trident\\//.test(me.userAgent),be=/iPhone|iPad|iPod/.test(me.platform)&&!ce.MSStream,ye=('ontouchstart'in ce),ue='undefined'!=typeof window&&'undefined'!=typeof document,ge=['Edge','Trident','Firefox'],xe=0,we=0;we<ge.length;we+=1)if(ue&&0<=navigator.userAgent.indexOf(ge[we])){xe=1;break}var i=ue&&window.Promise,ve=i?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},xe))}},ke=ue&&!!(window.MSInputMethodContext&&document.documentMode),Ee=ue&&/MSIE 10/.test(navigator.userAgent),Oe=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')},Ce=function(){function e(e,t){for(var r,a=0;a<t.length;a++)r=t[a],r.enumerable=r.enumerable||!1,r.configurable=!0,'value'in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),Le=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},Te=Object.assign||function(e){for(var t,r=1;r<arguments.length;r++)for(var a in t=arguments[r],t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},Ae=ue&&/Firefox/i.test(navigator.userAgent),Ye=['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'],Se=Ye.slice(3),Pe={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},De=function(){function t(r,a){var p=this,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};Oe(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(p.update)},this.update=ve(this.update.bind(this)),this.options=Te({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=r&&r.jquery?r[0]:r,this.popper=a&&a.jquery?a[0]:a,this.options.modifiers={},Object.keys(Te({},t.Defaults.modifiers,o.modifiers)).forEach(function(e){p.options.modifiers[e]=Te({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Te({name:e},p.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(t){t.enabled&&e(t.onLoad)&&t.onLoad(p.reference,p.popper,p.options,t,p.state)}),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return Ce(t,[{key:'update',value:function(){return P.call(this)}},{key:'destroy',value:function(){return I.call(this)}},{key:'enableEventListeners',value:function(){return W.call(this)}},{key:'disableEventListeners',value:function(){return M.call(this)}}]),t}();De.Utils=('undefined'==typeof window?global:window).PopperUtils,De.placements=Ye,De.Defaults={placement:'bottom',positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,r=t.split('-')[0],a=t.split('-')[1];if(a){var p=e.offsets,o=p.reference,i=p.popper,n=-1!==['bottom','top'].indexOf(r),s=n?'left':'top',l=n?'width':'height',d={start:Le({},s,o[s]),end:Le({},s,o[s]+o[l]-i[l])};e.offsets.popper=Te({},i,d[a])}return e}},offset:{order:200,enabled:!0,fn:J,offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var r=t.boundariesElement||o(e.instance.popper);e.instance.reference===r&&(r=o(r));var a=X('transform'),p=e.instance.popper.style,i=p.top,n=p.left,s=p[a];p.top='',p.left='',p[a]='';var l=v(e.instance.popper,e.instance.reference,t.padding,r,e.positionFixed);p.top=i,p.left=n,p[a]=s,t.boundaries=l;var d=t.priority,m=e.offsets.popper,c={primary:function(e){var r=m[e];return m[e]<l[e]&&!t.escapeWithReference&&(r=ae(m[e],l[e])),Le({},e,r)},secondary:function(e){var r='right'===e?'left':'top',a=m[r];return m[e]>l[e]&&!t.escapeWithReference&&(a=ee(m[r],l[e]-('right'===e?m.width:m.height))),Le({},r,a)}};return d.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';m=Te({},m,c[t](e))}),e.offsets.popper=m,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,r=t.popper,a=t.reference,p=e.placement.split('-')[0],o=te,i=-1!==['top','bottom'].indexOf(p),n=i?'right':'bottom',s=i?'left':'top',l=i?'width':'height';return r[n]<o(a[s])&&(e.offsets.popper[s]=o(a[s])-r[l]),r[s]>o(a[n])&&(e.offsets.popper[s]=o(a[n])),e}},arrow:{order:500,enabled:!0,fn:function(e,r){var a;if(!V(e.instance.modifiers,'arrow','keepTogether'))return e;var p=r.element;if('string'==typeof p){if(p=e.instance.popper.querySelector(p),!p)return e;}else if(!e.instance.popper.contains(p))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var o=e.placement.split('-')[0],i=e.offsets,n=i.popper,s=i.reference,l=-1!==['left','right'].indexOf(o),d=l?'height':'width',m=l?'Top':'Left',c=m.toLowerCase(),f=l?'left':'top',h=l?'bottom':'right',y=C(p)[d];s[h]-y<n[c]&&(e.offsets.popper[c]-=n[c]-(s[h]-y)),s[c]+y>n[h]&&(e.offsets.popper[c]+=s[c]+y-n[h]),e.offsets.popper=b(e.offsets.popper);var u=s[c]+s[d]/2-y/2,g=t(e.instance.popper),x=parseFloat(g['margin'+m],10),w=parseFloat(g['border'+m+'Width'],10),v=u-e.offsets.popper[c]-x-w;return v=ae(ee(n[d]-y,v),0),e.arrowElement=p,e.offsets.arrow=(a={},Le(a,c,re(v)),Le(a,f,''),a),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(D(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var r=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),a=e.placement.split('-')[0],p=L(a),o=e.placement.split('-')[1]||'',i=[];switch(t.behavior){case Pe.FLIP:i=[a,p];break;case Pe.CLOCKWISE:i=j(a);break;case Pe.COUNTERCLOCKWISE:i=j(a,!0);break;default:i=t.behavior;}return i.forEach(function(n,s){if(a!==n||i.length===s+1)return e;a=e.placement.split('-')[0],p=L(a);var l=e.offsets.popper,d=e.offsets.reference,m=te,c='left'===a&&m(l.right)>m(d.left)||'right'===a&&m(l.left)<m(d.right)||'top'===a&&m(l.bottom)>m(d.top)||'bottom'===a&&m(l.top)<m(d.bottom),f=m(l.left)<m(r.left),h=m(l.right)>m(r.right),b=m(l.top)<m(r.top),y=m(l.bottom)>m(r.bottom),u='left'===a&&f||'right'===a&&h||'top'===a&&b||'bottom'===a&&y,g=-1!==['top','bottom'].indexOf(a),x=!!t.flipVariations&&(g&&'start'===o&&f||g&&'end'===o&&h||!g&&'start'===o&&b||!g&&'end'===o&&y);(c||u||x)&&(e.flipped=!0,(c||u)&&(a=i[s+1]),x&&(o=q(o)),e.placement=a+(o?'-'+o:''),e.offsets.popper=Te({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,r=t.split('-')[0],a=e.offsets,p=a.popper,o=a.reference,i=-1!==['left','right'].indexOf(r),n=-1===['top','left'].indexOf(r);return p[i?'left':'top']=o[r]-(n?p[i?'width':'height']:0),e.placement=L(t),e.offsets.popper=b(p),e}},hide:{order:800,enabled:!0,fn:function(e){if(!V(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,r=A(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottom<r.top||t.left>r.right||t.top>r.bottom||t.right<r.left){if(!0===e.hide)return e;e.hide=!0,e.attributes['x-out-of-boundaries']=''}else{if(!1===e.hide)return e;e.hide=!1,e.attributes['x-out-of-boundaries']=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var r=t.x,a=t.y,p=e.offsets.popper,i=A(e.instance.modifiers,function(e){return'applyStyle'===e.name}).gpuAcceleration;void 0!==i&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var n=void 0===i?t.gpuAcceleration:i,s=o(e.instance.popper),l=u(s),d={position:p.position},m=U(e,2>window.devicePixelRatio||!Ae),c='bottom'===r?'top':'bottom',f='right'===a?'left':'right',h=X('transform'),b=void 0,y=void 0;if(y='bottom'==c?'HTML'===s.nodeName?-s.clientHeight+m.bottom:-l.height+m.bottom:m.top,b='right'==f?'HTML'===s.nodeName?-s.clientWidth+m.right:-l.width+m.right:m.left,n&&h)d[h]='translate3d('+b+'px, '+y+'px, 0)',d[c]=0,d[f]=0,d.willChange='transform';else{var g='bottom'==c?-1:1,x='right'==f?-1:1;d[c]=y*g,d[f]=b*x,d.willChange=c+', '+f}var w={\"x-placement\":e.placement};return e.attributes=Te({},w,e.attributes),e.styles=Te({},d,e.styles),e.arrowStyles=Te({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return _(e.instance.popper,e.styles),F(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&_(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,r,a,p){var o=O(p,t,e,r.positionFixed),i=E(r.placement,o,t,e,r.modifiers.flip.boundariesElement,r.modifiers.flip.padding);return t.setAttribute('x-placement',i),_(t,{position:r.positionFixed?'fixed':'absolute'}),r},gpuAcceleration:void 0}}};var Xe={POPPER:'.tippy-popper',TOOLTIP:'.tippy-tooltip',CONTENT:'.tippy-content',BACKDROP:'.tippy-backdrop',ARROW:'.tippy-arrow',ROUND_ARROW:'.tippy-roundarrow'},Ie={x:!0},Ne=function(e){return[].slice.call(e)},He=function(e,t){t.content instanceof Element?(_e(e,''),e.appendChild(t.content)):e[t.allowHTML?'innerHTML':'textContent']=t.content},Re=function(e){return!(e instanceof Element)||at.call(e,'a[href],area[href],button,details,input,textarea,select,iframe,[tabindex]')&&!e.hasAttribute('disabled')},We=function(e,t){e.filter(Boolean).forEach(function(e){e.style.transitionDuration=t+'ms'})},Be=function(e){var t=function(t){return e.querySelector(t)};return{tooltip:t(Xe.TOOLTIP),backdrop:t(Xe.BACKDROP),content:t(Xe.CONTENT),arrow:t(Xe.ARROW)||t(Xe.ROUND_ARROW)}},Me=function(e){return'[object Object]'==={}.toString.call(e)},ze=function(){return document.createElement('div')},_e=function(e,t){e[Ie.x&&'innerHTML']=t instanceof Element?t[Ie.x&&'innerHTML']:t},Fe=function(e){if(e instanceof Element||Me(e))return[e];if(e instanceof NodeList)return Ne(e);if(Array.isArray(e))return e;try{return Ne(document.querySelectorAll(e))}catch(t){return[]}},Ue=function(e){return!isNaN(e)&&!isNaN(parseFloat(e))},Ve=function(e,t,r){if(Array.isArray(e)){var a=e[t];return null==a?r:a}return e},qe=function(e){var t=ze();return'round'===e?(t.className='tippy-roundarrow',_e(t,'<svg viewBox=\"0 0 24 8\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3 8s2.021-.015 5.253-4.218C9.584 2.051 10.797 1.007 12 1c1.203-.007 2.416 1.035 3.761 2.782C19.012 8.005 21 8 21 8H3z\"/></svg>')):t.className='tippy-arrow',t},je=function(){var e=ze();return e.className='tippy-backdrop',e.setAttribute('data-state','hidden'),e},Ke=function(e,t){e.setAttribute('tabindex','-1'),t.setAttribute('data-interactive','')},Ge=function(e,t){e.removeAttribute('tabindex'),t.removeAttribute('data-interactive')},Je=function(e){e.setAttribute('data-inertia','')},Ze=function(e){e.removeAttribute('data-inertia')},$e=function(e,t){var r=ze();r.className='tippy-popper',r.setAttribute('role','tooltip'),r.id='tippy-'+e,r.style.zIndex=t.zIndex;var a=ze();a.className='tippy-tooltip',a.style.maxWidth=t.maxWidth+('number'==typeof t.maxWidth?'px':''),a.setAttribute('data-size',t.size),a.setAttribute('data-animation',t.animation),a.setAttribute('data-state','hidden'),t.theme.split(' ').forEach(function(e){a.classList.add(e+'-theme')});var p=ze();return p.className='tippy-content',p.setAttribute('data-state','hidden'),t.interactive&&Ke(r,a),t.arrow&&a.appendChild(qe(t.arrowType)),t.animateFill&&(a.appendChild(je()),a.setAttribute('data-animatefill','')),t.inertia&&a.setAttribute('data-inertia',''),He(p,t),a.appendChild(p),r.appendChild(a),r.addEventListener('focusout',function(t){t.relatedTarget&&r._tippy&&!ot(t.relatedTarget,function(e){return e===r})&&t.relatedTarget!==r._tippy.reference&&r._tippy.props.shouldPopperHideOnBlur(t)&&r._tippy.hide()}),r},Qe=function(e,t,r){var a=Be(e),p=a.tooltip,o=a.content,i=a.backdrop,n=a.arrow;e.style.zIndex=r.zIndex,p.setAttribute('data-size',r.size),p.setAttribute('data-animation',r.animation),p.style.maxWidth=r.maxWidth+('number'==typeof r.maxWidth?'px':''),t.content!==r.content&&He(o,r),!t.animateFill&&r.animateFill?(p.appendChild(je()),p.setAttribute('data-animatefill','')):t.animateFill&&!r.animateFill&&(p.removeChild(i),p.removeAttribute('data-animatefill')),!t.arrow&&r.arrow?p.appendChild(qe(r.arrowType)):t.arrow&&!r.arrow&&p.removeChild(n),t.arrow&&r.arrow&&t.arrowType!==r.arrowType&&p.replaceChild(qe(r.arrowType),n),!t.interactive&&r.interactive?Ke(e,p):t.interactive&&!r.interactive&&Ge(e,p),!t.inertia&&r.inertia?Je(p):t.inertia&&!r.inertia&&Ze(p),t.theme!==r.theme&&(t.theme.split(' ').forEach(function(e){p.classList.remove(e+'-theme')}),r.theme.split(' ').forEach(function(e){p.classList.add(e+'-theme')}))},et=function(e){Ne(document.querySelectorAll(Xe.POPPER)).forEach(function(t){var r=t._tippy;r&&!0===r.props.hideOnClick&&(!e||t!==e.popper)&&r.hide()})},tt=function(e){return Object.keys(ne).reduce(function(t,r){var a=(e.getAttribute('data-tippy-'+r)||'').trim();return a?(t[r]='content'===r?a:'true'===a||'false'!==a&&(Ue(a)?+a:'['===a[0]||'{'===a[0]?JSON.parse(a):a),t):t},{})},rt=function(e){var t={isVirtual:!0,attributes:e.attributes||{},setAttribute:function(t,r){e.attributes[t]=r},getAttribute:function(t){return e.attributes[t]},removeAttribute:function(t){delete e.attributes[t]},hasAttribute:function(t){return t in e.attributes},addEventListener:function(){},removeEventListener:function(){},classList:{classNames:{},add:function(t){e.classList.classNames[t]=!0},remove:function(t){delete e.classList.classNames[t]},contains:function(t){return t in e.classList.classNames}}};for(var r in t)e[r]=t[r];return e},at=function(){if(de){var t=Element.prototype;return t.matches||t.matchesSelector||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector}}(),pt=function(e,t){return(Element.prototype.closest||function(e){for(var t=this;t;){if(at.call(t,e))return t;t=t.parentElement}}).call(e,t)},ot=function(e,t){for(;e;){if(t(e))return e;e=e.parentElement}},it=function(e){var t=window.scrollX||window.pageXOffset,r=window.scrollY||window.pageYOffset;e.focus(),scroll(t,r)},nt=function(e){void e.offsetHeight},st=function(e,t){return(t?e:{X:'Y',Y:'X'}[e])||''},lt=function(e,t,r,p){var o=t[0],i=t[1];if(!o&&!i)return'';var n={scale:function(){return i?r?o+', '+i:i+', '+o:''+o}(),translate:function(){return i?r?p?o+'px, '+-i+'px':o+'px, '+i+'px':p?-i+'px, '+o+'px':i+'px, '+o+'px':p?-o+'px':o+'px'}()};return n[e]},dt=function(e,t){var r=e.match(new RegExp(t+'([XY])'));return r?r[1]:''},mt=function(e,t){var r=e.match(t);return r?r[1].split(',').map(parseFloat):[]},ct={translate:/translateX?Y?\\(([^)]+)\\)/,scale:/scaleX?Y?\\(([^)]+)\\)/},ft=function(e,t){var r=xt(pt(e,Xe.POPPER)),a='top'===r||'bottom'===r,p='right'===r||'bottom'===r,o={translate:{axis:dt(t,'translate'),numbers:mt(t,ct.translate)},scale:{axis:dt(t,'scale'),numbers:mt(t,ct.scale)}},i=t.replace(ct.translate,'translate'+st(o.translate.axis,a)+'('+lt('translate',o.translate.numbers,a,p)+')').replace(ct.scale,'scale'+st(o.scale.axis,a)+'('+lt('scale',o.scale.numbers,a,p)+')');e.style['undefined'==typeof document.body.style.transform?'webkitTransform':'transform']=i},ht=function(e,t){e.filter(Boolean).forEach(function(e){e.setAttribute('data-state',t)})},bt=function(e,t){var r=e.popper,a=e.options,p=a.onCreate,o=a.onUpdate;a.onCreate=a.onUpdate=function(){nt(r),t(),o(),a.onCreate=p,a.onUpdate=o}},yt=function(e){setTimeout(e,1)},ut=function(e,t,r,a){if(!e)return!0;var p=r.clientX,o=r.clientY,i=a.interactiveBorder,n=a.distance,s=t.top-o>('top'===e?i+n:i),l=o-t.bottom>('bottom'===e?i+n:i),d=t.left-p>('left'===e?i+n:i),m=p-t.right>('right'===e?i+n:i);return s||l||d||m},gt=function(e,t){return-(e-t)+'px'},xt=function(e){var t=e.getAttribute('x-placement');return t?t.split('-')[0]:''},wt=function(e,t){var r=ie({},t,t.performance?{}:tt(e));return r.arrow&&(r.animateFill=!1),'function'==typeof r.appendTo&&(r.appendTo=t.appendTo(e)),'function'==typeof r.content&&(r.content=t.content(e)),r},vt=function(e,t,r){e[t+'EventListener']('transitionend',r)},kt=function(e,t){var r;return function(){var a=this,p=arguments;clearTimeout(r),r=setTimeout(function(){return e.apply(a,p)},t)}},Et=function(e,t){for(var r in e||{})if(!(r in t))throw Error('[tippy]: `'+r+'` is not a valid option')},Ot=function(e,t){return{}.hasOwnProperty.call(e,t)},Ct=!1,Lt=function(){Ct||(Ct=!0,be&&document.body.classList.add('tippy-iOS'),window.performance&&document.addEventListener('mousemove',At))},Tt=0,At=function e(){var t=performance.now();20>t-Tt&&(Ct=!1,document.removeEventListener('mousemove',e),!be&&document.body.classList.remove('tippy-iOS')),Tt=t},Yt=function(e){var t=e.target;if(!(t instanceof Element))return et();var r=pt(t,Xe.POPPER);if(!(r&&r._tippy&&r._tippy.props.interactive)){var a=ot(t,function(e){return e._tippy&&e._tippy.reference===e});if(a){var p=a._tippy,o=-1<p.props.trigger.indexOf('click');if(Ct||o)return et(p);if(!0!==p.props.hideOnClick||o)return;p.clearDelayTimeouts()}et()}},St=function(){var e=document,t=e.activeElement;t&&t.blur&&t._tippy&&t.blur()},Pt=function(){Ne(document.querySelectorAll(Xe.POPPER)).forEach(function(e){var t=e._tippy;t.props.livePlacement||t.popperInstance.scheduleUpdate()})},Dt=1,Xt=!1;Q.version=oe,Q.defaults=ne,Q.one=function(e,t){return Q(e,t,!0).instances[0]},Q.setDefaults=function(e){se(e),Q.defaults=ne},Q.disableAnimations=function(){Q.setDefaults({duration:0,updateDuration:0,animateFill:!1})},Q.hideAllPoppers=et,Q.useCapture=function(){};return de&&setTimeout(function(){Ne(document.querySelectorAll('[data-tippy]')).forEach(function(e){var t=e.getAttribute('data-tippy');t&&Q(e,{content:t})})}),function(e){if(fe){var t=document.createElement('style');t.type='text/css',t.textContent=e,document.head.insertBefore(t,document.head.firstChild)}}(pe),Q});\n//# sourceMappingURL=tippy.all.min.js.map\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { Evented } from './evented.js';\nimport { Step } from './step.js';\nimport { Shepherd, Tour } from './tour.js';\n\nObject.assign(Shepherd, { Tour, Step, Evented });\n\nexport default Shepherd;\n","var baseSlice = require('./_baseSlice'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nmodule.exports = drop;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var isObjectLike = require('./isObjectLike'),\n isPlainObject = require('./isPlainObject');\n\n/**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\nfunction isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n}\n\nmodule.exports = isElement;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","if (!Element.prototype.matches) {\n Element.prototype.matches =\n Element.prototype.matchesSelector ||\n Element.prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n}\n","var assignValue = require('./_assignValue'),\n baseZipObject = require('./_baseZipObject');\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nmodule.exports = baseZipObject;\n","export const missingTippy = 'Using the attachment feature of Shepherd requires the Tippy.js library';\n","import { isFunction, isNumber, isString, isUndefined, isEmpty } from 'lodash';\nimport { Evented } from './evented.js';\nimport { Modal } from './modal.js';\nimport { Step } from './step.js';\nimport { bindMethods } from './bind.js';\nimport tippy from 'tippy.js';\nimport { defaults as tooltipDefaults } from './utils/tooltip-defaults';\n\nimport {\n cleanupSteps\n} from './utils/cleanup';\n\nimport {\n addStepEventListeners,\n cleanupStepEventListeners,\n getElementForStep\n} from './utils/dom';\n\nimport {\n toggleShepherdModalClass\n} from './utils/modal';\n\n/**\n * Creates incremented ID for each newly created tour\n *\n * @private\n * @return {Number} The unique id for the tour\n */\nconst uniqueId = (function() {\n let id = 0;\n return function() {\n return ++id;\n };\n})();\n\nconst Shepherd = new Evented();\n\n/**\n * Class representing the site tour\n * @extends {Evented}\n */\nexport class Tour extends Evented {\n /**\n * @param {Object} options The options for the tour\n * @param {Object} options.defaultStepOptions Default options for Steps created through `addStep`\n * @param {Step[]} options.steps An array of Step instances to initialize the tour with\n * @param {string} options.tourName An optional \"name\" for the tour. This will be appended to the the tour's\n * dynamically generated `id` property -- which is also set on the `body` element as the `data-shepherd-active-tour` attribute\n * whenever the tour becomes active.\n * @param {boolean} options.useModalOverlay Whether or not steps should be placed above a darkened\n * modal overlay. If true, the overlay will create an opening around the target element so that it\n * can remain interactive\n * @returns {Tour}\n */\n constructor(options = {}) {\n super(options);\n bindMethods.call(this, [\n 'back',\n 'cancel',\n 'complete',\n 'next'\n ]);\n this.options = options;\n this.steps = this.options.steps || [];\n\n // Pass these events onto the global Shepherd object\n const events = ['active', 'cancel', 'complete', 'inactive', 'show', 'start'];\n events.map((event) => {\n ((e) => {\n this.on(e, (opts) => {\n opts = opts || {};\n opts.tour = this;\n Shepherd.trigger(e, opts);\n });\n })(event);\n });\n\n this.modal = new Modal(options);\n\n this._setTooltipDefaults();\n this._setTourID();\n\n return this;\n }\n\n /**\n * Adds a new step to the tour\n * @param {Object|Number|Step|String} arg1\n * When arg2 is defined, arg1 can either be a string or number, to use for the `id` for the step\n * When arg2 is undefined, arg1 is either an object containing step options or a Step instance\n * @param {Object|Step} arg2 An object containing step options or a Step instance\n * @return {Step} The newly added step\n */\n addStep(arg1, arg2) {\n let name, step;\n\n // If we just have one argument, we can assume it is an object of step options, with an id\n if (isUndefined(arg2)) {\n step = arg1;\n } else {\n name = arg1;\n step = arg2;\n }\n\n if (!(step instanceof Step)) {\n step = this.setupStep(step, name);\n } else {\n step.tour = this;\n }\n\n this.steps.push(step);\n return step;\n }\n\n /**\n * Go to the previous step in the tour\n */\n back() {\n const index = this.steps.indexOf(this.currentStep);\n this.show(index - 1, false);\n }\n\n /**\n * Calls done() triggering the 'cancel' event\n * If `confirmCancel` is true, will show a window.confirm before cancelling\n */\n cancel() {\n if (this.options.confirmCancel) {\n const cancelMessage = this.options.confirmCancelMessage || 'Are you sure you want to stop the tour?';\n const stopTour = window.confirm(cancelMessage);\n if (stopTour) {\n this.done('cancel');\n }\n } else {\n this.done('cancel');\n }\n }\n\n /**\n * Calls done() triggering the `complete` event\n */\n complete() {\n this.done('complete');\n }\n\n /**\n * Called whenever the tour is cancelled or completed, basically anytime we exit the tour\n * @param {String} event The event name to trigger\n */\n done(event) {\n if (!isEmpty(this.steps)) {\n this.steps.forEach((step) => step.destroy());\n }\n\n cleanupStepEventListeners.call(this);\n cleanupSteps(this.tourObject);\n this.modal.cleanup();\n\n this.trigger(event);\n\n Shepherd.activeTour = null;\n this._removeBodyAttrs();\n this.trigger('inactive', { tour: this });\n }\n\n /**\n * Gets the step from a given id\n * @param {Number|String} id The id of the step to retrieve\n * @return {Step} The step corresponding to the `id`\n */\n getById(id) {\n return this.steps.find((step) => {\n return step.id === id;\n });\n }\n\n /**\n * Gets the current step\n * @returns {Step|null}\n */\n getCurrentStep() {\n return this.currentStep;\n }\n\n /**\n * Hide the current step\n */\n hide() {\n const currentStep = this.getCurrentStep();\n\n if (currentStep) {\n return currentStep.hide();\n }\n }\n\n isActive() {\n return Shepherd.activeTour === this;\n }\n\n /**\n * Go to the next step in the tour\n * If we are at the end, call `complete`\n */\n next() {\n const index = this.steps.indexOf(this.currentStep);\n\n if (index === this.steps.length - 1) {\n this.complete();\n } else {\n this.show(index + 1, true);\n }\n }\n\n /**\n * Removes the step from the tour\n * @param {String} name The id for the step to remove\n */\n removeStep(name) {\n const current = this.getCurrentStep();\n\n // Find the step, destroy it and remove it from this.steps\n this.steps.some((step, i) => {\n if (step.id === name) {\n if (step.isOpen()) {\n step.hide();\n }\n\n step.destroy();\n this.steps.splice(i, 1);\n\n return true;\n }\n });\n\n if (current && current.id === name) {\n this.currentStep = undefined;\n\n // If we have steps left, show the first one, otherwise just cancel the tour\n this.steps.length ? this.show(0) : this.cancel();\n }\n }\n\n /**\n * Setup a new step object\n * @param {Object} stepOptions The object describing the options for the step\n * @param {String|Number} name The string or number to use as the `id` for the step\n * @return {Step} The step instance\n */\n setupStep(stepOptions, name) {\n if (isString(name) || isNumber(name)) {\n stepOptions.id = name.toString();\n }\n\n stepOptions = Object.assign({}, this.options.defaultStepOptions, stepOptions);\n\n return new Step(this, stepOptions);\n }\n\n beforeShowStep(step) {\n this.modal.setupForStep(step);\n this._styleTargetElementForStep(step);\n }\n\n /**\n * Show a specific step in the tour\n * @param {Number|String} key The key to look up the step by\n * @param {Boolean} forward True if we are going forward, false if backward\n */\n show(key = 0, forward = true) {\n const step = isString(key) ? this.getById(key) : this.steps[key];\n\n if (step) {\n this._updateStateBeforeShow();\n\n const shouldSkipStep = isFunction(step.options.showOn) && !step.options.showOn();\n\n // If `showOn` returns false, we want to skip the step, otherwise, show the step like normal\n if (shouldSkipStep) {\n this._skipStep(step, forward);\n } else {\n this.trigger('show', {\n step,\n previous: this.currentStep\n });\n\n this.currentStep = step;\n step.show();\n }\n }\n }\n\n /**\n * Start the tour\n */\n start() {\n this.trigger('start');\n\n this.currentStep = null;\n this._setupActiveTour();\n addStepEventListeners.call(this);\n this.next();\n }\n\n /**\n * Make this tour \"active\"\n * @private\n */\n _setupActiveTour() {\n this._addBodyAttrs();\n this.trigger('active', { tour: this });\n\n Shepherd.activeTour = this;\n }\n\n /**\n * Modulates the styles of the passed step's target element, based on the step's options and\n * the tour's `modal` option, to visually emphasize the element\n *\n * @param step The step object that attaches to the element\n * @private\n */\n _styleTargetElementForStep(step) {\n const targetElement = getElementForStep(step);\n\n if (!targetElement) {\n return;\n }\n\n toggleShepherdModalClass(targetElement);\n\n if (step.options.highlightClass) {\n targetElement.classList.add(step.options.highlightClass);\n }\n\n if (step.options.canClickTarget === false) {\n targetElement.style.pointerEvents = 'none';\n }\n }\n\n /**\n * Called when `showOn` evaluates to false, to skip the step\n * @param {Step} step The step to skip\n * @param {Boolean} forward True if we are going forward, false if backward\n * @private\n */\n _skipStep(step, forward) {\n const index = this.steps.indexOf(step);\n const nextIndex = forward ? index + 1 : index - 1;\n this.show(nextIndex, forward);\n }\n\n _setTooltipDefaults() {\n tippy.setDefaults(tooltipDefaults);\n }\n\n _updateStateBeforeShow() {\n if (this.currentStep) {\n this.currentStep.hide();\n }\n\n if (!this.isActive()) {\n this._setupActiveTour();\n }\n }\n\n _setTourID() {\n const tourName = this.options.tourName || 'tour';\n const uuid = uniqueId();\n\n this.id = `${tourName}--${uuid}`;\n }\n\n _addBodyAttrs() {\n document.body.setAttribute('data-shepherd-active-tour', this.id);\n document.body.classList.add('shepherd-active');\n }\n\n _removeBodyAttrs() {\n document.body.removeAttribute('data-shepherd-active-tour');\n document.body.classList.remove('shepherd-active');\n }\n\n}\n\nexport { Shepherd };\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","import {\n getModalMaskOpening,\n createModalOverlay,\n positionModalOpening,\n closeModalOpening,\n classNames as modalClassNames\n} from './utils/modal';\nimport { addStepEventListeners, getElementForStep } from './utils/dom';\nimport { debounce, defer } from 'lodash';\n\nexport class Modal {\n constructor(options) {\n if (!this._modalOverlayElem) {\n this._modalOverlayElem = createModalOverlay();\n this._modalOverlayOpening = getModalMaskOpening(this._modalOverlayElem);\n\n // don't show yet -- each step will control that\n this.hide();\n\n document.body.appendChild(this._modalOverlayElem);\n }\n\n this.options = options;\n\n return this;\n }\n\n /**\n * Removes svg mask from modal overlay and removes classes for modal being visible\n */\n cleanup() {\n defer(() => {\n const element = this._modalOverlayElem;\n\n if (element && element instanceof SVGElement) {\n element.parentNode.removeChild(element);\n }\n\n this._modalOverlayElem = null;\n document.body.classList.remove(modalClassNames.isVisible);\n });\n }\n\n /**\n * Hide the modal overlay\n */\n hide() {\n document.body.classList.remove(modalClassNames.isVisible);\n\n if (this._modalOverlayElem) {\n this._modalOverlayElem.style.display = 'none';\n }\n }\n\n /**\n * If modal is enabled, setup the svg mask opening and modal overlay for the step\n * @param step\n */\n setupForStep(step) {\n if (this.options.useModalOverlay) {\n this._styleForStep(step);\n this.show();\n\n } else {\n this.hide();\n }\n }\n\n /**\n * Show the modal overlay\n */\n show() {\n document.body.classList.add(modalClassNames.isVisible);\n\n if (this._modalOverlayElem) {\n this._modalOverlayElem.style.display = 'block';\n }\n }\n\n /**\n * Style the modal for the step\n * @param {Step} step The step to style the opening for\n * @private\n */\n _styleForStep(step) {\n const modalOverlayOpening = this._modalOverlayOpening;\n const targetElement = getElementForStep(step);\n\n if (targetElement) {\n positionModalOpening(targetElement, modalOverlayOpening);\n\n this._onScreenChange = debounce(\n positionModalOpening.bind(this, targetElement, modalOverlayOpening),\n 0,\n { leading: false, trailing: true } // see https://lodash.com/docs/#debounce\n );\n\n addStepEventListeners.call(this);\n\n } else {\n closeModalOpening(this._modalOverlayOpening);\n }\n }\n}","var baseDelay = require('./_baseDelay'),\n baseRest = require('./_baseRest');\n\n/**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\nvar defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n});\n\nmodule.exports = defer;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\nfunction baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n}\n\nmodule.exports = baseDelay;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","export const defaults = {\n trigger: 'manual',\n arrow: true,\n arrowTransform: 'scale(2)',\n animation: 'fade',\n duration: 420,\n flip: true,\n animateFill: false, // https://atomiks.github.io/tippyjs/#animate-fill-option\n interactive: true, // https://atomiks.github.io/tippyjs/#interactive-option\n hideOnClick: 'toggle', // https://atomiks.github.io/tippyjs/#hide-on-click-option\n multiple: true // https://atomiks.github.io/tippyjs/#multiple-option\n};\n","import { preventModalBodyTouch } from './modal';\nimport { getElementForStep } from './dom';\n\n/**\n * Cleanup the steps and set pointerEvents back to 'auto'\n * @param tour The tour object\n */\nexport function cleanupSteps(tour) {\n if (tour) {\n const { steps } = tour;\n\n steps.forEach((step) => {\n if (step.options && step.options.canClickTarget === false && step.options.attachTo) {\n const stepElement = getElementForStep(step);\n\n if (stepElement instanceof HTMLElement) {\n stepElement.style.pointerEvents = 'auto';\n }\n }\n });\n }\n}\n\n/**\n * Remove resize and scroll event listeners\n */\nexport function cleanupStepEventListeners() {\n if (typeof this._onScreenChange === 'function') {\n window.removeEventListener('resize', this._onScreenChange, false);\n window.removeEventListener('scroll', this._onScreenChange, false);\n window.removeEventListener('touchmove', preventModalBodyTouch, false);\n\n this._onScreenChange = null;\n }\n}\n"],"sourceRoot":""}
1
+ {"version":3,"file":"shepherd.min.js","sources":["../../node_modules/lodash-es/isObject.js","../../node_modules/lodash-es/_freeGlobal.js","../../node_modules/lodash-es/_root.js","../../node_modules/lodash-es/_Symbol.js","../../node_modules/lodash-es/_getRawTag.js","../../node_modules/lodash-es/_objectToString.js","../../node_modules/lodash-es/_baseGetTag.js","../../node_modules/lodash-es/isObjectLike.js","../../node_modules/lodash-es/isSymbol.js","../../node_modules/lodash-es/toNumber.js","../../node_modules/lodash-es/toFinite.js","../../node_modules/lodash-es/toInteger.js","../../node_modules/lodash-es/drop.js","../../node_modules/lodash-es/_baseSlice.js","../../node_modules/lodash-es/isUndefined.js","../../src/js/evented.js","../../node_modules/lodash-es/_baseFor.js","../../node_modules/lodash-es/_createBaseFor.js","../../node_modules/lodash-es/_baseIsArguments.js","../../node_modules/lodash-es/isArguments.js","../../node_modules/lodash-es/isArray.js","../../node_modules/lodash-es/isBuffer.js","../../node_modules/lodash-es/stubFalse.js","../../node_modules/lodash-es/_isIndex.js","../../node_modules/lodash-es/isLength.js","../../node_modules/lodash-es/_baseIsTypedArray.js","../../node_modules/lodash-es/_nodeUtil.js","../../node_modules/lodash-es/_baseUnary.js","../../node_modules/lodash-es/isTypedArray.js","../../node_modules/lodash-es/_arrayLikeKeys.js","../../node_modules/lodash-es/_baseTimes.js","../../node_modules/lodash-es/_isPrototype.js","../../node_modules/lodash-es/_overArg.js","../../node_modules/lodash-es/_nativeKeys.js","../../node_modules/lodash-es/_baseKeys.js","../../node_modules/lodash-es/isFunction.js","../../node_modules/lodash-es/isArrayLike.js","../../node_modules/lodash-es/keys.js","../../node_modules/lodash-es/identity.js","../../node_modules/lodash-es/forOwn.js","../../node_modules/lodash-es/_baseForOwn.js","../../node_modules/lodash-es/_castFunction.js","../../node_modules/lodash-es/_getPrototype.js","../../node_modules/lodash-es/isPlainObject.js","../../node_modules/lodash-es/isElement.js","../../node_modules/lodash-es/_coreJsData.js","../../node_modules/lodash-es/_isMasked.js","../../node_modules/lodash-es/_toSource.js","../../node_modules/lodash-es/_baseIsNative.js","../../node_modules/lodash-es/_getNative.js","../../node_modules/lodash-es/_getValue.js","../../node_modules/lodash-es/_DataView.js","../../node_modules/lodash-es/_Map.js","../../node_modules/lodash-es/_Promise.js","../../node_modules/lodash-es/_Set.js","../../node_modules/lodash-es/_WeakMap.js","../../node_modules/lodash-es/_getTag.js","../../node_modules/lodash-es/isEmpty.js","../../node_modules/lodash-es/isString.js","../../node_modules/element-matches/index.js","../../node_modules/lodash-es/_defineProperty.js","../../node_modules/lodash-es/_assignValue.js","../../node_modules/lodash-es/_baseAssignValue.js","../../node_modules/lodash-es/eq.js","../../node_modules/popper.js/dist/esm/popper.js","../../node_modules/tippy.js/dist/esm/tippy.standalone.js","../../src/js/utils/error-messages.js","../../src/js/utils.js","../../node_modules/lodash-es/_baseZipObject.js","../../node_modules/lodash-es/zipObject.js","../../src/js/bind.js","../../src/js/step.js","../../src/js/browser.js","../../src/js/utils/modal.js","../../src/js/utils/dom.js","../../node_modules/lodash-es/now.js","../../node_modules/lodash-es/debounce.js","../../node_modules/lodash-es/_overRest.js","../../node_modules/lodash-es/_baseSetToString.js","../../node_modules/lodash-es/_shortOut.js","../../node_modules/lodash-es/constant.js","../../node_modules/lodash-es/defer.js","../../node_modules/lodash-es/_baseRest.js","../../node_modules/lodash-es/_setToString.js","../../node_modules/lodash-es/_baseDelay.js","../../node_modules/lodash-es/_apply.js","../../src/js/modal.js","../../src/js/utils/tooltip-defaults.js","../../src/js/tour.js","../../src/js/shepherd.js","../../src/js/css.js","../../src/js/utils/cleanup.js","../../node_modules/lodash-es/isNumber.js"],"sourcesContent":["/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nexport default drop;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n","import drop from 'lodash-es/drop';\nimport isUndefined from 'lodash-es/isUndefined';\n\nexport class Evented {\n on(event, handler, ctx) {\n const once = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];\n\n if (isUndefined(this.bindings)) {\n this.bindings = {};\n }\n if (isUndefined(this.bindings[event])) {\n this.bindings[event] = [];\n }\n this.bindings[event].push({ handler, ctx, once });\n }\n\n once(event, handler, ctx) {\n this.on(event, handler, ctx, true);\n }\n\n off(event, handler) {\n if (isUndefined(this.bindings) || isUndefined(this.bindings[event])) {\n return false;\n }\n\n if (isUndefined(handler)) {\n delete this.bindings[event];\n } else {\n this.bindings[event].forEach((binding, index) => {\n if (binding.handler === handler) {\n this.bindings[event].splice(index, 1);\n }\n });\n }\n }\n\n trigger(event) {\n if (!isUndefined(this.bindings) && this.bindings[event]) {\n const args = drop(arguments);\n\n this.bindings[event].forEach((binding, index) => {\n const { ctx, handler, once } = binding;\n\n const context = ctx || this;\n\n handler.apply(context, args);\n\n if (once) {\n this.bindings[event].splice(index, 1);\n }\n });\n }\n }\n\n}\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import baseForOwn from './_baseForOwn.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nexport default forOwn;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\n\n/**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\nfunction isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n}\n\nexport default isElement;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n","if (!Element.prototype.matches) {\n Element.prototype.matches =\n Element.prototype.matchesSelector ||\n Element.prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n}\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.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 */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\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 window.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 window = element.ownerDocument.defaultView;\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 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|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\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 if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', '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 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 parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\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], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && 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 try {\n if (isIE(10)) {\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 } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\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(element.ownerDocument) : {};\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 fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\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 = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 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 = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\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 && !fixedPosition ? 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 excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\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 = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\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 * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\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 * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\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(reference));\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, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\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 padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\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 * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\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 window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\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.<br />\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, this.options.positionFixed);\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 data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : '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; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys 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.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\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 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, options.positionFixed);\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: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthOddness = reference.width % 2 === popper.width % 2;\n var bothOddWidth = reference.width % 2 === 1 && popper.width % 2 === 1;\n var noRound = function noRound(v) {\n return v;\n };\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthOddness ? Math.round : Math.floor;\n var verticalToInteger = !shouldRound ? noRound : Math.round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\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 var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\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 // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\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.<br />\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 var _data$offsets$arrow;\n\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 conjunction\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 data.offsets.popper = getClientRect(data.offsets.popper);\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 css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\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 = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\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.<br />\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.<br />\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-end` (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, data.positionFixed);\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 // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\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.<br />\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.<br />\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.<br />\n * It will read the variation of the `placement` property.<br />\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 unit-less, 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.<br />\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.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\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 * > You can read more on this at 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 * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\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 always has 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 each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points 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 conjunction 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 your 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 information used by Popper.js.\n * This object is 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.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For 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 * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\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.<br />\n * By default, it is set to no-op.<br />\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.<br />\n * By default, it is set to no-op.<br />\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 * Creates 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 the 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 * Schedules 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.<br />\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\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","/*!\n* Tippy.js v3.4.1\n* (c) 2017-2019 atomiks\n* MIT\n*/\nimport Popper from 'popper.js';\n\nvar version = \"3.4.1\";\n\nvar isBrowser = typeof window !== 'undefined';\n\nvar nav = isBrowser ? navigator : {};\nvar win = isBrowser ? window : {};\n\n\nvar isIE = /MSIE |Trident\\//.test(nav.userAgent);\nvar isIOS = /iPhone|iPad|iPod/.test(nav.platform) && !win.MSStream;\nvar supportsTouch = 'ontouchstart' in win;\n\nvar Defaults = {\n a11y: true,\n allowHTML: true,\n animateFill: true,\n animation: 'shift-away',\n appendTo: function appendTo() {\n return document.body;\n },\n aria: 'describedby',\n arrow: false,\n arrowTransform: '',\n arrowType: 'sharp',\n autoFocus: true,\n boundary: 'scrollParent',\n content: '',\n delay: [0, 20],\n distance: 10,\n duration: [325, 275],\n flip: true,\n flipBehavior: 'flip',\n followCursor: false,\n hideOnClick: true,\n inertia: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n lazy: true,\n livePlacement: true,\n maxWidth: '',\n multiple: false,\n offset: 0,\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n\n performance: false,\n placement: 'top',\n popperOptions: {},\n shouldPopperHideOnBlur: function shouldPopperHideOnBlur() {\n return true;\n },\n showOnInit: false,\n size: 'regular',\n sticky: false,\n target: '',\n theme: 'dark',\n touch: true,\n touchHold: false,\n trigger: 'mouseenter focus',\n updateDuration: 200,\n wait: null,\n zIndex: 9999\n\n /**\n * If the set() method encounters one of these, the popperInstance must be\n * recreated\n */\n};var POPPER_INSTANCE_RELATED_PROPS = ['arrow', 'arrowType', 'distance', 'flip', 'flipBehavior', 'offset', 'placement', 'popperOptions'];\n\nvar Selectors = {\n POPPER: '.tippy-popper',\n TOOLTIP: '.tippy-tooltip',\n CONTENT: '.tippy-content',\n BACKDROP: '.tippy-backdrop',\n ARROW: '.tippy-arrow',\n ROUND_ARROW: '.tippy-roundarrow'\n};\n\nvar elementProto = isBrowser ? Element.prototype : {};\n\nvar matches = elementProto.matches || elementProto.matchesSelector || elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector || elementProto.msMatchesSelector;\n\n/**\n * Ponyfill for Array.from - converts iterable values to an array\n * @param {Array-like} value\n * @return {Array}\n */\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\n\n/**\n * Ponyfill for Element.prototype.closest\n * @param {Element} element\n * @param {String} parentSelector\n * @return {Element}\n */\nfunction closest(element, parentSelector) {\n return (elementProto.closest || function (selector) {\n var el = this;\n while (el) {\n if (matches.call(el, selector)) return el;\n el = el.parentElement;\n }\n }).call(element, parentSelector);\n}\n\n/**\n * Works like Element.prototype.closest, but uses a callback instead\n * @param {Element} element\n * @param {Function} callback\n * @return {Element}\n */\nfunction closestCallback(element, callback) {\n while (element) {\n if (callback(element)) return element;\n element = element.parentElement;\n }\n}\n\nvar PASSIVE = { passive: true };\nvar FF_EXTENSION_TRICK = { x: true };\n\n/**\n * Returns a new `div` element\n * @return {HTMLDivElement}\n */\nfunction div() {\n return document.createElement('div');\n}\n\n/**\n * Sets the innerHTML of an element while tricking linters & minifiers\n * @param {HTMLElement} el\n * @param {Element|String} html\n */\nfunction setInnerHTML(el, html) {\n el[FF_EXTENSION_TRICK.x && 'innerHTML'] = html instanceof Element ? html[FF_EXTENSION_TRICK.x && 'innerHTML'] : html;\n}\n\n/**\n * Sets the content of a tooltip\n * @param {HTMLElement} contentEl\n * @param {Object} props\n */\nfunction setContent(contentEl, props) {\n if (props.content instanceof Element) {\n setInnerHTML(contentEl, '');\n contentEl.appendChild(props.content);\n } else {\n contentEl[props.allowHTML ? 'innerHTML' : 'textContent'] = props.content;\n }\n}\n\n/**\n * Returns the child elements of a popper element\n * @param {HTMLElement} popper\n */\nfunction getChildren(popper) {\n return {\n tooltip: popper.querySelector(Selectors.TOOLTIP),\n backdrop: popper.querySelector(Selectors.BACKDROP),\n content: popper.querySelector(Selectors.CONTENT),\n arrow: popper.querySelector(Selectors.ARROW) || popper.querySelector(Selectors.ROUND_ARROW)\n };\n}\n\n/**\n * Adds `data-inertia` attribute\n * @param {HTMLElement} tooltip\n */\nfunction addInertia(tooltip) {\n tooltip.setAttribute('data-inertia', '');\n}\n\n/**\n * Removes `data-inertia` attribute\n * @param {HTMLElement} tooltip\n */\nfunction removeInertia(tooltip) {\n tooltip.removeAttribute('data-inertia');\n}\n\n/**\n * Creates an arrow element and returns it\n */\nfunction createArrowElement(arrowType) {\n var arrow = div();\n if (arrowType === 'round') {\n arrow.className = 'tippy-roundarrow';\n setInnerHTML(arrow, '<svg viewBox=\"0 0 24 8\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3 8s2.021-.015 5.253-4.218C9.584 2.051 10.797 1.007 12 1c1.203-.007 2.416 1.035 3.761 2.782C19.012 8.005 21 8 21 8H3z\"/></svg>');\n } else {\n arrow.className = 'tippy-arrow';\n }\n return arrow;\n}\n\n/**\n * Creates a backdrop element and returns it\n */\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = 'tippy-backdrop';\n backdrop.setAttribute('data-state', 'hidden');\n return backdrop;\n}\n\n/**\n * Adds interactive-related attributes\n * @param {HTMLElement} popper\n * @param {HTMLElement} tooltip\n */\nfunction addInteractive(popper, tooltip) {\n popper.setAttribute('tabindex', '-1');\n tooltip.setAttribute('data-interactive', '');\n}\n\n/**\n * Removes interactive-related attributes\n * @param {HTMLElement} popper\n * @param {HTMLElement} tooltip\n */\nfunction removeInteractive(popper, tooltip) {\n popper.removeAttribute('tabindex');\n tooltip.removeAttribute('data-interactive');\n}\n\n/**\n * Applies a transition duration to a list of elements\n * @param {Array} els\n * @param {Number} value\n */\nfunction applyTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + 'ms';\n }\n });\n}\n\n/**\n * Add/remove transitionend listener from tooltip\n * @param {Element} tooltip\n * @param {String} action\n * @param {Function} listener\n */\nfunction toggleTransitionEndListener(tooltip, action, listener) {\n tooltip[action + 'EventListener']('transitionend', listener);\n}\n\n/**\n * Returns the popper's placement, ignoring shifting (top-start, etc)\n * @param {Element} popper\n * @return {String}\n */\nfunction getPopperPlacement(popper) {\n var fullPlacement = popper.getAttribute('x-placement');\n return fullPlacement ? fullPlacement.split('-')[0] : '';\n}\n\n/**\n * Sets the visibility state to elements so they can begin to transition\n * @param {Array} els\n * @param {String} state\n */\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\n\n/**\n * Triggers reflow\n * @param {Element} popper\n */\nfunction reflow(popper) {\n void popper.offsetHeight;\n}\n\n/**\n * Constructs the popper element and returns it\n * @param {Number} id\n * @param {Object} props\n */\nfunction createPopperElement(id, props) {\n var popper = div();\n popper.className = 'tippy-popper';\n popper.setAttribute('role', 'tooltip');\n popper.id = 'tippy-' + id;\n popper.style.zIndex = props.zIndex;\n\n var tooltip = div();\n tooltip.className = 'tippy-tooltip';\n tooltip.style.maxWidth = props.maxWidth + (typeof props.maxWidth === 'number' ? 'px' : '');\n tooltip.setAttribute('data-size', props.size);\n tooltip.setAttribute('data-animation', props.animation);\n tooltip.setAttribute('data-state', 'hidden');\n props.theme.split(' ').forEach(function (t) {\n tooltip.classList.add(t + '-theme');\n });\n\n var content = div();\n content.className = 'tippy-content';\n content.setAttribute('data-state', 'hidden');\n\n if (props.interactive) {\n addInteractive(popper, tooltip);\n }\n\n if (props.arrow) {\n tooltip.appendChild(createArrowElement(props.arrowType));\n }\n\n if (props.animateFill) {\n tooltip.appendChild(createBackdropElement());\n tooltip.setAttribute('data-animatefill', '');\n }\n\n if (props.inertia) {\n addInertia(tooltip);\n }\n\n setContent(content, props);\n\n tooltip.appendChild(content);\n popper.appendChild(tooltip);\n\n popper.addEventListener('focusout', function (e) {\n if (e.relatedTarget && popper._tippy && !closestCallback(e.relatedTarget, function (el) {\n return el === popper;\n }) && e.relatedTarget !== popper._tippy.reference && popper._tippy.props.shouldPopperHideOnBlur(e)) {\n popper._tippy.hide();\n }\n });\n\n return popper;\n}\n\n/**\n * Updates the popper element based on the new props\n * @param {HTMLElement} popper\n * @param {Object} prevProps\n * @param {Object} nextProps\n */\nfunction updatePopperElement(popper, prevProps, nextProps) {\n var _getChildren = getChildren(popper),\n tooltip = _getChildren.tooltip,\n content = _getChildren.content,\n backdrop = _getChildren.backdrop,\n arrow = _getChildren.arrow;\n\n popper.style.zIndex = nextProps.zIndex;\n tooltip.setAttribute('data-size', nextProps.size);\n tooltip.setAttribute('data-animation', nextProps.animation);\n tooltip.style.maxWidth = nextProps.maxWidth + (typeof nextProps.maxWidth === 'number' ? 'px' : '');\n\n if (prevProps.content !== nextProps.content) {\n setContent(content, nextProps);\n }\n\n // animateFill\n if (!prevProps.animateFill && nextProps.animateFill) {\n tooltip.appendChild(createBackdropElement());\n tooltip.setAttribute('data-animatefill', '');\n } else if (prevProps.animateFill && !nextProps.animateFill) {\n tooltip.removeChild(backdrop);\n tooltip.removeAttribute('data-animatefill');\n }\n\n // arrow\n if (!prevProps.arrow && nextProps.arrow) {\n tooltip.appendChild(createArrowElement(nextProps.arrowType));\n } else if (prevProps.arrow && !nextProps.arrow) {\n tooltip.removeChild(arrow);\n }\n\n // arrowType\n if (prevProps.arrow && nextProps.arrow && prevProps.arrowType !== nextProps.arrowType) {\n tooltip.replaceChild(createArrowElement(nextProps.arrowType), arrow);\n }\n\n // interactive\n if (!prevProps.interactive && nextProps.interactive) {\n addInteractive(popper, tooltip);\n } else if (prevProps.interactive && !nextProps.interactive) {\n removeInteractive(popper, tooltip);\n }\n\n // inertia\n if (!prevProps.inertia && nextProps.inertia) {\n addInertia(tooltip);\n } else if (prevProps.inertia && !nextProps.inertia) {\n removeInertia(tooltip);\n }\n\n // theme\n if (prevProps.theme !== nextProps.theme) {\n prevProps.theme.split(' ').forEach(function (theme) {\n tooltip.classList.remove(theme + '-theme');\n });\n nextProps.theme.split(' ').forEach(function (theme) {\n tooltip.classList.add(theme + '-theme');\n });\n }\n}\n\n/**\n * Runs the callback after the popper's position has been updated\n * update() is debounced with Promise.resolve() or setTimeout()\n * scheduleUpdate() is update() wrapped in requestAnimationFrame()\n * @param {Popper} popperInstance\n * @param {Function} callback\n */\nfunction afterPopperPositionUpdates(popperInstance, callback) {\n var popper = popperInstance.popper,\n options = popperInstance.options;\n var onCreate = options.onCreate,\n onUpdate = options.onUpdate;\n\n\n options.onCreate = options.onUpdate = function () {\n reflow(popper);\n callback();\n onUpdate();\n options.onCreate = onCreate;\n options.onUpdate = onUpdate;\n };\n}\n\n/**\n * Hides all visible poppers on the document, optionally excluding one\n * @param {Tippy} tippyInstanceToExclude\n */\nfunction hideAllPoppers(tippyInstanceToExclude) {\n arrayFrom(document.querySelectorAll(Selectors.POPPER)).forEach(function (popper) {\n var tip = popper._tippy;\n if (tip && tip.props.hideOnClick === true && (!tippyInstanceToExclude || popper !== tippyInstanceToExclude.popper)) {\n tip.hide();\n }\n });\n}\n\n/**\n * Determines if the mouse cursor is outside of the popper's interactive border\n * region\n * @param {String} popperPlacement\n * @param {Object} popperRect\n * @param {MouseEvent} event\n * @param {Object} props\n */\nfunction isCursorOutsideInteractiveBorder(popperPlacement, popperRect, event, props) {\n if (!popperPlacement) {\n return true;\n }\n\n var x = event.clientX,\n y = event.clientY;\n var interactiveBorder = props.interactiveBorder,\n distance = props.distance;\n\n\n var exceedsTop = popperRect.top - y > (popperPlacement === 'top' ? interactiveBorder + distance : interactiveBorder);\n\n var exceedsBottom = y - popperRect.bottom > (popperPlacement === 'bottom' ? interactiveBorder + distance : interactiveBorder);\n\n var exceedsLeft = popperRect.left - x > (popperPlacement === 'left' ? interactiveBorder + distance : interactiveBorder);\n\n var exceedsRight = x - popperRect.right > (popperPlacement === 'right' ? interactiveBorder + distance : interactiveBorder);\n\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n}\n\n/**\n * Returns the distance offset, taking into account the default offset due to\n * the transform: translate() rule in CSS\n * @param {Number} distance\n * @param {Number} defaultDistance\n */\nfunction getOffsetDistanceInPx(distance, defaultDistance) {\n return -(distance - defaultDistance) + 'px';\n}\n\n/**\n * Determines if a value is a plain object\n * @param {any} value\n * @return {Boolean}\n */\nfunction isPlainObject(value) {\n return {}.toString.call(value) === '[object Object]';\n}\n\n/**\n * Safe .hasOwnProperty check, for prototype-less objects\n * @param {Object} obj\n * @param {String} key\n * @return {Boolean}\n */\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\n\n/**\n * Determines if a value is numeric\n * @param {any} value\n * @return {Boolean}\n */\nfunction isNumeric(value) {\n return !isNaN(value) && !isNaN(parseFloat(value));\n}\n\n/**\n * Returns an array of elements based on the value\n * @param {any} value\n * @return {Array}\n */\nfunction getArrayOfElements(value) {\n if (value instanceof Element || isPlainObject(value)) {\n return [value];\n }\n if (value instanceof NodeList) {\n return arrayFrom(value);\n }\n if (Array.isArray(value)) {\n return value;\n }\n\n try {\n return arrayFrom(document.querySelectorAll(value));\n } catch (e) {\n return [];\n }\n}\n\n/**\n * Returns a value at a given index depending on if it's an array or number\n * @param {any} value\n * @param {Number} index\n * @param {any} defaultValue\n */\nfunction getValue(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? defaultValue : v;\n }\n return value;\n}\n\n/**\n * Focuses an element while preventing a scroll jump if it's not within the\n * viewport\n * @param {Element} el\n */\nfunction focus(el) {\n var x = window.scrollX || window.pageXOffset;\n var y = window.scrollY || window.pageYOffset;\n el.focus();\n scroll(x, y);\n}\n\n/**\n * Defers a function's execution until the call stack has cleared\n * @param {Function} fn\n */\nfunction defer(fn) {\n setTimeout(fn, 1);\n}\n\n/**\n * Debounce utility\n * @param {Function} fn\n * @param {Number} ms\n */\nfunction debounce(fn, ms) {\n var timeoutId = void 0;\n return function () {\n var _this = this,\n _arguments = arguments;\n\n clearTimeout(timeoutId);\n timeoutId = setTimeout(function () {\n return fn.apply(_this, _arguments);\n }, ms);\n };\n}\n\n/**\n * Prevents errors from being thrown while accessing nested modifier objects\n * in `popperOptions`\n * @param {Object} obj\n * @param {String} key\n * @return {Object|undefined}\n */\nfunction getModifier(obj, key) {\n return obj && obj.modifiers && obj.modifiers[key];\n}\n\n/**\n * Determines if an array or string includes a value\n * @param {Array|String} a\n * @param {any} b\n * @return {Boolean}\n */\nfunction includes(a, b) {\n return a.indexOf(b) > -1;\n}\n\nvar isUsingTouch = false;\n\nfunction onDocumentTouch() {\n if (isUsingTouch) {\n return;\n }\n\n isUsingTouch = true;\n\n if (isIOS) {\n document.body.classList.add('tippy-iOS');\n }\n\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n\nvar lastMouseMoveTime = 0;\nfunction onDocumentMouseMove() {\n var now = performance.now();\n\n // Chrome 60+ is 1 mousemove per animation frame, use 20ms time difference\n if (now - lastMouseMoveTime < 20) {\n isUsingTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n if (!isIOS) {\n document.body.classList.remove('tippy-iOS');\n }\n }\n\n lastMouseMoveTime = now;\n}\n\nfunction onDocumentClick(_ref) {\n var target = _ref.target;\n\n // Simulated events dispatched on the document\n if (!(target instanceof Element)) {\n return hideAllPoppers();\n }\n\n // Clicked on an interactive popper\n var popper = closest(target, Selectors.POPPER);\n if (popper && popper._tippy && popper._tippy.props.interactive) {\n return;\n }\n\n // Clicked on a reference\n var reference = closestCallback(target, function (el) {\n return el._tippy && el._tippy.reference === el;\n });\n if (reference) {\n var tip = reference._tippy;\n var isClickTrigger = includes(tip.props.trigger, 'click');\n\n if (isUsingTouch || isClickTrigger) {\n return hideAllPoppers(tip);\n }\n\n if (tip.props.hideOnClick !== true || isClickTrigger) {\n return;\n }\n\n tip.clearDelayTimeouts();\n }\n\n hideAllPoppers();\n}\n\nfunction onWindowBlur() {\n var _document = document,\n activeElement = _document.activeElement;\n\n if (activeElement && activeElement.blur && activeElement._tippy) {\n activeElement.blur();\n }\n}\n\nfunction onWindowResize() {\n arrayFrom(document.querySelectorAll(Selectors.POPPER)).forEach(function (popper) {\n var tippyInstance = popper._tippy;\n if (!tippyInstance.props.livePlacement) {\n tippyInstance.popperInstance.scheduleUpdate();\n }\n });\n}\n\n/**\n * Adds the needed global event listeners\n */\nfunction bindGlobalEventListeners() {\n document.addEventListener('click', onDocumentClick, true);\n document.addEventListener('touchstart', onDocumentTouch, PASSIVE);\n window.addEventListener('blur', onWindowBlur);\n window.addEventListener('resize', onWindowResize);\n\n if (!supportsTouch && (navigator.maxTouchPoints || navigator.msMaxTouchPoints)) {\n document.addEventListener('pointerdown', onDocumentTouch);\n }\n}\n\nvar keys = Object.keys(Defaults);\n\n/**\n * Determines if an element can receive focus\n * @param {Element} el\n * @return {Boolean}\n */\nfunction canReceiveFocus(el) {\n return el instanceof Element ? matches.call(el, 'a[href],area[href],button,details,input,textarea,select,iframe,[tabindex]') && !el.hasAttribute('disabled') : true;\n}\n\n/**\n * Returns an object of optional props from data-tippy-* attributes\n * @param {Element} reference\n * @return {Object}\n */\nfunction getDataAttributeOptions(reference) {\n return keys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute('data-tippy-' + key) || '').trim();\n\n if (!valueAsString) {\n return acc;\n }\n\n if (key === 'content') {\n acc[key] = valueAsString;\n } else if (valueAsString === 'true') {\n acc[key] = true;\n } else if (valueAsString === 'false') {\n acc[key] = false;\n } else if (isNumeric(valueAsString)) {\n acc[key] = Number(valueAsString);\n } else if (valueAsString[0] === '[' || valueAsString[0] === '{') {\n acc[key] = JSON.parse(valueAsString);\n } else {\n acc[key] = valueAsString;\n }\n\n return acc;\n }, {});\n}\n\n/**\n * Polyfills the virtual reference (plain object) with Element.prototype props\n * Mutating because DOM elements are mutated, adds `_tippy` property\n * @param {Object} virtualReference\n * @return {Object}\n */\nfunction polyfillElementPrototypeProperties(virtualReference) {\n var polyfills = {\n isVirtual: true,\n attributes: virtualReference.attributes || {},\n setAttribute: function setAttribute(key, value) {\n virtualReference.attributes[key] = value;\n },\n getAttribute: function getAttribute(key) {\n return virtualReference.attributes[key];\n },\n removeAttribute: function removeAttribute(key) {\n delete virtualReference.attributes[key];\n },\n hasAttribute: function hasAttribute(key) {\n return key in virtualReference.attributes;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n\n classList: {\n classNames: {},\n add: function add(key) {\n virtualReference.classList.classNames[key] = true;\n },\n remove: function remove(key) {\n delete virtualReference.classList.classNames[key];\n },\n contains: function contains(key) {\n return key in virtualReference.classList.classNames;\n }\n }\n };\n\n for (var key in polyfills) {\n virtualReference[key] = polyfills[key];\n }\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 * Evaluates the props object\n * @param {Element} reference\n * @param {Object} props\n * @return {Object}\n */\nfunction evaluateProps(reference, props) {\n var out = _extends({}, props, props.performance ? {} : getDataAttributeOptions(reference));\n\n if (out.arrow) {\n out.animateFill = false;\n }\n\n if (typeof out.appendTo === 'function') {\n out.appendTo = props.appendTo(reference);\n }\n\n if (typeof out.content === 'function') {\n out.content = props.content(reference);\n }\n\n return out;\n}\n\n/**\n * Validates an object of options with the valid default props object\n * @param {Object} options\n * @param {Object} defaults\n */\nfunction validateOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults$$1 = arguments[1];\n\n Object.keys(options).forEach(function (option) {\n if (!hasOwnProperty(defaults$$1, option)) {\n throw new Error('[tippy]: `' + option + '` is not a valid option');\n }\n });\n}\n\n// =============================================================================\n// DEPRECATED\n// All of this code (for the `arrowTransform` option) will be removed in v4\n// =============================================================================\nvar TRANSFORM_NUMBER_RE = {\n translate: /translateX?Y?\\(([^)]+)\\)/,\n scale: /scaleX?Y?\\(([^)]+)\\)/\n\n /**\n * Transforms the x/y axis based on the placement\n */\n};function transformAxisBasedOnPlacement(axis, isVertical) {\n return (isVertical ? axis : {\n X: 'Y',\n Y: 'X'\n }[axis]) || '';\n}\n\n/**\n * Transforms the scale/translate numbers based on the placement\n */\nfunction transformNumbersBasedOnPlacement(type, numbers, isVertical, isReverse) {\n /**\n * Avoid destructuring because a large boilerplate function is generated\n * by Babel\n */\n var a = numbers[0];\n var b = numbers[1];\n\n if (!a && !b) {\n return '';\n }\n\n var transforms = {\n scale: function () {\n if (!b) {\n return '' + a;\n } else {\n return isVertical ? a + ', ' + b : b + ', ' + a;\n }\n }(),\n translate: function () {\n if (!b) {\n return isReverse ? -a + 'px' : a + 'px';\n } else {\n if (isVertical) {\n return isReverse ? a + 'px, ' + -b + 'px' : a + 'px, ' + b + 'px';\n } else {\n return isReverse ? -b + 'px, ' + a + 'px' : b + 'px, ' + a + 'px';\n }\n }\n }()\n };\n\n return transforms[type];\n}\n\n/**\n * Returns the axis for a CSS function (translate or scale)\n */\nfunction getTransformAxis(str, cssFunction) {\n var match = str.match(new RegExp(cssFunction + '([XY])'));\n return match ? match[1] : '';\n}\n\n/**\n * Returns the numbers given to the CSS function\n */\nfunction getTransformNumbers(str, regex) {\n var match = str.match(regex);\n return match ? match[1].split(',').map(function (n) {\n return parseFloat(n, 10);\n }) : [];\n}\n\n/**\n * Computes the arrow's transform so that it is correct for any placement\n */\nfunction computeArrowTransform(arrow, arrowTransform) {\n var placement = getPopperPlacement(closest(arrow, Selectors.POPPER));\n var isVertical = includes(['top', 'bottom'], placement);\n var isReverse = includes(['right', 'bottom'], placement);\n\n var matches$$1 = {\n translate: {\n axis: getTransformAxis(arrowTransform, 'translate'),\n numbers: getTransformNumbers(arrowTransform, TRANSFORM_NUMBER_RE.translate)\n },\n scale: {\n axis: getTransformAxis(arrowTransform, 'scale'),\n numbers: getTransformNumbers(arrowTransform, TRANSFORM_NUMBER_RE.scale)\n }\n };\n\n var computedTransform = arrowTransform.replace(TRANSFORM_NUMBER_RE.translate, 'translate' + transformAxisBasedOnPlacement(matches$$1.translate.axis, isVertical) + '(' + transformNumbersBasedOnPlacement('translate', matches$$1.translate.numbers, isVertical, isReverse) + ')').replace(TRANSFORM_NUMBER_RE.scale, 'scale' + transformAxisBasedOnPlacement(matches$$1.scale.axis, isVertical) + '(' + transformNumbersBasedOnPlacement('scale', matches$$1.scale.numbers, isVertical, isReverse) + ')');\n\n arrow.style[typeof document.body.style.transform !== 'undefined' ? 'transform' : 'webkitTransform'] = computedTransform;\n}\n\nvar idCounter = 1;\n\n/**\n * Creates and returns a Tippy object. We're using a closure pattern instead of\n * a class so that the exposed object API is clean without private members\n * prefixed with `_`.\n * @param {Element} reference\n * @param {Object} collectionProps\n * @return {Object} instance\n */\nfunction createTippy(reference, collectionProps) {\n var props = evaluateProps(reference, collectionProps);\n\n // If the reference shouldn't have multiple tippys, return null early\n if (!props.multiple && reference._tippy) {\n return null;\n }\n\n /* ======================= 🔒 Private members 🔒 ======================= */\n // The popper element's mutation observer\n var popperMutationObserver = null;\n\n // The last trigger event object that caused the tippy to show\n var lastTriggerEvent = {};\n\n // The last mousemove event object created by the document mousemove event\n var lastMouseMoveEvent = null;\n\n // Timeout created by the show delay\n var showTimeoutId = 0;\n\n // Timeout created by the hide delay\n var hideTimeoutId = 0;\n\n // Flag to determine if the tippy is preparing to show due to the show timeout\n var isPreparingToShow = false;\n\n // The current `transitionend` callback reference\n var transitionEndListener = function transitionEndListener() {};\n\n // Array of event listeners currently attached to the reference element\n var listeners = [];\n\n // Flag to determine if the reference was recently programmatically focused\n var referenceJustProgrammaticallyFocused = false;\n\n // Private onMouseMove handler reference, debounced or not\n var debouncedOnMouseMove = props.interactiveDebounce > 0 ? debounce(onMouseMove, props.interactiveDebounce) : onMouseMove;\n\n /* ======================= 🔑 Public members 🔑 ======================= */\n // id used for the `aria-describedby` / `aria-labelledby` attribute\n var id = idCounter++;\n\n // Popper element reference\n var popper = createPopperElement(id, props);\n\n // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n popper.addEventListener('mouseenter', function (event) {\n if (tip.props.interactive && tip.state.isVisible && lastTriggerEvent.type === 'mouseenter') {\n prepareShow(event);\n }\n });\n popper.addEventListener('mouseleave', function (event) {\n if (tip.props.interactive && lastTriggerEvent.type === 'mouseenter' && tip.props.interactiveDebounce === 0 && isCursorOutsideInteractiveBorder(getPopperPlacement(popper), popper.getBoundingClientRect(), event, tip.props)) {\n prepareHide();\n }\n });\n\n // Popper element children: { arrow, backdrop, content, tooltip }\n var popperChildren = getChildren(popper);\n\n // The state of the tippy\n var state = {\n // If the tippy is currently enabled\n isEnabled: true,\n // show() invoked, not currently transitioning out\n isVisible: false,\n // If the tippy has been destroyed\n isDestroyed: false,\n // If the tippy is on the DOM (transitioning out or in)\n isMounted: false,\n // show() transition finished\n isShown: false\n\n // Popper.js instance for the tippy is lazily created\n };var popperInstance = null;\n\n // 🌟 tippy instance\n var tip = {\n // properties\n id: id,\n reference: reference,\n popper: popper,\n popperChildren: popperChildren,\n popperInstance: popperInstance,\n props: props,\n state: state,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n set: set$$1,\n setContent: setContent$$1,\n show: show,\n hide: hide,\n enable: enable,\n disable: disable,\n destroy: destroy\n };\n\n addTriggersToReference();\n\n reference.addEventListener('click', onReferenceClick);\n\n if (!props.lazy) {\n tip.popperInstance = createPopperInstance();\n tip.popperInstance.disableEventListeners();\n }\n\n if (props.showOnInit) {\n prepareShow();\n }\n\n // Ensure the reference element can receive focus (and is not a delegate)\n if (props.a11y && !props.target && !canReceiveFocus(reference)) {\n reference.setAttribute('tabindex', '0');\n }\n\n // Install shortcuts\n reference._tippy = tip;\n popper._tippy = tip;\n\n return tip;\n\n /* ======================= 🔒 Private methods 🔒 ======================= */\n /**\n * If the reference was clicked, it also receives focus\n */\n function onReferenceClick() {\n defer(function () {\n referenceJustProgrammaticallyFocused = false;\n });\n }\n\n /**\n * Ensure the popper's position stays correct if its dimensions change. Use\n * update() over .scheduleUpdate() so there is no 1 frame flash due to\n * async update\n */\n function addMutationObserver() {\n popperMutationObserver = new MutationObserver(function () {\n tip.popperInstance.update();\n });\n popperMutationObserver.observe(popper, {\n childList: true,\n subtree: true,\n characterData: true\n });\n }\n\n /**\n * Positions the virtual reference near the mouse cursor\n */\n function positionVirtualReferenceNearCursor(event) {\n var _lastMouseMoveEvent = lastMouseMoveEvent = event,\n clientX = _lastMouseMoveEvent.clientX,\n clientY = _lastMouseMoveEvent.clientY;\n\n if (!tip.popperInstance) {\n return;\n }\n\n // Ensure virtual reference is padded by 5px to prevent tooltip from\n // overflowing. Maybe Popper.js issue?\n var placement = getPopperPlacement(tip.popper);\n var padding = tip.popperChildren.arrow ? 20 : 5;\n var isVerticalPlacement = includes(['top', 'bottom'], placement);\n var isHorizontalPlacement = includes(['left', 'right'], placement);\n\n // Top / left boundary\n var x = isVerticalPlacement ? Math.max(padding, clientX) : clientX;\n var y = isHorizontalPlacement ? Math.max(padding, clientY) : clientY;\n\n // Bottom / right boundary\n if (isVerticalPlacement && x > padding) {\n x = Math.min(clientX, window.innerWidth - padding);\n }\n if (isHorizontalPlacement && y > padding) {\n y = Math.min(clientY, window.innerHeight - padding);\n }\n\n var rect = tip.reference.getBoundingClientRect();\n var followCursor = tip.props.followCursor;\n\n var isHorizontal = followCursor === 'horizontal';\n var isVertical = followCursor === 'vertical';\n\n tip.popperInstance.reference = {\n getBoundingClientRect: function getBoundingClientRect() {\n return {\n width: 0,\n height: 0,\n top: isHorizontal ? rect.top : y,\n bottom: isHorizontal ? rect.bottom : y,\n left: isVertical ? rect.left : x,\n right: isVertical ? rect.right : x\n };\n },\n clientWidth: 0,\n clientHeight: 0\n };\n\n tip.popperInstance.scheduleUpdate();\n\n if (followCursor === 'initial' && tip.state.isVisible) {\n removeFollowCursorListener();\n }\n }\n\n /**\n * Creates the tippy instance for a delegate when it's been triggered\n */\n function createDelegateChildTippy(event) {\n var targetEl = closest(event.target, tip.props.target);\n if (targetEl && !targetEl._tippy) {\n createTippy(targetEl, _extends({}, tip.props, {\n target: '',\n showOnInit: true\n }));\n prepareShow(event);\n }\n }\n\n /**\n * Setup before show() is invoked (delays, etc.)\n */\n function prepareShow(event) {\n clearDelayTimeouts();\n\n if (tip.state.isVisible) {\n return;\n }\n\n // Is a delegate, create an instance for the child target\n if (tip.props.target) {\n return createDelegateChildTippy(event);\n }\n\n isPreparingToShow = true;\n\n if (tip.props.wait) {\n return tip.props.wait(tip, event);\n }\n\n // If the tooltip has a delay, we need to be listening to the mousemove as\n // soon as the trigger event is fired, so that it's in the correct position\n // upon mount.\n // Edge case: if the tooltip is still mounted, but then prepareShow() is\n // called, it causes a jump.\n if (hasFollowCursorBehavior() && !tip.state.isMounted) {\n document.addEventListener('mousemove', positionVirtualReferenceNearCursor);\n }\n\n var delay = getValue(tip.props.delay, 0, Defaults.delay);\n\n if (delay) {\n showTimeoutId = setTimeout(function () {\n show();\n }, delay);\n } else {\n show();\n }\n }\n\n /**\n * Setup before hide() is invoked (delays, etc.)\n */\n function prepareHide() {\n clearDelayTimeouts();\n\n if (!tip.state.isVisible) {\n return removeFollowCursorListener();\n }\n\n isPreparingToShow = false;\n\n var delay = getValue(tip.props.delay, 1, Defaults.delay);\n\n if (delay) {\n hideTimeoutId = setTimeout(function () {\n if (tip.state.isVisible) {\n hide();\n }\n }, delay);\n } else {\n hide();\n }\n }\n\n /**\n * Removes the follow cursor listener\n */\n function removeFollowCursorListener() {\n document.removeEventListener('mousemove', positionVirtualReferenceNearCursor);\n lastMouseMoveEvent = null;\n }\n\n /**\n * Cleans up old listeners\n */\n function cleanupOldMouseListeners() {\n document.body.removeEventListener('mouseleave', prepareHide);\n document.removeEventListener('mousemove', debouncedOnMouseMove);\n }\n\n /**\n * Event listener invoked upon trigger\n */\n function onTrigger(event) {\n if (!tip.state.isEnabled || isEventListenerStopped(event)) {\n return;\n }\n\n if (!tip.state.isVisible) {\n lastTriggerEvent = event;\n }\n\n // Toggle show/hide when clicking click-triggered tooltips\n if (event.type === 'click' && tip.props.hideOnClick !== false && tip.state.isVisible) {\n prepareHide();\n } else {\n prepareShow(event);\n }\n }\n\n /**\n * Event listener used for interactive tooltips to detect when they should\n * hide\n */\n function onMouseMove(event) {\n var referenceTheCursorIsOver = closestCallback(event.target, function (el) {\n return el._tippy;\n });\n\n var isCursorOverPopper = closest(event.target, Selectors.POPPER) === tip.popper;\n var isCursorOverReference = referenceTheCursorIsOver === tip.reference;\n\n if (isCursorOverPopper || isCursorOverReference) {\n return;\n }\n\n if (isCursorOutsideInteractiveBorder(getPopperPlacement(tip.popper), tip.popper.getBoundingClientRect(), event, tip.props)) {\n cleanupOldMouseListeners();\n prepareHide();\n }\n }\n\n /**\n * Event listener invoked upon mouseleave\n */\n function onMouseLeave(event) {\n if (isEventListenerStopped(event)) {\n return;\n }\n\n if (tip.props.interactive) {\n document.body.addEventListener('mouseleave', prepareHide);\n document.addEventListener('mousemove', debouncedOnMouseMove);\n return;\n }\n\n prepareHide();\n }\n\n /**\n * Event listener invoked upon blur\n */\n function onBlur(event) {\n if (event.target !== tip.reference) {\n return;\n }\n\n if (tip.props.interactive) {\n if (!event.relatedTarget) {\n return;\n }\n if (closest(event.relatedTarget, Selectors.POPPER)) {\n return;\n }\n }\n\n prepareHide();\n }\n\n /**\n * Event listener invoked when a child target is triggered\n */\n function onDelegateShow(event) {\n if (closest(event.target, tip.props.target)) {\n prepareShow(event);\n }\n }\n\n /**\n * Event listener invoked when a child target should hide\n */\n function onDelegateHide(event) {\n if (closest(event.target, tip.props.target)) {\n prepareHide();\n }\n }\n\n /**\n * Determines if an event listener should stop further execution due to the\n * `touchHold` option\n */\n function isEventListenerStopped(event) {\n var isTouchEvent = includes(event.type, 'touch');\n var caseA = supportsTouch && isUsingTouch && tip.props.touchHold && !isTouchEvent;\n var caseB = isUsingTouch && !tip.props.touchHold && isTouchEvent;\n return caseA || caseB;\n }\n\n /**\n * Creates the popper instance for the tip\n */\n function createPopperInstance() {\n var popperOptions = tip.props.popperOptions;\n var _tip$popperChildren = tip.popperChildren,\n tooltip = _tip$popperChildren.tooltip,\n arrow = _tip$popperChildren.arrow;\n\n\n return new Popper(tip.reference, tip.popper, _extends({\n placement: tip.props.placement\n }, popperOptions, {\n modifiers: _extends({}, popperOptions ? popperOptions.modifiers : {}, {\n preventOverflow: _extends({\n boundariesElement: tip.props.boundary\n }, getModifier(popperOptions, 'preventOverflow')),\n arrow: _extends({\n element: arrow,\n enabled: !!arrow\n }, getModifier(popperOptions, 'arrow')),\n flip: _extends({\n enabled: tip.props.flip,\n padding: tip.props.distance + 5 /* 5px from viewport boundary */\n , behavior: tip.props.flipBehavior\n }, getModifier(popperOptions, 'flip')),\n offset: _extends({\n offset: tip.props.offset\n }, getModifier(popperOptions, 'offset'))\n }),\n onCreate: function onCreate() {\n tooltip.style[getPopperPlacement(tip.popper)] = getOffsetDistanceInPx(tip.props.distance, Defaults.distance);\n\n if (arrow && tip.props.arrowTransform) {\n computeArrowTransform(arrow, tip.props.arrowTransform);\n }\n },\n onUpdate: function onUpdate() {\n var styles = tooltip.style;\n styles.top = '';\n styles.bottom = '';\n styles.left = '';\n styles.right = '';\n styles[getPopperPlacement(tip.popper)] = getOffsetDistanceInPx(tip.props.distance, Defaults.distance);\n\n if (arrow && tip.props.arrowTransform) {\n computeArrowTransform(arrow, tip.props.arrowTransform);\n }\n }\n }));\n }\n\n /**\n * Mounts the tooltip to the DOM, callback to show tooltip is run **after**\n * popper's position has updated\n */\n function mount(callback) {\n if (!tip.popperInstance) {\n tip.popperInstance = createPopperInstance();\n addMutationObserver();\n if (!tip.props.livePlacement || hasFollowCursorBehavior()) {\n tip.popperInstance.disableEventListeners();\n }\n } else {\n if (!hasFollowCursorBehavior()) {\n tip.popperInstance.scheduleUpdate();\n if (tip.props.livePlacement) {\n tip.popperInstance.enableEventListeners();\n }\n }\n }\n\n // If the instance previously had followCursor behavior, it will be\n // positioned incorrectly if triggered by `focus` afterwards.\n // Update the reference back to the real DOM element\n tip.popperInstance.reference = tip.reference;\n var arrow = tip.popperChildren.arrow;\n\n\n if (hasFollowCursorBehavior()) {\n if (arrow) {\n arrow.style.margin = '0';\n }\n var delay = getValue(tip.props.delay, 0, Defaults.delay);\n if (lastTriggerEvent.type) {\n positionVirtualReferenceNearCursor(delay && lastMouseMoveEvent ? lastMouseMoveEvent : lastTriggerEvent);\n }\n } else if (arrow) {\n arrow.style.margin = '';\n }\n\n afterPopperPositionUpdates(tip.popperInstance, callback);\n\n if (!tip.props.appendTo.contains(tip.popper)) {\n tip.props.appendTo.appendChild(tip.popper);\n tip.props.onMount(tip);\n tip.state.isMounted = true;\n }\n }\n\n /**\n * Determines if the instance is in `followCursor` mode\n */\n function hasFollowCursorBehavior() {\n return tip.props.followCursor && !isUsingTouch && lastTriggerEvent.type !== 'focus';\n }\n\n /**\n * Updates the tooltip's position on each animation frame + timeout\n */\n function makeSticky() {\n applyTransitionDuration([tip.popper], isIE ? 0 : tip.props.updateDuration);\n\n var updatePosition = function updatePosition() {\n if (tip.popperInstance) {\n tip.popperInstance.scheduleUpdate();\n }\n\n if (tip.state.isMounted) {\n requestAnimationFrame(updatePosition);\n } else {\n applyTransitionDuration([tip.popper], 0);\n }\n };\n\n updatePosition();\n }\n\n /**\n * Invokes a callback once the tooltip has fully transitioned out\n */\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!tip.state.isVisible && tip.props.appendTo.contains(tip.popper)) {\n callback();\n }\n });\n }\n\n /**\n * Invokes a callback once the tooltip has fully transitioned in\n */\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n\n /**\n * Invokes a callback once the tooltip's CSS transition ends\n */\n function onTransitionEnd(duration, callback) {\n // Make callback synchronous if duration is 0\n if (duration === 0) {\n return callback();\n }\n\n var tooltip = tip.popperChildren.tooltip;\n\n\n var listener = function listener(e) {\n if (e.target === tooltip) {\n toggleTransitionEndListener(tooltip, 'remove', listener);\n callback();\n }\n };\n\n toggleTransitionEndListener(tooltip, 'remove', transitionEndListener);\n toggleTransitionEndListener(tooltip, 'add', listener);\n\n transitionEndListener = listener;\n }\n\n /**\n * Adds an event listener to the reference and stores it in `listeners`\n */\n function on(eventType, handler) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n tip.reference.addEventListener(eventType, handler, options);\n listeners.push({ eventType: eventType, handler: handler, options: options });\n }\n\n /**\n * Adds event listeners to the reference based on the `trigger` prop\n */\n function addTriggersToReference() {\n if (tip.props.touchHold && !tip.props.target) {\n on('touchstart', onTrigger, PASSIVE);\n on('touchend', onMouseLeave, PASSIVE);\n }\n\n tip.props.trigger.trim().split(' ').forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n }\n\n if (!tip.props.target) {\n on(eventType, onTrigger);\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n case 'focus':\n on(isIE ? 'focusout' : 'blur', onBlur);\n break;\n }\n } else {\n switch (eventType) {\n case 'mouseenter':\n on('mouseover', onDelegateShow);\n on('mouseout', onDelegateHide);\n break;\n case 'focus':\n on('focusin', onDelegateShow);\n on('focusout', onDelegateHide);\n break;\n case 'click':\n on(eventType, onDelegateShow);\n break;\n }\n }\n });\n }\n\n /**\n * Removes event listeners from the reference\n */\n function removeTriggersFromReference() {\n listeners.forEach(function (_ref) {\n var eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n\n tip.reference.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n /* ======================= 🔑 Public methods 🔑 ======================= */\n /**\n * Enables the instance to allow it to show or hide\n */\n function enable() {\n tip.state.isEnabled = true;\n }\n\n /**\n * Disables the instance to disallow it to show or hide\n */\n function disable() {\n tip.state.isEnabled = false;\n }\n\n /**\n * Clears pending timeouts related to the `delay` prop if any\n */\n function clearDelayTimeouts() {\n clearTimeout(showTimeoutId);\n clearTimeout(hideTimeoutId);\n }\n\n /**\n * Sets new props for the instance and redraws the tooltip\n */\n function set$$1() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n validateOptions(options, Defaults);\n\n var prevProps = tip.props;\n var nextProps = evaluateProps(tip.reference, _extends({}, tip.props, options, {\n performance: true\n }));\n nextProps.performance = hasOwnProperty(options, 'performance') ? options.performance : prevProps.performance;\n tip.props = nextProps;\n\n if (hasOwnProperty(options, 'trigger') || hasOwnProperty(options, 'touchHold')) {\n removeTriggersFromReference();\n addTriggersToReference();\n }\n\n if (hasOwnProperty(options, 'interactiveDebounce')) {\n cleanupOldMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, options.interactiveDebounce);\n }\n\n updatePopperElement(tip.popper, prevProps, nextProps);\n tip.popperChildren = getChildren(tip.popper);\n\n if (tip.popperInstance && POPPER_INSTANCE_RELATED_PROPS.some(function (prop) {\n return hasOwnProperty(options, prop);\n })) {\n tip.popperInstance.destroy();\n tip.popperInstance = createPopperInstance();\n if (!tip.state.isVisible) {\n tip.popperInstance.disableEventListeners();\n }\n if (tip.props.followCursor && lastMouseMoveEvent) {\n positionVirtualReferenceNearCursor(lastMouseMoveEvent);\n }\n }\n }\n\n /**\n * Shortcut for .set({ content: newContent })\n */\n function setContent$$1(content) {\n set$$1({ content: content });\n }\n\n /**\n * Shows the tooltip\n */\n function show() {\n var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getValue(tip.props.duration, 0, Defaults.duration[0]);\n\n if (tip.state.isDestroyed || !tip.state.isEnabled || isUsingTouch && !tip.props.touch) {\n return;\n }\n\n // Destroy tooltip if the reference element is no longer on the DOM\n if (!tip.reference.isVirtual && !document.documentElement.contains(tip.reference)) {\n return destroy();\n }\n\n // Do not show tooltip if the reference element has a `disabled` attribute\n if (tip.reference.hasAttribute('disabled')) {\n return;\n }\n\n // If the reference was just programmatically focused for accessibility\n // reasons\n if (referenceJustProgrammaticallyFocused) {\n referenceJustProgrammaticallyFocused = false;\n return;\n }\n\n if (tip.props.onShow(tip) === false) {\n return;\n }\n\n tip.popper.style.visibility = 'visible';\n tip.state.isVisible = true;\n\n // Prevent a transition if the popper is at the opposite placement\n applyTransitionDuration([tip.popper, tip.popperChildren.tooltip, tip.popperChildren.backdrop], 0);\n\n mount(function () {\n if (!tip.state.isVisible) {\n return;\n }\n\n // Arrow will sometimes not be positioned correctly. Force another update\n if (!hasFollowCursorBehavior()) {\n tip.popperInstance.update();\n }\n\n applyTransitionDuration([tip.popperChildren.tooltip, tip.popperChildren.backdrop, tip.popperChildren.content], duration);\n if (tip.popperChildren.backdrop) {\n tip.popperChildren.content.style.transitionDelay = Math.round(duration / 6) + 'ms';\n }\n\n if (tip.props.interactive) {\n tip.reference.classList.add('tippy-active');\n }\n\n if (tip.props.sticky) {\n makeSticky();\n }\n\n setVisibilityState([tip.popperChildren.tooltip, tip.popperChildren.backdrop, tip.popperChildren.content], 'visible');\n\n onTransitionedIn(duration, function () {\n if (tip.props.updateDuration === 0) {\n tip.popperChildren.tooltip.classList.add('tippy-notransition');\n }\n\n if (tip.props.autoFocus && tip.props.interactive && includes(['focus', 'click'], lastTriggerEvent.type)) {\n focus(tip.popper);\n }\n\n if (tip.props.aria) {\n tip.reference.setAttribute('aria-' + tip.props.aria, tip.popper.id);\n }\n\n tip.props.onShown(tip);\n tip.state.isShown = true;\n });\n });\n }\n\n /**\n * Hides the tooltip\n */\n function hide() {\n var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getValue(tip.props.duration, 1, Defaults.duration[1]);\n\n if (tip.state.isDestroyed || !tip.state.isEnabled) {\n return;\n }\n\n if (tip.props.onHide(tip) === false) {\n return;\n }\n\n if (tip.props.updateDuration === 0) {\n tip.popperChildren.tooltip.classList.remove('tippy-notransition');\n }\n\n if (tip.props.interactive) {\n tip.reference.classList.remove('tippy-active');\n }\n\n tip.popper.style.visibility = 'hidden';\n tip.state.isVisible = false;\n tip.state.isShown = false;\n\n applyTransitionDuration([tip.popperChildren.tooltip, tip.popperChildren.backdrop, tip.popperChildren.content], duration);\n\n setVisibilityState([tip.popperChildren.tooltip, tip.popperChildren.backdrop, tip.popperChildren.content], 'hidden');\n\n if (tip.props.autoFocus && tip.props.interactive && !referenceJustProgrammaticallyFocused && includes(['focus', 'click'], lastTriggerEvent.type)) {\n if (lastTriggerEvent.type === 'focus') {\n referenceJustProgrammaticallyFocused = true;\n }\n focus(tip.reference);\n }\n\n onTransitionedOut(duration, function () {\n if (!isPreparingToShow) {\n removeFollowCursorListener();\n }\n\n if (tip.props.aria) {\n tip.reference.removeAttribute('aria-' + tip.props.aria);\n }\n\n tip.popperInstance.disableEventListeners();\n\n tip.props.appendTo.removeChild(tip.popper);\n tip.state.isMounted = false;\n\n tip.props.onHidden(tip);\n });\n }\n\n /**\n * Destroys the tooltip\n */\n function destroy(destroyTargetInstances) {\n if (tip.state.isDestroyed) {\n return;\n }\n\n // If the popper is currently mounted to the DOM, we want to ensure it gets\n // hidden and unmounted instantly upon destruction\n if (tip.state.isMounted) {\n hide(0);\n }\n\n removeTriggersFromReference();\n\n tip.reference.removeEventListener('click', onReferenceClick);\n\n delete tip.reference._tippy;\n\n if (tip.props.target && destroyTargetInstances) {\n arrayFrom(tip.reference.querySelectorAll(tip.props.target)).forEach(function (child) {\n return child._tippy && child._tippy.destroy();\n });\n }\n\n if (tip.popperInstance) {\n tip.popperInstance.destroy();\n }\n\n if (popperMutationObserver) {\n popperMutationObserver.disconnect();\n }\n\n tip.state.isDestroyed = true;\n }\n}\n\nvar globalEventListenersBound = false;\n\n/**\n * Exported module\n * @param {String|Element|Element[]|NodeList|Object} targets\n * @param {Object} options\n * @param {Boolean} one\n * @return {Object}\n */\nfunction tippy$1(targets, options, one) {\n validateOptions(options, Defaults);\n\n if (!globalEventListenersBound) {\n bindGlobalEventListeners();\n globalEventListenersBound = true;\n }\n\n var props = _extends({}, Defaults, options);\n\n /**\n * If they are specifying a virtual positioning reference, we need to polyfill\n * some native DOM props\n */\n if (isPlainObject(targets)) {\n polyfillElementPrototypeProperties(targets);\n }\n\n var references = getArrayOfElements(targets);\n var firstReference = references[0];\n\n var instances = (one && firstReference ? [firstReference] : references).reduce(function (acc, reference) {\n var tip = reference && createTippy(reference, props);\n if (tip) {\n acc.push(tip);\n }\n return acc;\n }, []);\n\n var collection = {\n targets: targets,\n props: props,\n instances: instances,\n destroyAll: function destroyAll() {\n collection.instances.forEach(function (instance) {\n instance.destroy();\n });\n collection.instances = [];\n }\n };\n\n return collection;\n}\n\n/**\n * Static props\n */\ntippy$1.version = version;\ntippy$1.defaults = Defaults;\n\n/**\n * Static methods\n */\ntippy$1.one = function (targets, options) {\n return tippy$1(targets, options, true).instances[0];\n};\ntippy$1.setDefaults = function (partialDefaults) {\n Object.keys(partialDefaults).forEach(function (key) {\n Defaults[key] = partialDefaults[key];\n });\n};\ntippy$1.disableAnimations = function () {\n tippy$1.setDefaults({\n duration: 0,\n updateDuration: 0,\n animateFill: false\n });\n};\ntippy$1.hideAllPoppers = hideAllPoppers;\n// noop: deprecated static method as capture phase is now default\ntippy$1.useCapture = function () {};\n\n/**\n * Auto-init tooltips for elements with a `data-tippy=\"...\"` attribute\n */\nvar autoInit = function autoInit() {\n arrayFrom(document.querySelectorAll('[data-tippy]')).forEach(function (el) {\n var content = el.getAttribute('data-tippy');\n if (content) {\n tippy$1(el, { content: content });\n }\n });\n};\nif (isBrowser) {\n setTimeout(autoInit);\n}\n\nexport default tippy$1;\n//# sourceMappingURL=tippy.standalone.js.map\n","export const missingTippy = 'Using the attachment feature of Shepherd requires the Tippy.js library';\n","import isObjectLike from 'lodash-es/isObjectLike';\nimport isString from 'lodash-es/isString';\nimport isUndefined from 'lodash-es/isUndefined';\nimport zipObject from 'lodash-es/zipObject';\nimport tippy from 'tippy.js';\nimport { missingTippy } from './utils/error-messages';\n\nconst centeredStylePopperModifier = {\n computeStyle: {\n enabled: true,\n fn(data) {\n data.styles = Object.assign({}, data.styles, {\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)'\n });\n\n return data;\n }\n }\n};\n\n// Used to compose settings for tippyOptions.popperOptions (https://atomiks.github.io/tippyjs/#popper-options-option)\nconst defaultPopperOptions = {\n positionFixed: true\n};\n\n/**\n * TODO rewrite the way items are being added to use more performant documentFragment code\n * @param html\n * @return {HTMLElement} The element created from the passed HTML string\n */\nexport function createFromHTML(html) {\n const el = document.createElement('div');\n el.innerHTML = html;\n return el.children[0];\n}\n\n/**\n * Parse the position object or string to return the attachment and element to attach to\n * @param {Object|String} position Either a string or object denoting the selector and position for attachment\n * @return {Object} The object with `element` and `on` for the step\n * @private\n */\nexport function _parseAttachToOpts(opts) {\n if (isObjectLike(opts)) {\n if (opts.hasOwnProperty('element') && opts.hasOwnProperty('on')) {\n return opts;\n }\n return null;\n }\n\n const positionRe = /^(.+) ((auto|top|left|right|bottom)(-start|-end)?)$/;\n const matches = positionRe.exec(opts);\n\n if (!matches) {\n return null;\n }\n\n return {\n element: matches[1],\n on: matches[2]\n };\n}\n\n/**\n * @param obj\n * @param {Array} props\n * @return {*}\n */\nexport function parseShorthand(obj, props) {\n if (obj === null || isUndefined(obj)) {\n return obj;\n } else if (isObjectLike(obj)) {\n return obj;\n }\n\n const values = obj.split(' ');\n return zipObject(props, values);\n}\n\n/**\n * Determines options for the tooltip and initializes\n * `this.tooltip` as a Tippy.js instance.\n */\nexport function setupTooltip() {\n if (isUndefined(tippy)) {\n throw new Error(missingTippy);\n }\n\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n const attachToOpts = this.parseAttachTo();\n\n this.tooltip = _makeTippyInstance.call(this, attachToOpts);\n\n this.target = attachToOpts.element || document.body;\n\n this.el.classList.add('shepherd-element');\n}\n\n/**\n * Passes `options.attachTo` to `_parseAttachToOpts` to get the correct `attachTo` format\n * @returns {({} & {element, on}) | ({})}\n * `element` is a qualified HTML Element\n * `on` is a string position value\n */\nexport function parseAttachTo() {\n const options = _parseAttachToOpts(this.options.attachTo) || {};\n const returnOpts = Object.assign({}, options);\n\n if (isString(options.element)) {\n // Can't override the element in user opts reference because we can't\n // guarantee that the element will exist in the future.\n try {\n returnOpts.element = document.querySelector(options.element);\n } catch(e) {\n // TODO\n }\n if (!returnOpts.element) {\n console.error(`The element for this Shepherd step was not found ${options.element}`);\n }\n }\n\n return returnOpts;\n}\n\n/**\n * Generates a `Tippy` instance from a set of base `attachTo` options\n *\n * @return {tippy} The final tippy instance\n * @private\n */\nfunction _makeTippyInstance(attachToOptions) {\n if (!attachToOptions.element) {\n return _makeCenteredTippy.call(this);\n }\n\n const tippyOptions = _makeAttachedTippyOptions.call(this, attachToOptions);\n\n return tippy.one(attachToOptions.element, tippyOptions);\n}\n\n/**\n * Generates the hash of options that will be passed to `Tippy` instances\n * target an element in the DOM.\n *\n * @param {Object} attachToOptions The local `attachTo` options\n * @return {Object} The final tippy options object\n * @private\n */\nfunction _makeAttachedTippyOptions(attachToOptions) {\n const resultingTippyOptions = {\n content: this.el,\n placement: attachToOptions.on || 'right',\n ...this.options.tippyOptions\n };\n\n if (this.options.tippyOptions && this.options.tippyOptions.popperOptions) {\n Object.assign(defaultPopperOptions, this.options.tippyOptions.popperOptions);\n }\n\n resultingTippyOptions.popperOptions = defaultPopperOptions;\n\n return resultingTippyOptions;\n}\n\n/**\n * Generates a `Tippy` instance for a tooltip that doesn't have a\n * target element in the DOM -- and thus is positioned in the center\n * of the view\n *\n * @return {tippy} The final tippy instance\n * @private\n */\nfunction _makeCenteredTippy() {\n const tippyOptions = {\n content: this.el,\n placement: 'top',\n ...this.options.tippyOptions\n };\n\n tippyOptions.arrow = false;\n tippyOptions.popperOptions = tippyOptions.popperOptions || {};\n\n const finalPopperOptions = Object.assign(\n {},\n defaultPopperOptions,\n tippyOptions.popperOptions,\n {\n modifiers: Object.assign(\n centeredStylePopperModifier,\n tippyOptions.popperOptions.modifiers\n )\n }\n );\n\n tippyOptions.popperOptions = finalPopperOptions;\n\n return tippy.one(document.body, tippyOptions);\n}\n","/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nexport default baseZipObject;\n","import assignValue from './_assignValue.js';\nimport baseZipObject from './_baseZipObject.js';\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nexport default zipObject;\n","import { parseShorthand } from './utils.js';\nimport forOwn from 'lodash-es/forOwn';\nimport isString from 'lodash-es/isString';\nimport isUndefined from 'lodash-es/isUndefined';\n\n/**\n * Sets up the handler to determine if we should advance the tour\n * @private\n */\nfunction _setupAdvanceOnHandler(selector) {\n return (event) => {\n if (this.isOpen()) {\n const targetIsEl = this.el && event.target === this.el;\n const targetIsSelector = !isUndefined(selector) && event.target.matches(selector);\n\n if (targetIsSelector || targetIsEl) {\n this.tour.next();\n }\n }\n };\n}\n\n/**\n * Bind the event handler for advanceOn\n */\nexport function bindAdvance() {\n // An empty selector matches the step element\n const { event, selector } = parseShorthand(this.options.advanceOn, ['selector', 'event']);\n const handler = _setupAdvanceOnHandler.call(this, selector);\n\n // TODO: this should also bind/unbind on show/hide\n const el = document.querySelector(selector);\n if (!isUndefined(selector) && el) {\n el.addEventListener(event, handler);\n } else {\n document.body.addEventListener(event, handler, true);\n }\n this.on('destroy', () => {\n return document.body.removeEventListener(event, handler, true);\n });\n}\n\n/**\n * Bind events to the buttons for next, back, etc\n * @param {Object} cfg An object containing the config options for the button\n * @param {HTMLElement} el The element for the button\n */\nexport function bindButtonEvents(cfg, el) {\n cfg.events = cfg.events || {};\n if (!isUndefined(cfg.action)) {\n // Including both a click event and an action is not supported\n cfg.events.click = cfg.action;\n }\n\n forOwn(cfg.events, (handler, event) => {\n if (isString(handler)) {\n const page = handler;\n handler = () => this.tour.show(page);\n }\n el.dataset.buttonEvent = true;\n el.addEventListener(event, handler);\n\n // Cleanup event listeners on destroy\n this.on('destroy', () => {\n el.removeAttribute('data-button-event');\n el.removeEventListener(event, handler);\n });\n });\n}\n\n/**\n * Add a click listener to the cancel link that cancels the tour\n * @param {HTMLElement} link The cancel link element\n */\nexport function bindCancelLink(link) {\n link.addEventListener('click', (e) => {\n e.preventDefault();\n this.cancel();\n });\n}\n\n/**\n * Take an array of strings and look up methods by name, then bind them to `this`\n * @param {String[]} methods The names of methods to bind\n */\nexport function bindMethods(methods) {\n methods.map((method) => {\n this[method] = this[method].bind(this);\n });\n}\n","import forOwn from 'lodash-es/forOwn';\nimport isElement from 'lodash-es/isElement';\nimport isEmpty from 'lodash-es/isEmpty';\nimport isFunction from 'lodash-es/isFunction';\nimport isString from 'lodash-es/isString';\nimport isUndefined from 'lodash-es/isUndefined';\nimport { Evented } from './evented.js';\nimport 'element-matches';\nimport { bindAdvance, bindButtonEvents, bindCancelLink, bindMethods } from './bind.js';\nimport { createFromHTML, setupTooltip, parseAttachTo } from './utils.js';\n\n/**\n * Creates incremented ID for each newly created step\n *\n * @private\n * @return {Number} The unique id for the step\n */\nconst uniqueId = (function() {\n let id = 0;\n return function() {\n return ++id;\n };\n})();\n\n/**\n * Class representing steps to be added to a tour\n * @extends {Evented}\n */\nexport class Step extends Evented {\n /**\n * Create a step\n * @param {Tour} tour The tour for the step\n * @param {Object} options The options for the step\n * @param {Object|string} options.attachTo What element the step should be attached to on the page.\n * It can either be a string of the form \"element on\", or an object with those properties.\n * For example: \".some #element left\", or {element: '.some #element', on: 'left'}.\n * If you use the object syntax, element can also be a DOM element. If you don’t specify an attachTo the\n * element will appear in the middle of the screen.\n * @param {HTMLElement|string} options.attachTo.element\n * @param {string} options.attachTo.on\n * @param {Object|string} options.advanceOn An action on the page which should advance shepherd to the next step.\n * It can be of the form `\"selector event\"`, or an object with those properties.\n * For example: `\".some-element click\"`, or `{selector: '.some-element', event: 'click'}`.\n * It doesn’t have to be an event inside the tour, it can be any event fired on any element on the page.\n * You can also always manually advance the Tour by calling `myTour.next()`.\n * @param {function} options.beforeShowPromise A function that returns a promise.\n * When the promise resolves, the rest of the `show` code for the step will execute.\n * @param {Object[]} options.buttons An array of buttons to add to the step. These will be rendered in a\n * footer below the main body text.\n * @param {function} options.buttons.button.action A function executed when the button is clicked on\n * @param {string} options.buttons.button.classes Extra classes to apply to the `<a>`\n * @param {Object} options.buttons.button.events A hash of events to bind onto the button, for example\n * `{'mouseover': function(){}}`. Adding a `click` event to events when you already have an `action` specified is not supported.\n * You can use events to skip steps or navigate to specific steps, with something like:\n * ```js\n * events: {\n * click: function() {\n * return Shepherd.activeTour.show('some_step_name');\n * }\n * }\n * ```\n * @param {string} options.buttons.button.text The HTML text of the button\n * @param {string} options.classes A string of extra classes to add to the step's content element.\n * @param {string} options.highlightClass An extra class to apply to the `attachTo` element when it is\n * highlighted (that is, when its step is active). You can then target that selector in your CSS.\n * @param {Object} options.tippyOptions Extra [options to pass to tippy.js]{@link https://atomiks.github.io/tippyjs/#all-options}\n * @param {boolean} options.scrollTo Should the element be scrolled to when this step is shown?\n * @param {function} options.scrollToHandler A function that lets you override the default scrollTo behavior and\n * define a custom action to do the scrolling, and possibly other logic.\n * @param {boolean} options.showCancelLink Should a cancel “✕” be shown in the header of the step?\n * @param {function} options.showOn A function that, when it returns `true`, will show the step.\n * If it returns false, the step will be skipped.\n * @param {string} options.text The text in the body of the step. It can be one of four types:\n * ```\n * - HTML string\n * - Array of HTML strings\n * - `HTMLElement` object\n * - `Function` to be executed when the step is built. It must return one of the three options above.\n * ```\n * @param {string} options.title The step's title. It becomes an `h3` at the top of the step.\n * @param {Object} options.when You can define `show`, `hide`, etc events inside `when`. For example:\n * ```js\n * when: {\n * show: function() {\n * window.scrollTo(0, 0);\n * }\n * }\n * ```\n * @return {Step} The newly created Step instance\n */\n constructor(tour, options) {\n super(tour, options);\n this.tour = tour;\n bindMethods.call(this, [\n '_show',\n 'cancel',\n 'complete',\n 'destroy',\n 'hide',\n 'isOpen',\n 'scrollTo',\n 'setupElements',\n 'show'\n ]);\n this.setOptions(options);\n this.bindAdvance = bindAdvance.bind(this);\n this.bindButtonEvents = bindButtonEvents.bind(this);\n this.bindCancelLink = bindCancelLink.bind(this);\n this.setupTooltip = setupTooltip.bind(this);\n this.parseAttachTo = parseAttachTo.bind(this);\n\n return this;\n }\n\n /**\n * Adds buttons to the step as passed into options\n *\n * @private\n * @param {HTMLElement} content The element for the step, to append the footer with buttons to\n */\n _addButtons(content) {\n if (!isEmpty(this.options.buttons)) {\n const footer = document.createElement('footer');\n const buttons = createFromHTML('<ul class=\"shepherd-buttons\"></ul>');\n\n footer.classList.add('shepherd-footer');\n\n this.options.buttons.map((cfg) => {\n const button = createFromHTML(`<li><a class=\"shepherd-button ${cfg.classes || ''}\">${cfg.text}</a>`);\n buttons.appendChild(button);\n this.bindButtonEvents(cfg, button.querySelector('a'));\n });\n\n footer.appendChild(buttons);\n content.appendChild(footer);\n }\n }\n\n /**\n * Adds the \"x\" button to cancel the tour\n * @param {HTMLElement} element The step element\n * @param {HTMLElement} header The header element for the step\n * @private\n */\n _addCancelLink(element, header) {\n if (this.options.showCancelLink) {\n const link = createFromHTML('<a href class=\"shepherd-cancel-link\"></a>');\n header.appendChild(link);\n\n element.classList.add('shepherd-has-cancel-link');\n this.bindCancelLink(link);\n }\n }\n\n /**\n * Adds text passed in as options\n *\n * @private\n * @param {HTMLElement} content The content to append the text to\n */\n _addContent(content) {\n const text = createFromHTML('<div class=\"shepherd-text\"></div>');\n let paragraphs = this.options.text;\n\n if (isFunction(paragraphs)) {\n paragraphs = paragraphs.call(this, text);\n }\n\n if (paragraphs instanceof HTMLElement) {\n text.appendChild(paragraphs);\n } else {\n if (isString(paragraphs)) {\n paragraphs = [paragraphs];\n }\n\n paragraphs.map((paragraph) => {\n text.innerHTML += `<p>${paragraph}</p>`;\n });\n }\n\n content.appendChild(text);\n }\n\n /**\n * Creates Shepherd element for step based on options\n *\n * @private\n * @return {HTMLElement} The DOM element for the step tooltip\n */\n _createTooltipContent() {\n const content = document.createElement('div');\n const classes = this.options.classes || '';\n const element = createFromHTML(`<div class=\"${classes}\" data-shepherd-step-id=\"${this.id}\">`);\n const header = document.createElement('header');\n\n if (this.options.title) {\n const title = document.createElement('h3');\n title.classList.add('shepherd-title');\n title.innerHTML = `${this.options.title}`;\n header.appendChild(title);\n element.classList.add('shepherd-has-title');\n }\n\n content.classList.add('shepherd-content');\n header.classList.add('shepherd-header');\n element.appendChild(content);\n content.appendChild(header);\n\n if (!isUndefined(this.options.text)) {\n this._addContent(content);\n }\n\n this._addButtons(content);\n this._addCancelLink(element, header);\n\n return element;\n }\n\n /**\n * Returns the tour for the step\n * @return {Tour} The tour instance\n */\n getTour() {\n return this.tour;\n }\n\n /**\n * Cancel the tour\n * Triggers the `cancel` event\n */\n cancel() {\n this.tour.cancel();\n this.trigger('cancel');\n }\n\n /**\n * Complete the tour\n * Triggers the `complete` event\n */\n complete() {\n this.tour.complete();\n this.trigger('complete');\n }\n\n /**\n * Remove the step, delete the step's element, and destroy the tippy instance for the step\n * Triggers `destroy` event\n */\n destroy() {\n if (this.tooltip) {\n this.tooltip.destroy();\n this.tooltip = null;\n }\n\n if (isElement(this.el) && this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n this.el = null;\n }\n\n if (this.target) {\n this._updateStepTargetOnHide();\n }\n\n this.trigger('destroy');\n }\n\n /**\n * Hide the step and destroy the tippy instance\n */\n hide() {\n this.tour.modal.hide();\n\n this.trigger('before-hide');\n\n document.body.removeAttribute('data-shepherd-step');\n\n if (this.target) {\n this._updateStepTargetOnHide();\n }\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n\n this.trigger('hide');\n }\n\n /**\n * Check if the step is open and visible\n * @return {boolean} True if the step is open and visible\n */\n isOpen() {\n return Boolean(\n this.tooltip &&\n this.tooltip.state &&\n this.tooltip.state.isVisible\n );\n }\n\n /**\n * Create the element and set up the tippy instance\n */\n setupElements() {\n if (!isUndefined(this.el)) {\n this.destroy();\n }\n\n this.el = this._createTooltipContent();\n\n if (this.options.advanceOn) {\n this.bindAdvance();\n }\n\n this.setupTooltip();\n }\n\n /**\n * If a custom scrollToHandler is defined, call that, otherwise do the generic\n * scrollIntoView call.\n */\n scrollTo() {\n const { element } = this.parseAttachTo();\n\n if (isFunction(this.options.scrollToHandler)) {\n this.options.scrollToHandler(element);\n } else if (isElement(element)) {\n element.scrollIntoView();\n }\n }\n\n /**\n * Sets the options for the step, maps `when` to events, sets up buttons\n * @param {Object} options The options for the step\n */\n setOptions(options = {}) {\n this.options = options;\n const { when } = this.options;\n\n this.destroy();\n this.id = this.options.id || `step-${uniqueId()}`;\n\n forOwn(when, (handler, event) => {\n this.on(event, handler, this);\n });\n }\n\n /**\n * Wraps `_show` and ensures `beforeShowPromise` resolves before calling show\n * @return {*|Promise}\n */\n show() {\n if (isFunction(this.options.beforeShowPromise)) {\n const beforeShowPromise = this.options.beforeShowPromise();\n if (!isUndefined(beforeShowPromise)) {\n return beforeShowPromise.then(() => this._show());\n }\n }\n this._show();\n }\n\n /**\n * Triggers `before-show`, generates the tooltip DOM content,\n * sets up a tippy instance for the tooltip, then triggers `show`.\n * @private\n */\n _show() {\n this.tour.beforeShowStep(this);\n this.trigger('before-show');\n\n if (!this.el) {\n this.setupElements();\n }\n\n this.target.classList.add('shepherd-enabled', 'shepherd-target');\n\n document.body.setAttribute('data-shepherd-step', this.id);\n\n if (this.options.scrollTo) {\n setTimeout(() => {\n this.scrollTo();\n });\n }\n\n this.tooltip.show();\n this.trigger('show');\n }\n\n _updateStepTargetOnHide() {\n if (this.options.highlightClass) {\n this.target.classList.remove(this.options.highlightClass);\n }\n\n this.target.classList.remove('shepherd-enabled', 'shepherd-target');\n }\n}\n","export const isBrowser = typeof window !== 'undefined';\n\nconst nav = isBrowser ? navigator : {};\nconst win = isBrowser ? window : {};\n\nexport const isBrowserSupported = 'MutationObserver' in win;\nexport const isIE = /MSIE |Trident\\//.test(nav.userAgent);\nexport const isIOS = /iPhone|iPad|iPod/.test(nav.platform) && !win.MSStream;\nexport const supportsTouch = 'ontouchstart' in win;","const svgNS = 'http://www.w3.org/2000/svg';\n\nconst elementIds = {\n modalOverlay: 'shepherdModalOverlayContainer',\n modalOverlayMask: 'shepherdModalMask',\n modalOverlayMaskRect: 'shepherdModalMaskRect',\n modalOverlayMaskOpening: 'shepherdModalMaskOpening'\n};\n\nconst classNames = {\n isVisible: 'shepherd-modal-is-visible',\n modalTarget: 'shepherd-modal-target'\n};\n\n/**\n * <svg id=\"shepherdModalOverlayContainer\" xmlns=\"http://www.w3.org/2000/svg\">\n */\nfunction _createModalContainer() {\n const element = document.createElementNS(svgNS, 'svg');\n\n element.setAttributeNS(null, 'id', elementIds.modalOverlay);\n\n return element;\n}\n\n/**\n * <mask id=\"shepherdModalMask\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">\n */\nfunction _createMaskContainer() {\n const element = document.createElementNS(svgNS, 'mask');\n\n _setAttributes(element, {\n height: '100%',\n id: elementIds.modalOverlayMask,\n width: '100%',\n x: '0',\n y: '0'\n });\n\n return element;\n}\n\n/**\n * <rect id=\"modalOverlayMaskRect\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"#FFFFFF\"/>\n */\nfunction _createMaskRect() {\n const element = document.createElementNS(svgNS, 'rect');\n\n _setAttributes(element, {\n fill: '#FFFFFF',\n height: '100%',\n id: elementIds.modalOverlayMaskRect,\n width: '100%',\n x: '0',\n y: '0'\n });\n\n return element;\n}\n\n/**\n * <rect id=\"shepherdModalMaskOpening\" fill=\"#000000\"/>\n */\nfunction _createMaskOpening() {\n const element = document.createElementNS(svgNS, 'rect');\n\n _setAttributes(element, {\n fill: '#000000',\n id: elementIds.modalOverlayMaskOpening\n });\n\n return element;\n}\n\n/**\n * <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" mask=\"url(#shepherdModalMask)\"/>\n */\nfunction _createMaskConsumer() {\n const element = document.createElementNS(svgNS, 'rect');\n\n _setAttributes(element, {\n height: '100%',\n width: '100%',\n x: '0',\n y: '0'\n });\n element.setAttribute('mask', `url(#${elementIds.modalOverlayMask})`);\n\n return element;\n}\n\n/**\n * Generates an SVG with the following structure:\n * ```html\n * <svg id=\"shepherdModalOverlayContainer\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <mask id=\"shepherdModalMask\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" >\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"#FFFFFF\"/>\n <!-- This element will \"punch a hole\" through the mask by preventing it from rendering within the perimeter -->\n <rect id=\"shepherdModalMaskOpening\"/>\n </mask>\n </defs>\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" mask=\"url(#shepherdModalMask)\"/>\n </svg>\n * ```\n */\nfunction createModalOverlay() {\n const containerElement = _createModalContainer();\n const defsElement = document.createElementNS(svgNS, 'defs');\n const maskContainer = _createMaskContainer();\n const maskRect = _createMaskRect();\n const maskOpening = _createMaskOpening();\n const maskConsumer = _createMaskConsumer();\n\n maskContainer.appendChild(maskRect);\n maskContainer.appendChild(maskOpening);\n\n defsElement.appendChild(maskContainer);\n\n containerElement.appendChild(defsElement);\n containerElement.appendChild(maskConsumer);\n\n return containerElement;\n}\n\n/**\n * Uses the bounds of the element we want the opening overtop of to set the dimensions of the opening and position it\n * @param {HTMLElement} targetElement The element the opening will expose\n * @param {SVGElement} openingElement The svg mask for the opening\n */\nfunction positionModalOpening(targetElement, openingElement) {\n if (targetElement.getBoundingClientRect && openingElement instanceof SVGElement) {\n const { x, y, width, height } = targetElement.getBoundingClientRect();\n\n _setAttributes(openingElement, { x, y, width, height });\n }\n}\n\nfunction closeModalOpening(openingElement) {\n if (openingElement && openingElement instanceof SVGElement) {\n _setAttributes(openingElement, {\n height: '0',\n x: '0',\n y: '0',\n width: '0'\n });\n }\n}\n\nfunction getModalMaskOpening(modalElement) {\n return modalElement.querySelector(`#${elementIds.modalOverlayMaskOpening}`);\n}\n\nfunction preventModalBodyTouch(event) {\n event.preventDefault();\n}\n\nfunction preventModalOverlayTouch(event) {\n event.stopPropagation();\n}\n\n/**\n * Remove any leftover modal target classes and add the modal target class to the currentElement\n * @param {HTMLElement} currentElement The element for the current step\n */\nfunction toggleShepherdModalClass(currentElement) {\n const shepherdModal = document.querySelector(`${classNames.modalTarget}`);\n\n if (shepherdModal) {\n shepherdModal.classList.remove(classNames.modalTarget);\n }\n\n currentElement.classList.add(classNames.modalTarget);\n}\n\n/**\n * Set multiple attributes on an element, via a hash\n * @param {HTMLElement|SVGElement} el The element to set the attributes on\n * @param {Object} attrs A hash of key value pairs for attributes to set\n * @private\n */\nfunction _setAttributes(el, attrs) {\n Object.keys(attrs).forEach((key) => {\n el.setAttribute(key, attrs[key]);\n });\n}\n\nexport {\n createModalOverlay,\n positionModalOpening,\n preventModalBodyTouch,\n preventModalOverlayTouch,\n closeModalOpening,\n getModalMaskOpening,\n elementIds,\n classNames,\n toggleShepherdModalClass\n};\n","import { elementIds } from './modal';\nimport { preventModalBodyTouch, preventModalOverlayTouch } from './modal';\n\n/**\n * Helper method to check if element is hidden, since we cannot use :visible without jQuery\n * @param {HTMLElement} element The element to check for visibility\n * @returns {boolean} true if element is hidden\n * @private\n */\nfunction elementIsHidden(element) {\n return element.offsetWidth === 0 && element.offsetHeight === 0;\n}\n\n/**\n * Get the element from an option object\n *\n * @method getElementFromObject\n * @param Object attachTo\n * @returns {Element}\n * @private\n */\nfunction getElementFromObject(attachTo) {\n const op = attachTo.element;\n\n if (op instanceof HTMLElement) {\n return op;\n }\n\n return document.querySelector(op);\n}\n\n/**\n * Return the element for a step\n *\n * @method getElementForStep\n * @param step step the step to get an element for\n * @returns {Element} the element for this step\n * @private\n */\nfunction getElementForStep(step) {\n const { options: { attachTo } } = step;\n\n if (!attachTo) {\n return null;\n }\n\n const type = typeof attachTo;\n\n let element;\n\n if (type === 'string') {\n element = getElementFromString(attachTo);\n } else if (type === 'object') {\n element = getElementFromObject(attachTo);\n } else {\n /* istanbul ignore next: cannot test undefined attachTo, but it does work! */\n element = null;\n }\n return element;\n}\n\n/**\n * Get the element from an option string\n *\n * @method getElementFromString\n * @param element the string in the step configuration\n * @returns {Element} the element from the string\n * @private\n */\nfunction getElementFromString(element) {\n const [selector] = element.split(' ');\n\n return document.querySelector(selector);\n}\n\nfunction addStepEventListeners() {\n if (typeof this._onScreenChange === 'function') {\n window.removeEventListener('resize', this._onScreenChange, false);\n window.removeEventListener('scroll', this._onScreenChange, true);\n }\n\n window.addEventListener('resize', this._onScreenChange, false);\n window.addEventListener('scroll', this._onScreenChange, true);\n\n const overlay = document.querySelector(`#${elementIds.modalOverlay}`);\n // Prevents window from moving on touch.\n window.addEventListener('touchmove', preventModalBodyTouch, { passive: false });\n\n // Allows content to move on touch.\n if (overlay) {\n overlay.addEventListener('touchmove', preventModalOverlayTouch, false);\n }\n}\n\nexport {\n addStepEventListeners,\n elementIsHidden,\n getElementForStep\n};\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import baseDelay from './_baseDelay.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\nvar defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n});\n\nexport default defer;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\nfunction baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n}\n\nexport default baseDelay;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","import {\n getModalMaskOpening,\n createModalOverlay,\n positionModalOpening,\n closeModalOpening,\n classNames as modalClassNames\n} from './utils/modal';\nimport { addStepEventListeners, getElementForStep } from './utils/dom';\nimport debounce from 'lodash-es/debounce';\nimport defer from 'lodash-es/defer';\n\nexport class Modal {\n constructor(options) {\n if (!this._modalOverlayElem) {\n this._modalOverlayElem = createModalOverlay();\n this._modalOverlayOpening = getModalMaskOpening(this._modalOverlayElem);\n\n // don't show yet -- each step will control that\n this.hide();\n\n document.body.appendChild(this._modalOverlayElem);\n }\n\n this.options = options;\n\n return this;\n }\n\n /**\n * Removes svg mask from modal overlay and removes classes for modal being visible\n */\n cleanup() {\n defer(() => {\n const element = this._modalOverlayElem;\n\n if (element && element instanceof SVGElement) {\n element.parentNode.removeChild(element);\n }\n\n this._modalOverlayElem = null;\n document.body.classList.remove(modalClassNames.isVisible);\n });\n }\n\n /**\n * Hide the modal overlay\n */\n hide() {\n document.body.classList.remove(modalClassNames.isVisible);\n\n if (this._modalOverlayElem) {\n this._modalOverlayElem.style.display = 'none';\n }\n }\n\n /**\n * If modal is enabled, setup the svg mask opening and modal overlay for the step\n * @param step\n */\n setupForStep(step) {\n if (this.options.useModalOverlay) {\n this._styleForStep(step);\n this.show();\n\n } else {\n this.hide();\n }\n }\n\n /**\n * Show the modal overlay\n */\n show() {\n document.body.classList.add(modalClassNames.isVisible);\n\n if (this._modalOverlayElem) {\n this._modalOverlayElem.style.display = 'block';\n }\n }\n\n /**\n * Style the modal for the step\n * @param {Step} step The step to style the opening for\n * @private\n */\n _styleForStep(step) {\n const modalOverlayOpening = this._modalOverlayOpening;\n const targetElement = getElementForStep(step);\n\n if (targetElement) {\n positionModalOpening(targetElement, modalOverlayOpening);\n\n this._onScreenChange = debounce(\n positionModalOpening.bind(this, targetElement, modalOverlayOpening),\n 0,\n { leading: false, trailing: true } // see https://lodash.com/docs/#debounce\n );\n\n addStepEventListeners.call(this);\n\n } else {\n closeModalOpening(this._modalOverlayOpening);\n }\n }\n}","export const defaults = {\n trigger: 'manual',\n arrow: true,\n arrowTransform: 'scale(2)',\n animation: 'fade',\n duration: 420,\n flip: true,\n animateFill: false, // https://atomiks.github.io/tippyjs/#animate-fill-option\n interactive: true, // https://atomiks.github.io/tippyjs/#interactive-option\n hideOnClick: 'toggle', // https://atomiks.github.io/tippyjs/#hide-on-click-option\n multiple: true // https://atomiks.github.io/tippyjs/#multiple-option\n};\n","import { injectCSS } from './css';\nimport isEmpty from 'lodash-es/isEmpty';\nimport isFunction from 'lodash-es/isFunction';\nimport isNumber from 'lodash-es/isNumber';\nimport isString from 'lodash-es/isString';\nimport isUndefined from 'lodash-es/isUndefined';\nimport { Evented } from './evented.js';\nimport { Modal } from './modal.js';\nimport { Step } from './step.js';\nimport { bindMethods } from './bind.js';\nimport tippy from 'tippy.js';\nimport tippyStyles from 'tippy.js/dist/tippy.css';\nimport { defaults as tooltipDefaults } from './utils/tooltip-defaults';\n\nimport {\n cleanupSteps,\n cleanupStepEventListeners\n} from './utils/cleanup';\n\nimport {\n addStepEventListeners,\n getElementForStep\n} from './utils/dom';\n\nimport {\n toggleShepherdModalClass\n} from './utils/modal';\n\n/**\n * Creates incremented ID for each newly created tour\n *\n * @private\n * @return {Number} The unique id for the tour\n */\nconst uniqueId = (function() {\n let id = 0;\n return function() {\n return ++id;\n };\n})();\n\nconst Shepherd = new Evented();\n\n/**\n * Class representing the site tour\n * @extends {Evented}\n */\nexport class Tour extends Evented {\n /**\n * @param {Object} options The options for the tour\n * @param {Object} options.defaultStepOptions Default options for Steps created through `addStep`\n * @param {Step[]} options.steps An array of Step instances to initialize the tour with\n * @param {string} options.tourName An optional \"name\" for the tour. This will be appended to the the tour's\n * dynamically generated `id` property -- which is also set on the `body` element as the `data-shepherd-active-tour` attribute\n * whenever the tour becomes active.\n * @param {boolean} options.useModalOverlay Whether or not steps should be placed above a darkened\n * modal overlay. If true, the overlay will create an opening around the target element so that it\n * can remain interactive\n * @returns {Tour}\n */\n constructor(options = {}) {\n super(options);\n bindMethods.call(this, [\n 'back',\n 'cancel',\n 'complete',\n 'next'\n ]);\n this.options = options;\n this.steps = this.options.steps || [];\n\n // Pass these events onto the global Shepherd object\n const events = ['active', 'cancel', 'complete', 'inactive', 'show', 'start'];\n events.map((event) => {\n ((e) => {\n this.on(e, (opts) => {\n opts = opts || {};\n opts.tour = this;\n Shepherd.trigger(e, opts);\n });\n })(event);\n });\n\n this.modal = new Modal(options);\n\n this._setTooltipDefaults();\n this._setTourID();\n\n injectCSS(tippyStyles);\n\n return this;\n }\n\n /**\n * Adds a new step to the tour\n * @param {Object|Number|Step|String} arg1\n * When arg2 is defined, arg1 can either be a string or number, to use for the `id` for the step\n * When arg2 is undefined, arg1 is either an object containing step options or a Step instance\n * @param {Object|Step} arg2 An object containing step options or a Step instance\n * @return {Step} The newly added step\n */\n addStep(arg1, arg2) {\n let name, step;\n\n // If we just have one argument, we can assume it is an object of step options, with an id\n if (isUndefined(arg2)) {\n step = arg1;\n } else {\n name = arg1;\n step = arg2;\n }\n\n if (!(step instanceof Step)) {\n step = this.setupStep(step, name);\n } else {\n step.tour = this;\n }\n\n this.steps.push(step);\n return step;\n }\n\n /**\n * Go to the previous step in the tour\n */\n back() {\n const index = this.steps.indexOf(this.currentStep);\n this.show(index - 1, false);\n }\n\n /**\n * Calls done() triggering the 'cancel' event\n * If `confirmCancel` is true, will show a window.confirm before cancelling\n */\n cancel() {\n if (this.options.confirmCancel) {\n const cancelMessage = this.options.confirmCancelMessage || 'Are you sure you want to stop the tour?';\n const stopTour = window.confirm(cancelMessage);\n if (stopTour) {\n this.done('cancel');\n }\n } else {\n this.done('cancel');\n }\n }\n\n /**\n * Calls done() triggering the `complete` event\n */\n complete() {\n this.done('complete');\n }\n\n /**\n * Called whenever the tour is cancelled or completed, basically anytime we exit the tour\n * @param {String} event The event name to trigger\n */\n done(event) {\n if (!isEmpty(this.steps)) {\n this.steps.forEach((step) => step.destroy());\n }\n\n cleanupStepEventListeners.call(this);\n cleanupSteps(this.tourObject);\n this.modal.cleanup();\n\n this.trigger(event);\n\n Shepherd.activeTour = null;\n this._removeBodyAttrs();\n this.trigger('inactive', { tour: this });\n }\n\n /**\n * Gets the step from a given id\n * @param {Number|String} id The id of the step to retrieve\n * @return {Step} The step corresponding to the `id`\n */\n getById(id) {\n return this.steps.find((step) => {\n return step.id === id;\n });\n }\n\n /**\n * Gets the current step\n * @returns {Step|null}\n */\n getCurrentStep() {\n return this.currentStep;\n }\n\n /**\n * Hide the current step\n */\n hide() {\n const currentStep = this.getCurrentStep();\n\n if (currentStep) {\n return currentStep.hide();\n }\n }\n\n isActive() {\n return Shepherd.activeTour === this;\n }\n\n /**\n * Go to the next step in the tour\n * If we are at the end, call `complete`\n */\n next() {\n const index = this.steps.indexOf(this.currentStep);\n\n if (index === this.steps.length - 1) {\n this.complete();\n } else {\n this.show(index + 1, true);\n }\n }\n\n /**\n * Removes the step from the tour\n * @param {String} name The id for the step to remove\n */\n removeStep(name) {\n const current = this.getCurrentStep();\n\n // Find the step, destroy it and remove it from this.steps\n this.steps.some((step, i) => {\n if (step.id === name) {\n if (step.isOpen()) {\n step.hide();\n }\n\n step.destroy();\n this.steps.splice(i, 1);\n\n return true;\n }\n });\n\n if (current && current.id === name) {\n this.currentStep = undefined;\n\n // If we have steps left, show the first one, otherwise just cancel the tour\n this.steps.length ? this.show(0) : this.cancel();\n }\n }\n\n /**\n * Setup a new step object\n * @param {Object} stepOptions The object describing the options for the step\n * @param {String|Number} name The string or number to use as the `id` for the step\n * @return {Step} The step instance\n */\n setupStep(stepOptions, name) {\n if (isString(name) || isNumber(name)) {\n stepOptions.id = name.toString();\n }\n\n stepOptions = Object.assign({}, this.options.defaultStepOptions, stepOptions);\n\n return new Step(this, stepOptions);\n }\n\n beforeShowStep(step) {\n this.modal.setupForStep(step);\n this._styleTargetElementForStep(step);\n }\n\n /**\n * Show a specific step in the tour\n * @param {Number|String} key The key to look up the step by\n * @param {Boolean} forward True if we are going forward, false if backward\n */\n show(key = 0, forward = true) {\n const step = isString(key) ? this.getById(key) : this.steps[key];\n\n if (step) {\n this._updateStateBeforeShow();\n\n const shouldSkipStep = isFunction(step.options.showOn) && !step.options.showOn();\n\n // If `showOn` returns false, we want to skip the step, otherwise, show the step like normal\n if (shouldSkipStep) {\n this._skipStep(step, forward);\n } else {\n this.trigger('show', {\n step,\n previous: this.currentStep\n });\n\n this.currentStep = step;\n step.show();\n }\n }\n }\n\n /**\n * Start the tour\n */\n start() {\n this.trigger('start');\n\n this.currentStep = null;\n this._setupActiveTour();\n addStepEventListeners.call(this);\n this.next();\n }\n\n /**\n * Make this tour \"active\"\n * @private\n */\n _setupActiveTour() {\n this._addBodyAttrs();\n this.trigger('active', { tour: this });\n\n Shepherd.activeTour = this;\n }\n\n /**\n * Modulates the styles of the passed step's target element, based on the step's options and\n * the tour's `modal` option, to visually emphasize the element\n *\n * @param step The step object that attaches to the element\n * @private\n */\n _styleTargetElementForStep(step) {\n const targetElement = getElementForStep(step);\n\n if (!targetElement) {\n return;\n }\n\n toggleShepherdModalClass(targetElement);\n\n if (step.options.highlightClass) {\n targetElement.classList.add(step.options.highlightClass);\n }\n\n if (step.options.canClickTarget === false) {\n targetElement.style.pointerEvents = 'none';\n }\n }\n\n /**\n * Called when `showOn` evaluates to false, to skip the step\n * @param {Step} step The step to skip\n * @param {Boolean} forward True if we are going forward, false if backward\n * @private\n */\n _skipStep(step, forward) {\n const index = this.steps.indexOf(step);\n const nextIndex = forward ? index + 1 : index - 1;\n this.show(nextIndex, forward);\n }\n\n _setTooltipDefaults() {\n tippy.setDefaults(tooltipDefaults);\n }\n\n _updateStateBeforeShow() {\n if (this.currentStep) {\n this.currentStep.hide();\n }\n\n if (!this.isActive()) {\n this._setupActiveTour();\n }\n }\n\n _setTourID() {\n const tourName = this.options.tourName || 'tour';\n const uuid = uniqueId();\n\n this.id = `${tourName}--${uuid}`;\n }\n\n _addBodyAttrs() {\n document.body.setAttribute('data-shepherd-active-tour', this.id);\n document.body.classList.add('shepherd-active');\n }\n\n _removeBodyAttrs() {\n document.body.removeAttribute('data-shepherd-active-tour');\n document.body.classList.remove('shepherd-active');\n }\n\n}\n\nexport { Shepherd };\n","import '../scss/shepherd-theme-dark.scss';\nimport '../scss/shepherd-theme-default.scss';\nimport '../scss/shepherd-theme-square.scss';\nimport '../scss/shepherd-theme-square-dark.scss';\n\nimport { Evented } from './evented.js';\nimport { Step } from './step.js';\nimport { Shepherd, Tour } from './tour.js';\n\nObject.assign(Shepherd, { Tour, Step, Evented });\n\nexport default Shepherd;\n","import { isBrowserSupported } from './browser';\n\n/**\n * Injects a string of CSS styles to a style node in <head>\n * @param {String} css\n */\nexport function injectCSS(css) {\n if (isBrowserSupported) {\n const style = document.createElement('style');\n style.type = 'text/css';\n style.textContent = css;\n document.head.insertBefore(style, document.head.firstChild);\n }\n}","import { preventModalBodyTouch } from './modal';\nimport { getElementForStep } from './dom';\n\n/**\n * Cleanup the steps and set pointerEvents back to 'auto'\n * @param tour The tour object\n */\nexport function cleanupSteps(tour) {\n if (tour) {\n const { steps } = tour;\n\n steps.forEach((step) => {\n if (step.options && step.options.canClickTarget === false && step.options.attachTo) {\n const stepElement = getElementForStep(step);\n\n if (stepElement instanceof HTMLElement) {\n stepElement.style.pointerEvents = 'auto';\n }\n }\n });\n }\n}\n\n/**\n * Remove resize and scroll event listeners\n */\nexport function cleanupStepEventListeners() {\n if (typeof this._onScreenChange === 'function') {\n window.removeEventListener('resize', this._onScreenChange, false);\n window.removeEventListener('scroll', this._onScreenChange, false);\n\n this._onScreenChange = null;\n }\n window.removeEventListener('touchmove', preventModalBodyTouch, {\n passive: false\n });\n}\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nexport default isNumber;\n"],"names":["isObject","value","type","freeGlobal","global","Object","freeSelf","self","root","Function","Symbol","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","nullTag","undefinedTag","baseGetTag","isOwn","call","tag","unmasked","e","result","getRawTag","isObjectLike","symbolTag","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","toNumber","other","valueOf","replace","isBinary","test","slice","INFINITY","MAX_INTEGER","toInteger","remainder","drop","array","n","guard","length","start","end","index","Array","baseSlice","isUndefined","Evented","event","handler","ctx","once","arguments","this","bindings","push","on","forEach","binding","_this","splice","args","context","_this2","apply","fromRight","baseFor","object","iteratee","keysFunc","iterable","props","key","baseIsArguments","propertyIsEnumerable","isArguments","isArray","freeExports","exports","nodeType","freeModule","module","Buffer","isBuffer","MAX_SAFE_INTEGER","reIsUint","isLength","typedArrayTags","func","freeProcess","process","nodeUtil","types","require","nodeIsTypedArray","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseTimes","String","isPrototype","Ctor","constructor","overArg","transform","arg","nativeKeys","keys","baseKeys","asyncTag","funcTag","genTag","proxyTag","isFunction","isArrayLike","identity","forOwn","getPrototype","getPrototypeOf","objectTag","funcProto","funcToString","objectCtorString","isElement","proto","isPlainObject","uid","coreJsData","maskSrcKey","exec","IE_PROTO","toSource","reIsHostCtor","reIsNative","RegExp","baseIsNative","getNative","DataView","Map","Promise","Set","WeakMap","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","ctorString","isEmpty","size","stringTag","isString","Element","matches","matchesSelector","msMatchesSelector","webkitMatchesSelector","defineProperty","assignValue","objValue","configurable","enumerable","writable","isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","navigator","userAgent","indexOf","debounce","fn","called","then","scheduled","setTimeout","functionToCheck","getStyleComputedProperty","element","property","css","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","element1root","getScroll","upperSide","html","scrollingElement","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","Math","max","getWindowSizes","height","width","createClass","defineProperties","target","descriptor","Constructor","protoProps","staticProps","obj","_extends","assign","source","getClientRect","offsets","right","left","bottom","top","getBoundingClientRect","rect","scrollTop","scrollLeft","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","reference","padding","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","isFixed","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","map","area","_ref","sort","a","b","filteredAreas","filter","_ref2","computedPlacement","variation","split","getReferenceOffsets","state","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","runModifiers","modifiers","data","ends","prop","findIndex","cur","match","console","warn","enabled","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","getWindow","setupEventListeners","options","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","callback","scrollParents","isBody","eventsEnabled","disableEventListeners","cancelAnimationFrame","scheduleUpdate","removeEventListener","isNumeric","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","concat","reverse","BEHAVIORS","parseOffset","offset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","positionFixed","removeOnDestroy","onCreate","onUpdate","shift","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","preventOverflow","instance","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","_data$offsets$arrow","arrowElement","querySelector","len","sideCapitalized","toLowerCase","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","flip","flipped","originalPlacement","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","inner","subtractLength","hide","bound","attributes","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","shouldRound","isVariation","sameWidthOddness","bothOddWidth","noRound","horizontalToInteger","verticalToInteger","offsetParentRect","position","devicePixelRatio","v","prefixedProperty","willChange","invertTop","invertLeft","x-placement","arrowStyles","applyStyle","setAttribute","removeAttribute","onLoad","modifierOptions","Popper","TypeError","classCallCheck","requestAnimationFrame","update","bind","isDestroyed","isCreated","jquery","enableEventListeners","removeChild","Utils","PopperUtils","nav","win","isIOS","platform","MSStream","supportsTouch","a11y","allowHTML","animateFill","animation","appendTo","aria","arrowTransform","arrowType","autoFocus","boundary","content","delay","distance","duration","flipBehavior","followCursor","hideOnClick","inertia","interactive","interactiveBorder","interactiveDebounce","lazy","livePlacement","maxWidth","multiple","onHidden","onHide","onMount","onShow","onShown","performance","popperOptions","shouldPopperHideOnBlur","showOnInit","sticky","theme","touch","touchHold","trigger","updateDuration","wait","zIndex","POPPER_INSTANCE_RELATED_PROPS","Selectors","POPPER","TOOLTIP","CONTENT","BACKDROP","ARROW","ROUND_ARROW","elementProto","mozMatchesSelector","arrayFrom","closest","parentSelector","selector","closestCallback","PASSIVE","div","createElement","setInnerHTML","setContent","contentEl","appendChild","getChildren","tooltip","backdrop","addInertia","createArrowElement","className","createBackdropElement","addInteractive","applyTransitionDuration","els","transitionDuration","toggleTransitionEndListener","action","listener","getPopperPlacement","fullPlacement","getAttribute","setVisibilityState","hideAllPoppers","tippyInstanceToExclude","querySelectorAll","tip","_tippy","isCursorOutsideInteractiveBorder","popperPlacement","clientX","clientY","exceedsTop","exceedsBottom","exceedsLeft","exceedsRight","getOffsetDistanceInPx","defaultDistance","getValue","defaultValue","focus","scrollX","pageXOffset","scrollY","pageYOffset","scroll","ms","timeoutId","_arguments","clearTimeout","getModifier","includes","isUsingTouch","onDocumentTouch","classList","add","onDocumentMouseMove","lastMouseMoveTime","now","remove","onDocumentClick","isClickTrigger","clearDelayTimeouts","onWindowBlur","activeElement","blur","onWindowResize","tippyInstance","popperInstance","getDataAttributeOptions","acc","valueAsString","JSON","parse","Number","evaluateProps","out","validateOptions","defaults$$1","option","Error","TRANSFORM_NUMBER_RE","translate","scale","transformAxisBasedOnPlacement","X","Y","transformNumbersBasedOnPlacement","numbers","isReverse","getTransformAxis","cssFunction","getTransformNumbers","regex","computeArrowTransform","matches$$1","computedTransform","idCounter","createTippy","collectionProps","popperMutationObserver","lastTriggerEvent","lastMouseMoveEvent","showTimeoutId","hideTimeoutId","isPreparingToShow","transitionEndListener","listeners","referenceJustProgrammaticallyFocused","debouncedOnMouseMove","onMouseMove","id","t","relatedTarget","createPopperElement","isVisible","prepareShow","prepareHide","popperChildren","isEnabled","isMounted","isShown","set","set$$1","show","enable","disable","destroy","addTriggersToReference","onReferenceClick","createPopperInstance","hasAttribute","positionVirtualReferenceNearCursor","_lastMouseMoveEvent","isVerticalPlacement","isHorizontalPlacement","isHorizontal","removeFollowCursorListener","targetEl","hasFollowCursorBehavior","cleanupOldMouseListeners","onTrigger","isEventListenerStopped","referenceTheCursorIsOver","isCursorOverPopper","isCursorOverReference","onMouseLeave","onBlur","onDelegateShow","onDelegateHide","isTouchEvent","caseA","caseB","_tip$popperChildren","mount","MutationObserver","observe","childList","subtree","characterData","margin","onTransitionEnd","eventType","removeTriggersFromReference","prevProps","nextProps","_getChildren","replaceChild","isVirtual","visibility","transitionDelay","updatePosition","destroyTargetInstances","child","disconnect","globalEventListenersBound","tippy$1","targets","one","maxTouchPoints","msMaxTouchPoints","virtualReference","polyfills","classNames","polyfillElementPrototypeProperties","references","NodeList","getArrayOfElements","firstReference","instances","collection","destroyAll","defaults","setDefaults","partialDefaults","disableAnimations","useCapture","missingTippy","centeredStylePopperModifier","defaultPopperOptions","createFromHTML","innerHTML","parseShorthand","values","assignFunc","valsLength","baseZipObject","setupTooltip","tippy","attachToOpts","parseAttachTo","attachToOptions","tippyOptions","finalPopperOptions","resultingTippyOptions","opts","_parseAttachToOpts","attachTo","returnOpts","error","bindAdvance","advanceOn","isOpen","targetIsEl","tour","next","bindMethods","methods","method","_this4","uniqueId","Step","setOptions","bindButtonEvents","cfg","events","click","page","dataset","buttonEvent","bindCancelLink","link","preventDefault","_this3","cancel","buttons","footer","button","classes","text","header","showCancelLink","paragraphs","HTMLElement","paragraph","title","_addContent","_addButtons","_addCancelLink","complete","_updateStepTargetOnHide","modal","Boolean","_createTooltipContent","scrollToHandler","scrollIntoView","when","beforeShowPromise","_show","beforeShowStep","setupElements","scrollTo","_this5","highlightClass","isBrowserSupported","svgNS","elementIds","modalOverlay","modalOverlayMask","modalOverlayMaskRect","modalOverlayMaskOpening","createModalOverlay","containerElement","createElementNS","setAttributeNS","defsElement","maskContainer","_setAttributes","maskRect","fill","maskOpening","maskConsumer","positionModalOpening","targetElement","openingElement","SVGElement","preventModalBodyTouch","preventModalOverlayTouch","stopPropagation","attrs","getElementForStep","addStepEventListeners","_onScreenChange","overlay","Date","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","timeWaiting","trailingEdge","debounced","isInvoking","flush","count","lastCalled","baseSetToString","string","nativeNow","defer","stamp","remaining","baseDelay","otherArgs","Modal","_modalOverlayElem","_modalOverlayOpening","modalClassNames","display","useModalOverlay","_styleForStep","modalOverlayOpening","Shepherd","Tour","steps","_setTooltipDefaults","_setTourID","textContent","head","insertBefore","firstChild","injectCSS","arg1","arg2","setupStep","currentStep","confirmCancel","cancelMessage","confirmCancelMessage","confirm","done","tourObject","canClickTarget","stepElement","pointerEvents","cleanup","activeTour","_removeBodyAttrs","getCurrentStep","current","stepOptions","defaultStepOptions","setupForStep","_styleTargetElementForStep","forward","getById","_updateStateBeforeShow","showOn","_skipStep","previous","_setupActiveTour","_addBodyAttrs","currentElement","shepherdModal","nextIndex","tooltipDefaults","isActive","tourName","uuid"],"mappings":"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"}