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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shepherd.esm.js","sources":["../../node_modules/lodash-es/_baseSlice.js","../../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/isUndefined.js","../../src/js/evented.js","../../node_modules/lodash-es/_createBaseFor.js","../../node_modules/lodash-es/_baseFor.js","../../node_modules/lodash-es/_baseTimes.js","../../node_modules/lodash-es/_baseIsArguments.js","../../node_modules/lodash-es/isArguments.js","../../node_modules/lodash-es/isArray.js","../../node_modules/lodash-es/stubFalse.js","../../node_modules/lodash-es/isBuffer.js","../../node_modules/lodash-es/_isIndex.js","../../node_modules/lodash-es/isLength.js","../../node_modules/lodash-es/_baseIsTypedArray.js","../../node_modules/lodash-es/_baseUnary.js","../../node_modules/lodash-es/_nodeUtil.js","../../node_modules/lodash-es/isTypedArray.js","../../node_modules/lodash-es/_arrayLikeKeys.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/_baseForOwn.js","../../node_modules/lodash-es/identity.js","../../node_modules/lodash-es/_castFunction.js","../../node_modules/lodash-es/forOwn.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/_getValue.js","../../node_modules/lodash-es/_getNative.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/_baseAssignValue.js","../../node_modules/lodash-es/eq.js","../../node_modules/lodash-es/_assignValue.js","../../node_modules/lodash-es/_baseZipObject.js","../../node_modules/lodash-es/zipObject.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","../../src/js/bind.js","../../src/js/step.js","../../src/js/browser.js","../../src/js/css.js","../../node_modules/lodash-es/isNumber.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/_baseDelay.js","../../node_modules/lodash-es/_apply.js","../../node_modules/lodash-es/_overRest.js","../../node_modules/lodash-es/constant.js","../../node_modules/lodash-es/_baseSetToString.js","../../node_modules/lodash-es/_shortOut.js","../../node_modules/lodash-es/_setToString.js","../../node_modules/lodash-es/_baseRest.js","../../node_modules/lodash-es/defer.js","../../src/js/modal.js","../../src/js/utils/tooltip-defaults.js","../../src/js/utils/cleanup.js","../../src/js/tour.js","../../src/js/shepherd.js"],"sourcesContent":["/**\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 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 * 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","/**\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 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 * 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","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","/**\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","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","/** 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","/**\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 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","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","/** 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","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","/**\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 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 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 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","/**\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 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","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 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","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","/**\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","/**!\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","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;","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 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","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","/** 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 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","/**\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 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","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","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 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 {\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 { 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 { 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"],"names":["Symbol","objectProto","nativeObjectToString","symToStringTag","Evented","event","handler","ctx","once","arguments","length","undefined","isUndefined","bindings","push","on","forEach","binding","index","splice","args","drop","context","apply","hasOwnProperty","MAX_SAFE_INTEGER","argsTag","freeExports","freeModule","moduleExports","funcTag","objectTag","funcProto","funcToString","Map","Promise","mapTag","setTag","weakMapTag","dataViewTag","getTag","stringTag","isFunction","defineProperty","_extends","isBrowser","isIE","Defaults","isPlainObject","isNumeric","getValue","debounce","keys","missingTippy","centeredStylePopperModifier","computeStyle","enabled","fn","data","styles","left","top","transform","defaultPopperOptions","positionFixed","createFromHTML","html","el","document","createElement","innerHTML","children","_parseAttachToOpts","opts","isObjectLike","positionRe","matches","exec","element","parseShorthand","obj","props","values","split","zipObject","setupTooltip","tippy","Error","tooltip","destroy","attachToOpts","parseAttachTo","_makeTippyInstance","call","target","body","classList","add","options","attachTo","returnOpts","isString","querySelector","e","console","error","attachToOptions","_makeCenteredTippy","tippyOptions","_makeAttachedTippyOptions","one","resultingTippyOptions","content","placement","popperOptions","arrow","finalPopperOptions","modifiers","_setupAdvanceOnHandler","selector","isOpen","targetIsEl","targetIsSelector","tour","next","bindAdvance","advanceOn","addEventListener","removeEventListener","bindButtonEvents","cfg","events","action","click","forOwn","page","show","dataset","buttonEvent","removeAttribute","bindCancelLink","link","preventDefault","cancel","bindMethods","methods","map","method","bind","uniqueId","id","Step","setOptions","isEmpty","buttons","footer","button","classes","text","appendChild","header","showCancelLink","paragraphs","HTMLElement","paragraph","title","_addContent","_addButtons","_addCancelLink","trigger","complete","isElement","parentNode","removeChild","_updateStepTargetOnHide","modal","hide","Boolean","state","isVisible","_createTooltipContent","scrollToHandler","scrollIntoView","when","beforeShowPromise","then","_show","beforeShowStep","setupElements","setAttribute","scrollTo","setTimeout","highlightClass","remove","window","nav","navigator","win","isBrowserSupported","test","userAgent","isIOS","platform","MSStream","injectCSS","css","style","type","textContent","head","insertBefore","firstChild","numberTag","svgNS","elementIds","modalOverlay","modalOverlayMask","modalOverlayMaskRect","modalOverlayMaskOpening","classNames","modalTarget","_createModalContainer","createElementNS","setAttributeNS","_createMaskContainer","_setAttributes","height","width","x","y","_createMaskRect","fill","_createMaskOpening","_createMaskConsumer","createModalOverlay","containerElement","defsElement","maskContainer","maskRect","maskOpening","maskConsumer","positionModalOpening","targetElement","openingElement","getBoundingClientRect","SVGElement","closeModalOpening","getModalMaskOpening","modalElement","preventModalBodyTouch","preventModalOverlayTouch","stopPropagation","toggleShepherdModalClass","currentElement","shepherdModal","attrs","Object","key","getElementFromObject","op","getElementForStep","step","getElementFromString","addStepEventListeners","_onScreenChange","overlay","passive","FUNC_ERROR_TEXT","nativeMax","defer","Modal","_modalOverlayElem","_modalOverlayOpening","modalClassNames","display","useModalOverlay","_styleForStep","modalOverlayOpening","leading","trailing","defaults","arrowTransform","animation","duration","flip","animateFill","interactive","hideOnClick","multiple","cleanupSteps","steps","canClickTarget","stepElement","pointerEvents","cleanupStepEventListeners","Shepherd","Tour","_setTooltipDefaults","_setTourID","tippyStyles","arg1","arg2","name","setupStep","indexOf","currentStep","confirmCancel","cancelMessage","confirmCancelMessage","stopTour","confirm","done","tourObject","cleanup","activeTour","_removeBodyAttrs","find","getCurrentStep","current","some","i","stepOptions","isNumber","toString","defaultStepOptions","setupForStep","_styleTargetElementForStep","forward","getById","_updateStateBeforeShow","shouldSkipStep","showOn","_skipStep","previous","_setupActiveTour","_addBodyAttrs","nextIndex","setDefaults","tooltipDefaults","isActive","tourName","uuid"],"mappings":"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"}