2025-04-02 13:24:56 +05:30

120 lines
204 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(self, function() {
return /******/ (function() { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./libs/shepherd/shepherd.js":
/*!***********************************!*\
!*** ./libs/shepherd/shepherd.js ***!
\***********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Shepherd: function() { return /* reexport default from dynamic */ shepherd_js_dist_js_shepherd__WEBPACK_IMPORTED_MODULE_0___default.a; }\n/* harmony export */ });\n/* harmony import */ var shepherd_js_dist_js_shepherd__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! shepherd.js/dist/js/shepherd */ \"./node_modules/shepherd.js/dist/js/shepherd.js\");\n/* harmony import */ var shepherd_js_dist_js_shepherd__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(shepherd_js_dist_js_shepherd__WEBPACK_IMPORTED_MODULE_0__);\n\ntry {\n window.Shepherd = (shepherd_js_dist_js_shepherd__WEBPACK_IMPORTED_MODULE_0___default());\n} catch (e) {}\n\n\n//# sourceURL=webpack://Sneat/./libs/shepherd/shepherd.js?");
/***/ }),
/***/ "./node_modules/shepherd.js/dist/js/shepherd.js":
/*!******************************************************!*\
!*** ./node_modules/shepherd.js/dist/js/shepherd.js ***!
\******************************************************/
/***/ (function(module, exports, __webpack_require__) {
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/*! shepherd.js 11.2.0 */\n\n(function (global, factory) {\n ( false ? 0 : _typeof(exports)) === 'object' && \"object\" !== 'undefined' ? module.exports = factory() : true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (0);\n})(this, function () {\n 'use strict';\n\n var isMergeableObject = function isMergeableObject(value) {\n return isNonNullObject(value) && !isSpecial(value);\n };\n function isNonNullObject(value) {\n return !!value && _typeof(value) === 'object';\n }\n function isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n }\n\n // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\n var canUseSymbol = typeof Symbol === 'function' && Symbol.for;\n var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n function isReactElement(value) {\n return value.$$typeof === REACT_ELEMENT_TYPE;\n }\n function emptyTarget(val) {\n return Array.isArray(val) ? [] : {};\n }\n function cloneUnlessOtherwiseSpecified(value, options) {\n return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n }\n function defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function (element) {\n return cloneUnlessOtherwiseSpecified(element, options);\n });\n }\n function getMergeFunction(key, options) {\n if (!options.customMerge) {\n return deepmerge;\n }\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : deepmerge;\n }\n function getEnumerableOwnPropertySymbols(target) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return Object.propertyIsEnumerable.call(target, symbol);\n }) : [];\n }\n function getKeys(target) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n }\n function propertyIsOnObject(object, property) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n }\n\n // Protects from prototype poisoning and unexpected merging up the prototype chain.\n function propertyIsUnsafe(target, key) {\n return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n }\n function mergeObject(target, source, options) {\n var destination = {};\n if (options.isMergeableObject(target)) {\n getKeys(target).forEach(function (key) {\n destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n });\n }\n getKeys(source).forEach(function (key) {\n if (propertyIsUnsafe(target, key)) {\n return;\n }\n if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n } else {\n destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n }\n });\n return destination;\n }\n function deepmerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || isMergeableObject;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified(source, options);\n } else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n } else {\n return mergeObject(target, source, options);\n }\n }\n deepmerge.all = function deepmergeAll(array, options) {\n if (!Array.isArray(array)) {\n throw new Error('first argument should be an array');\n }\n return array.reduce(function (prev, next) {\n return deepmerge(prev, next, options);\n }, {});\n };\n var deepmerge_1 = deepmerge;\n var cjs = deepmerge_1;\n\n /**\n * Checks if `value` is classified as an `Element`.\n * @param {*} value The param to check if it is an Element\n */\n function isElement$1(value) {\n return value instanceof Element;\n }\n\n /**\n * Checks if `value` is classified as an `HTMLElement`.\n * @param {*} value The param to check if it is an HTMLElement\n */\n function isHTMLElement$1(value) {\n return value instanceof HTMLElement;\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n * @param {*} value The param to check if it is a function\n */\n function isFunction(value) {\n return typeof value === 'function';\n }\n\n /**\n * Checks if `value` is classified as a `String` object.\n * @param {*} value The param to check if it is a string\n */\n function isString(value) {\n return typeof value === 'string';\n }\n\n /**\n * Checks if `value` is undefined.\n * @param {*} value The param to check if it is undefined\n */\n function isUndefined(value) {\n return value === undefined;\n }\n var Evented = /*#__PURE__*/function () {\n function Evented() {\n _classCallCheck(this, Evented);\n }\n return _createClass(Evented, [{\n key: \"on\",\n value: function on(event, handler, ctx) {\n var once = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\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({\n handler: handler,\n ctx: ctx,\n once: once\n });\n return this;\n }\n }, {\n key: \"once\",\n value: function once(event, handler, ctx) {\n return this.on(event, handler, ctx, true);\n }\n }, {\n key: \"off\",\n value: function off(event, handler) {\n var _this = this;\n if (isUndefined(this.bindings) || isUndefined(this.bindings[event])) {\n return this;\n }\n if (isUndefined(handler)) {\n delete this.bindings[event];\n } else {\n this.bindings[event].forEach(function (binding, index) {\n if (binding.handler === handler) {\n _this.bindings[event].splice(index, 1);\n }\n });\n }\n return this;\n }\n }, {\n key: \"trigger\",\n value: function trigger(event) {\n var _this2 = this;\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (!isUndefined(this.bindings) && this.bindings[event]) {\n this.bindings[event].forEach(function (binding, index) {\n var ctx = binding.ctx,\n handler = binding.handler,\n once = binding.once;\n var context = ctx || _this2;\n handler.apply(context, args);\n if (once) {\n _this2.bindings[event].splice(index, 1);\n }\n });\n }\n return this;\n }\n }]);\n }();\n /**\n * Binds all the methods on a JS Class to the `this` context of the class.\n * Adapted from https://github.com/sindresorhus/auto-bind\n * @param {object} self The `this` context of the class\n * @return {object} The `this` context of the class\n */\n function autoBind(self) {\n var keys = Object.getOwnPropertyNames(self.constructor.prototype);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var val = self[key];\n if (key !== 'constructor' && typeof val === 'function') {\n self[key] = val.bind(self);\n }\n }\n return self;\n }\n\n /**\n * Sets up the handler to determine if we should advance the tour\n * @param {string} selector\n * @param {Step} step The step instance\n * @return {Function}\n * @private\n */\n function _setupAdvanceOnHandler(selector, step) {\n return function (event) {\n if (step.isOpen()) {\n var targetIsEl = step.el && event.currentTarget === step.el;\n var targetIsSelector = !isUndefined(selector) && event.currentTarget.matches(selector);\n if (targetIsSelector || targetIsEl) {\n step.tour.next();\n }\n }\n };\n }\n\n /**\n * Bind the event handler for advanceOn\n * @param {Step} step The step instance\n */\n function bindAdvance(step) {\n // An empty selector matches the step element\n var _ref2 = step.options.advanceOn || {},\n event = _ref2.event,\n selector = _ref2.selector;\n if (event) {\n var handler = _setupAdvanceOnHandler(selector, step);\n\n // TODO: this should also bind/unbind on show/hide\n var el;\n try {\n el = document.querySelector(selector);\n } catch (e) {\n // TODO\n }\n if (!isUndefined(selector) && !el) {\n return console.error(\"No element was found for the selector supplied to advanceOn: \".concat(selector));\n } else if (el) {\n el.addEventListener(event, handler);\n step.on('destroy', function () {\n return el.removeEventListener(event, handler);\n });\n } else {\n document.body.addEventListener(event, handler, true);\n step.on('destroy', function () {\n return document.body.removeEventListener(event, handler, true);\n });\n }\n } else {\n return console.error('advanceOn was defined, but no event name was passed.');\n }\n }\n\n /**\n * Ensure class prefix ends in `-`\n * @param {string} prefix The prefix to prepend to the class names generated by nano-css\n * @return {string} The prefix ending in `-`\n */\n function normalizePrefix(prefix) {\n if (!isString(prefix) || prefix === '') {\n return '';\n }\n return prefix.charAt(prefix.length - 1) !== '-' ? \"\".concat(prefix, \"-\") : prefix;\n }\n\n /**\n * Resolves attachTo options, converting element option value to a qualified HTMLElement.\n * @param {Step} step The step instance\n * @returns {{}|{element, on}}\n * `element` is a qualified HTML Element\n * `on` is a string position value\n */\n function parseAttachTo(step) {\n var options = step.options.attachTo || {};\n var returnOpts = Object.assign({}, options);\n if (isFunction(returnOpts.element)) {\n // Bind the callback to step so that it has access to the object, to enable running additional logic\n returnOpts.element = returnOpts.element.call(step);\n }\n if (isString(returnOpts.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(returnOpts.element);\n } catch (e) {\n // TODO\n }\n if (!returnOpts.element) {\n console.error(\"The element for this Shepherd step was not found \".concat(options.element));\n }\n }\n return returnOpts;\n }\n\n /**\n * Checks if the step should be centered or not. Does not trigger attachTo.element evaluation, making it a pure\n * alternative for the deprecated step.isCentered() method.\n * @param resolvedAttachToOptions\n * @returns {boolean}\n */\n function shouldCenterStep(resolvedAttachToOptions) {\n if (resolvedAttachToOptions === undefined || resolvedAttachToOptions === null) {\n return true;\n }\n return !resolvedAttachToOptions.element || !resolvedAttachToOptions.on;\n }\n\n /**\n * Create a unique id for steps, tours, modals, etc\n * @return {string}\n */\n function uuid() {\n var d = Date.now();\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n }\n function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n }\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n }\n var min = Math.min;\n var max = Math.max;\n var round = Math.round;\n var floor = Math.floor;\n var createCoords = function createCoords(v) {\n return {\n x: v,\n y: v\n };\n };\n var oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n };\n var oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n };\n function clamp(start, value, end) {\n return max(start, min(value, end));\n }\n function evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n }\n function getSide(placement) {\n return placement.split('-')[0];\n }\n function getAlignment(placement) {\n return placement.split('-')[1];\n }\n function getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n }\n function getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n }\n function getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n }\n function getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n }\n function getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n var alignment = getAlignment(placement);\n var alignmentAxis = getAlignmentAxis(placement);\n var length = getAxisLength(alignmentAxis);\n var mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n }\n function getExpandedPlacements(placement) {\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n }\n function getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, function (alignment) {\n return oppositeAlignmentMap[alignment];\n });\n }\n function getSideList(side, isStart, rtl) {\n var lr = ['left', 'right'];\n var rl = ['right', 'left'];\n var tb = ['top', 'bottom'];\n var bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n }\n function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n var alignment = getAlignment(placement);\n var list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(function (side) {\n return side + \"-\" + alignment;\n });\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n }\n function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (side) {\n return oppositeSideMap[side];\n });\n }\n function expandPaddingObject(padding) {\n return _extends({\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }, padding);\n }\n function getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n }\n function rectToClientRect(rect) {\n return _extends({}, rect, {\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n }\n var _excluded2 = [\"mainAxis\", \"crossAxis\", \"fallbackPlacements\", \"fallbackStrategy\", \"fallbackAxisSideDirection\", \"flipAlignment\"],\n _excluded4 = [\"mainAxis\", \"crossAxis\", \"limiter\"];\n function computeCoordsFromPlacement(_ref, placement, rtl) {\n var reference = _ref.reference,\n floating = _ref.floating;\n var sideAxis = getSideAxis(placement);\n var alignmentAxis = getAlignmentAxis(placement);\n var alignLength = getAxisLength(alignmentAxis);\n var side = getSide(placement);\n var isVertical = sideAxis === 'y';\n var commonX = reference.x + reference.width / 2 - floating.width / 2;\n var commonY = reference.y + reference.height / 2 - floating.height / 2;\n var commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n var coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n }\n\n /**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\n var computePosition$1 = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(reference, floating, config) {\n var _config$placement, placement, _config$strategy, strategy, _config$middleware, middleware, platform, validMiddleware, rtl, rects, _computeCoordsFromPla, x, y, statefulPlacement, middlewareData, resetCount, i, _validMiddleware$i, name, fn, _yield$fn, nextX, nextY, data, reset, _computeCoordsFromPla2;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _config$placement = config.placement, placement = _config$placement === void 0 ? 'bottom' : _config$placement, _config$strategy = config.strategy, strategy = _config$strategy === void 0 ? 'absolute' : _config$strategy, _config$middleware = config.middleware, middleware = _config$middleware === void 0 ? [] : _config$middleware, platform = config.platform;\n validMiddleware = middleware.filter(Boolean);\n _context.next = 4;\n return platform.isRTL == null ? void 0 : platform.isRTL(floating);\n case 4:\n rtl = _context.sent;\n _context.next = 7;\n return platform.getElementRects({\n reference: reference,\n floating: floating,\n strategy: strategy\n });\n case 7:\n rects = _context.sent;\n _computeCoordsFromPla = computeCoordsFromPlacement(rects, placement, rtl), x = _computeCoordsFromPla.x, y = _computeCoordsFromPla.y;\n statefulPlacement = placement;\n middlewareData = {};\n resetCount = 0;\n i = 0;\n case 13:\n if (!(i < validMiddleware.length)) {\n _context.next = 46;\n break;\n }\n _validMiddleware$i = validMiddleware[i], name = _validMiddleware$i.name, fn = _validMiddleware$i.fn;\n _context.next = 17;\n return fn({\n x: x,\n y: y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy: strategy,\n middlewareData: middlewareData,\n rects: rects,\n platform: platform,\n elements: {\n reference: reference,\n floating: floating\n }\n });\n case 17:\n _yield$fn = _context.sent;\n nextX = _yield$fn.x;\n nextY = _yield$fn.y;\n data = _yield$fn.data;\n reset = _yield$fn.reset;\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = _extends({}, middlewareData, _defineProperty({}, name, _extends({}, middlewareData[name], data)));\n if (!(reset && resetCount <= 50)) {\n _context.next = 43;\n break;\n }\n resetCount++;\n if (!(_typeof(reset) === 'object')) {\n _context.next = 41;\n break;\n }\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (!reset.rects) {\n _context.next = 38;\n break;\n }\n if (!(reset.rects === true)) {\n _context.next = 36;\n break;\n }\n _context.next = 33;\n return platform.getElementRects({\n reference: reference,\n floating: floating,\n strategy: strategy\n });\n case 33:\n _context.t0 = _context.sent;\n _context.next = 37;\n break;\n case 36:\n _context.t0 = reset.rects;\n case 37:\n rects = _context.t0;\n case 38:\n _computeCoordsFromPla2 = computeCoordsFromPlacement(rects, statefulPlacement, rtl);\n x = _computeCoordsFromPla2.x;\n y = _computeCoordsFromPla2.y;\n case 41:\n i = -1;\n return _context.abrupt(\"continue\", 43);\n case 43:\n i++;\n _context.next = 13;\n break;\n case 46:\n return _context.abrupt(\"return\", {\n x: x,\n y: y,\n placement: statefulPlacement,\n strategy: strategy,\n middlewareData: middlewareData\n });\n case 47:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function computePosition$1(_x, _x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n\n /**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\n function detectOverflow(_x4, _x5) {\n return _detectOverflow.apply(this, arguments);\n }\n /**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\n function _detectOverflow() {\n _detectOverflow = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(state, options) {\n var _await$platform$isEle, x, y, platform, rects, elements, strategy, _evaluate3, _evaluate3$boundary, boundary, _evaluate3$rootBounda, rootBoundary, _evaluate3$elementCon, elementContext, _evaluate3$altBoundar, altBoundary, _evaluate3$padding, padding, paddingObject, altContext, element, clippingClientRect, rect, offsetParent, offsetScale, elementClientRect;\n return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n if (options === void 0) {\n options = {};\n }\n x = state.x, y = state.y, platform = state.platform, rects = state.rects, elements = state.elements, strategy = state.strategy;\n _evaluate3 = evaluate(options, state), _evaluate3$boundary = _evaluate3.boundary, boundary = _evaluate3$boundary === void 0 ? 'clippingAncestors' : _evaluate3$boundary, _evaluate3$rootBounda = _evaluate3.rootBoundary, rootBoundary = _evaluate3$rootBounda === void 0 ? 'viewport' : _evaluate3$rootBounda, _evaluate3$elementCon = _evaluate3.elementContext, elementContext = _evaluate3$elementCon === void 0 ? 'floating' : _evaluate3$elementCon, _evaluate3$altBoundar = _evaluate3.altBoundary, altBoundary = _evaluate3$altBoundar === void 0 ? false : _evaluate3$altBoundar, _evaluate3$padding = _evaluate3.padding, padding = _evaluate3$padding === void 0 ? 0 : _evaluate3$padding;\n paddingObject = getPaddingObject(padding);\n altContext = elementContext === 'floating' ? 'reference' : 'floating';\n element = elements[altBoundary ? altContext : elementContext];\n _context7.t0 = rectToClientRect;\n _context7.t1 = platform;\n _context7.next = 10;\n return platform.isElement == null ? void 0 : platform.isElement(element);\n case 10:\n _context7.t2 = _await$platform$isEle = _context7.sent;\n if (!(_context7.t2 != null)) {\n _context7.next = 15;\n break;\n }\n _context7.t3 = _await$platform$isEle;\n _context7.next = 16;\n break;\n case 15:\n _context7.t3 = true;\n case 16:\n if (!_context7.t3) {\n _context7.next = 20;\n break;\n }\n _context7.t4 = element;\n _context7.next = 26;\n break;\n case 20:\n _context7.t5 = element.contextElement;\n if (_context7.t5) {\n _context7.next = 25;\n break;\n }\n _context7.next = 24;\n return platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating);\n case 24:\n _context7.t5 = _context7.sent;\n case 25:\n _context7.t4 = _context7.t5;\n case 26:\n _context7.t6 = _context7.t4;\n _context7.t7 = boundary;\n _context7.t8 = rootBoundary;\n _context7.t9 = strategy;\n _context7.t10 = {\n element: _context7.t6,\n boundary: _context7.t7,\n rootBoundary: _context7.t8,\n strategy: _context7.t9\n };\n _context7.next = 33;\n return _context7.t1.getClippingRect.call(_context7.t1, _context7.t10);\n case 33:\n _context7.t11 = _context7.sent;\n clippingClientRect = (0, _context7.t0)(_context7.t11);\n rect = elementContext === 'floating' ? _extends({}, rects.floating, {\n x: x,\n y: y\n }) : rects.reference;\n _context7.next = 38;\n return platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating);\n case 38:\n offsetParent = _context7.sent;\n _context7.next = 41;\n return platform.isElement == null ? void 0 : platform.isElement(offsetParent);\n case 41:\n if (!_context7.sent) {\n _context7.next = 50;\n break;\n }\n _context7.next = 44;\n return platform.getScale == null ? void 0 : platform.getScale(offsetParent);\n case 44:\n _context7.t13 = _context7.sent;\n if (_context7.t13) {\n _context7.next = 47;\n break;\n }\n _context7.t13 = {\n x: 1,\n y: 1\n };\n case 47:\n _context7.t12 = _context7.t13;\n _context7.next = 51;\n break;\n case 50:\n _context7.t12 = {\n x: 1,\n y: 1\n };\n case 51:\n offsetScale = _context7.t12;\n _context7.t14 = rectToClientRect;\n if (!platform.convertOffsetParentRelativeRectToViewportRelativeRect) {\n _context7.next = 59;\n break;\n }\n _context7.next = 56;\n return platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: rect,\n offsetParent: offsetParent,\n strategy: strategy\n });\n case 56:\n _context7.t15 = _context7.sent;\n _context7.next = 60;\n break;\n case 59:\n _context7.t15 = rect;\n case 60:\n _context7.t16 = _context7.t15;\n elementClientRect = (0, _context7.t14)(_context7.t16);\n return _context7.abrupt(\"return\", {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n });\n case 63:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7);\n }));\n return _detectOverflow.apply(this, arguments);\n }\n var arrow = function arrow(options) {\n return {\n name: 'arrow',\n options: options,\n fn: function fn(state) {\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var x, y, placement, rects, platform, elements, _ref4, element, _ref4$padding, padding, paddingObject, coords, axis, length, arrowDimensions, isYAxis, minProp, maxProp, clientProp, endDiff, startDiff, arrowOffsetParent, clientSize, centerToReference, largestPossiblePadding, minPadding, maxPadding, min$1, max, center, offset, shouldAddOffset, alignmentOffset;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n x = state.x, y = state.y, placement = state.placement, rects = state.rects, platform = state.platform, elements = state.elements; // Since `element` is required, we don't Partial<> the type.\n _ref4 = evaluate(options, state) || {}, element = _ref4.element, _ref4$padding = _ref4.padding, padding = _ref4$padding === void 0 ? 0 : _ref4$padding;\n if (!(element == null)) {\n _context2.next = 4;\n break;\n }\n return _context2.abrupt(\"return\", {});\n case 4:\n paddingObject = getPaddingObject(padding);\n coords = {\n x: x,\n y: y\n };\n axis = getAlignmentAxis(placement);\n length = getAxisLength(axis);\n _context2.next = 10;\n return platform.getDimensions(element);\n case 10:\n arrowDimensions = _context2.sent;\n isYAxis = axis === 'y';\n minProp = isYAxis ? 'top' : 'left';\n maxProp = isYAxis ? 'bottom' : 'right';\n clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n startDiff = coords[axis] - rects.reference[axis];\n _context2.next = 19;\n return platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element);\n case 19:\n arrowOffsetParent = _context2.sent;\n clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0; // DOM platform can return `window` as the `offsetParent`.\n _context2.t0 = !clientSize;\n if (_context2.t0) {\n _context2.next = 26;\n break;\n }\n _context2.next = 25;\n return platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent);\n case 25:\n _context2.t0 = !_context2.sent;\n case 26:\n if (!_context2.t0) {\n _context2.next = 28;\n break;\n }\n clientSize = elements.floating[clientProp] || rects.floating[length];\n case 28:\n centerToReference = endDiff / 2 - startDiff / 2; // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n minPadding = min(paddingObject[minProp], largestPossiblePadding);\n maxPadding = min(paddingObject[maxProp], largestPossiblePadding); // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n min$1 = minPadding;\n max = clientSize - arrowDimensions[length] - maxPadding;\n center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n offset = clamp(min$1, center, max); // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. This stops `shift()` from taking action, but can\n // be worked around by calling it again after the `arrow()` if desired.\n shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n alignmentOffset = shouldAddOffset ? center < min$1 ? min$1 - center : max - center : 0;\n return _context2.abrupt(\"return\", _defineProperty(_defineProperty({}, axis, coords[axis] - alignmentOffset), \"data\", _defineProperty(_defineProperty({}, axis, offset), \"centerOffset\", center - offset + alignmentOffset)));\n case 39:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n };\n };\n\n /**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\n var flip = function flip(options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options: options,\n fn: function fn(state) {\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n var _middlewareData$flip, placement, middlewareData, rects, initialPlacement, platform, elements, _evaluate2, _evaluate2$mainAxis, checkMainAxis, _evaluate2$crossAxis, checkCrossAxis, specifiedFallbackPlacements, _evaluate2$fallbackSt, fallbackStrategy, _evaluate2$fallbackAx, fallbackAxisSideDirection, _evaluate2$flipAlignm, flipAlignment, detectOverflowOptions, side, isBasePlacement, rtl, fallbackPlacements, placements, overflow, overflows, overflowsData, sides, _middlewareData$flip2, _overflowsData$filter, nextIndex, nextPlacement, resetPlacement, _overflowsData$map$so, _placement;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n placement = state.placement, middlewareData = state.middlewareData, rects = state.rects, initialPlacement = state.initialPlacement, platform = state.platform, elements = state.elements;\n _evaluate2 = evaluate(options, state), _evaluate2$mainAxis = _evaluate2.mainAxis, checkMainAxis = _evaluate2$mainAxis === void 0 ? true : _evaluate2$mainAxis, _evaluate2$crossAxis = _evaluate2.crossAxis, checkCrossAxis = _evaluate2$crossAxis === void 0 ? true : _evaluate2$crossAxis, specifiedFallbackPlacements = _evaluate2.fallbackPlacements, _evaluate2$fallbackSt = _evaluate2.fallbackStrategy, fallbackStrategy = _evaluate2$fallbackSt === void 0 ? 'bestFit' : _evaluate2$fallbackSt, _evaluate2$fallbackAx = _evaluate2.fallbackAxisSideDirection, fallbackAxisSideDirection = _evaluate2$fallbackAx === void 0 ? 'none' : _evaluate2$fallbackAx, _evaluate2$flipAlignm = _evaluate2.flipAlignment, flipAlignment = _evaluate2$flipAlignm === void 0 ? true : _evaluate2$flipAlignm, detectOverflowOptions = _objectWithoutPropertiesLoose(_evaluate2, _excluded2);\n side = getSide(placement);\n isBasePlacement = getSide(initialPlacement) === initialPlacement;\n _context3.next = 6;\n return platform.isRTL == null ? void 0 : platform.isRTL(elements.floating);\n case 6:\n rtl = _context3.sent;\n fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push.apply(fallbackPlacements, _toConsumableArray(getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)));\n }\n placements = [initialPlacement].concat(_toConsumableArray(fallbackPlacements));\n _context3.next = 12;\n return detectOverflow(state, detectOverflowOptions);\n case 12:\n overflow = _context3.sent;\n overflows = [];\n overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [].concat(_toConsumableArray(overflowsData), [{\n placement: placement,\n overflows: overflows\n }]);\n\n // One or more sides is overflowing.\n if (overflows.every(function (side) {\n return side <= 0;\n })) {\n _context3.next = 35;\n break;\n }\n nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n nextPlacement = placements[nextIndex];\n if (!nextPlacement) {\n _context3.next = 23;\n break;\n }\n return _context3.abrupt(\"return\", {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n });\n case 23:\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n resetPlacement = (_overflowsData$filter = overflowsData.filter(function (d) {\n return d.overflows[0] <= 0;\n }).sort(function (a, b) {\n return a.overflows[1] - b.overflows[1];\n })[0]) == null ? void 0 : _overflowsData$filter.placement; // Otherwise fallback.\n if (resetPlacement) {\n _context3.next = 33;\n break;\n }\n _context3.t0 = fallbackStrategy;\n _context3.next = _context3.t0 === 'bestFit' ? 28 : _context3.t0 === 'initialPlacement' ? 31 : 33;\n break;\n case 28:\n _placement = (_overflowsData$map$so = overflowsData.map(function (d) {\n return [d.placement, d.overflows.filter(function (overflow) {\n return overflow > 0;\n }).reduce(function (acc, overflow) {\n return acc + overflow;\n }, 0)];\n }).sort(function (a, b) {\n return a[1] - b[1];\n })[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (_placement) {\n resetPlacement = _placement;\n }\n return _context3.abrupt(\"break\", 33);\n case 31:\n resetPlacement = initialPlacement;\n return _context3.abrupt(\"break\", 33);\n case 33:\n if (!(placement !== resetPlacement)) {\n _context3.next = 35;\n break;\n }\n return _context3.abrupt(\"return\", {\n reset: {\n placement: resetPlacement\n }\n });\n case 35:\n return _context3.abrupt(\"return\", {});\n case 36:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }))();\n }\n };\n };\n\n /**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\n var shift = function shift(options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options: options,\n fn: function fn(state) {\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n var x, y, placement, _evaluate4, _evaluate4$mainAxis, checkMainAxis, _evaluate4$crossAxis, checkCrossAxis, _evaluate4$limiter, limiter, detectOverflowOptions, coords, overflow, crossAxis, mainAxis, mainAxisCoord, crossAxisCoord, minSide, maxSide, _min, _max, _minSide, _maxSide, _min2, _max2, limitedCoords;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n x = state.x, y = state.y, placement = state.placement;\n _evaluate4 = evaluate(options, state), _evaluate4$mainAxis = _evaluate4.mainAxis, checkMainAxis = _evaluate4$mainAxis === void 0 ? true : _evaluate4$mainAxis, _evaluate4$crossAxis = _evaluate4.crossAxis, checkCrossAxis = _evaluate4$crossAxis === void 0 ? false : _evaluate4$crossAxis, _evaluate4$limiter = _evaluate4.limiter, limiter = _evaluate4$limiter === void 0 ? {\n fn: function fn(_ref) {\n var x = _ref.x,\n y = _ref.y;\n return {\n x: x,\n y: y\n };\n }\n } : _evaluate4$limiter, detectOverflowOptions = _objectWithoutPropertiesLoose(_evaluate4, _excluded4);\n coords = {\n x: x,\n y: y\n };\n _context4.next = 5;\n return detectOverflow(state, detectOverflowOptions);\n case 5:\n overflow = _context4.sent;\n crossAxis = getSideAxis(getSide(placement));\n mainAxis = getOppositeAxis(crossAxis);\n mainAxisCoord = coords[mainAxis];\n crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n minSide = mainAxis === 'y' ? 'top' : 'left';\n maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n _min = mainAxisCoord + overflow[minSide];\n _max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(_min, mainAxisCoord, _max);\n }\n if (checkCrossAxis) {\n _minSide = crossAxis === 'y' ? 'top' : 'left';\n _maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n _min2 = crossAxisCoord + overflow[_minSide];\n _max2 = crossAxisCoord - overflow[_maxSide];\n crossAxisCoord = clamp(_min2, crossAxisCoord, _max2);\n }\n limitedCoords = limiter.fn(_extends({}, state, _defineProperty(_defineProperty({}, mainAxis, mainAxisCoord), crossAxis, crossAxisCoord)));\n return _context4.abrupt(\"return\", _extends({}, limitedCoords, {\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n }));\n case 14:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }))();\n }\n };\n };\n /**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\n var limitShift = function limitShift(options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options: options,\n fn: function fn(state) {\n var x = state.x,\n y = state.y,\n placement = state.placement,\n rects = state.rects,\n middlewareData = state.middlewareData;\n var _evaluate = evaluate(options, state),\n _evaluate$offset = _evaluate.offset,\n offset = _evaluate$offset === void 0 ? 0 : _evaluate$offset,\n _evaluate$mainAxis = _evaluate.mainAxis,\n checkMainAxis = _evaluate$mainAxis === void 0 ? true : _evaluate$mainAxis,\n _evaluate$crossAxis = _evaluate.crossAxis,\n checkCrossAxis = _evaluate$crossAxis === void 0 ? true : _evaluate$crossAxis;\n var coords = {\n x: x,\n y: y\n };\n var crossAxis = getSideAxis(placement);\n var mainAxis = getOppositeAxis(crossAxis);\n var mainAxisCoord = coords[mainAxis];\n var crossAxisCoord = coords[crossAxis];\n var rawOffset = evaluate(offset, state);\n var computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : _extends({\n mainAxis: 0,\n crossAxis: 0\n }, rawOffset);\n if (checkMainAxis) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n var limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n var limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n var _len2 = mainAxis === 'y' ? 'width' : 'height';\n var isOriginSide = ['top', 'left'].includes(getSide(placement));\n var _limitMin = rects.reference[crossAxis] - rects.floating[_len2] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n var _limitMax = rects.reference[crossAxis] + rects.reference[_len2] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < _limitMin) {\n crossAxisCoord = _limitMin;\n } else if (crossAxisCoord > _limitMax) {\n crossAxisCoord = _limitMax;\n }\n }\n return _defineProperty(_defineProperty({}, mainAxis, mainAxisCoord), crossAxis, crossAxisCoord);\n }\n };\n };\n function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n }\n function getWindow(node) {\n var _node$ownerDocument;\n return (node == null ? void 0 : (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n }\n function getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n }\n function isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n }\n function isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n }\n function isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n }\n function isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n }\n function isOverflowElement(element) {\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY,\n display = _getComputedStyle.display;\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n }\n function isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n }\n function isContainingBlock(element) {\n var webkit = isWebKit();\n var css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(function (value) {\n return (css.willChange || '').includes(value);\n }) || ['paint', 'layout', 'strict', 'content'].some(function (value) {\n return (css.contain || '').includes(value);\n });\n }\n function getContainingBlock(element) {\n var currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n }\n function isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n }\n function isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n }\n function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n }\n function getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n }\n function getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n var result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n }\n function getNearestOverflowAncestor(node) {\n var parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n }\n function getOverflowAncestors(node, list) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n var scrollableAncestor = getNearestOverflowAncestor(node);\n var isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n var win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n }\n function getCssDimensions(element) {\n var css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n var width = parseFloat(css.width) || 0;\n var height = parseFloat(css.height) || 0;\n var hasOffset = isHTMLElement(element);\n var offsetWidth = hasOffset ? element.offsetWidth : width;\n var offsetHeight = hasOffset ? element.offsetHeight : height;\n var shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width: width,\n height: height,\n $: shouldFallback\n };\n }\n function unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n }\n function getScale(element) {\n var domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n var rect = domElement.getBoundingClientRect();\n var _getCssDimensions = getCssDimensions(domElement),\n width = _getCssDimensions.width,\n height = _getCssDimensions.height,\n $ = _getCssDimensions.$;\n var x = ($ ? round(rect.width) : rect.width) / width;\n var y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x: x,\n y: y\n };\n }\n var noOffsets = /*#__PURE__*/createCoords(0);\n function getVisualOffsets(element) {\n var win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n }\n function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n }\n function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n var clientRect = element.getBoundingClientRect();\n var domElement = unwrapElement(element);\n var scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n var visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n var x = (clientRect.left + visualOffsets.x) / scale.x;\n var y = (clientRect.top + visualOffsets.y) / scale.y;\n var width = clientRect.width / scale.x;\n var height = clientRect.height / scale.y;\n if (domElement) {\n var win = getWindow(domElement);\n var offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n var currentIFrame = win.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== win) {\n var iframeScale = getScale(currentIFrame);\n var iframeRect = currentIFrame.getBoundingClientRect();\n var css = getComputedStyle(currentIFrame);\n var left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n var top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentIFrame = getWindow(currentIFrame).frameElement;\n }\n }\n return rectToClientRect({\n width: width,\n height: height,\n x: x,\n y: y\n });\n }\n function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n var rect = _ref.rect,\n offsetParent = _ref.offsetParent,\n strategy = _ref.strategy;\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n if (offsetParent === documentElement) {\n return rect;\n }\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var scale = createCoords(1);\n var offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n var offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n }\n function getClientRects(element) {\n return Array.from(element.getClientRects());\n }\n function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n }\n\n // Gets the entire size of the scrollable document area, even extending outside\n // of the `<html>` and `<body>` rect bounds if horizontally scrollable.\n function getDocumentRect(element) {\n var html = getDocumentElement(element);\n var scroll = getNodeScroll(element);\n var body = element.ownerDocument.body;\n var width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n var height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n var x = -scroll.scrollLeft + getWindowScrollBarX(element);\n var y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n }\n function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n }\n\n // Returns the inner client rect, subtracting scrollbars if present.\n function getInnerBoundingClientRect(element, strategy) {\n var clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n var top = clientRect.top + element.clientTop;\n var left = clientRect.left + element.clientLeft;\n var scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n var width = element.clientWidth * scale.x;\n var height = element.clientHeight * scale.y;\n var x = left * scale.x;\n var y = top * scale.y;\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n }\n function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n var rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n var visualOffsets = getVisualOffsets(element);\n rect = _extends({}, clippingAncestor, {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n });\n }\n return rectToClientRect(rect);\n }\n function hasFixedPositionAncestor(element, stopNode) {\n var parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n }\n\n // A \"clipping ancestor\" is an `overflow` element with the characteristic of\n // clipping (or hiding) child elements. This returns all clipping ancestors\n // of the given element up the tree.\n function getClippingElementAncestors(element, cache) {\n var cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n var result = getOverflowAncestors(element).filter(function (el) {\n return isElement(el) && getNodeName(el) !== 'body';\n });\n var currentContainingBlockComputedStyle = null;\n var elementIsFixed = getComputedStyle(element).position === 'fixed';\n var currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n var computedStyle = getComputedStyle(currentNode);\n var currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n var shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(function (ancestor) {\n return ancestor !== currentNode;\n });\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n }\n\n // Gets the maximum area that the element is visible in due to any number of\n // clipping ancestors.\n function getClippingRect(_ref) {\n var element = _ref.element,\n boundary = _ref.boundary,\n rootBoundary = _ref.rootBoundary,\n strategy = _ref.strategy;\n var elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n var clippingAncestors = [].concat(_toConsumableArray(elementClippingAncestors), [rootBoundary]);\n var firstClippingAncestor = clippingAncestors[0];\n var clippingRect = clippingAncestors.reduce(function (accRect, clippingAncestor) {\n var rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n }\n function getDimensions(element) {\n return getCssDimensions(element);\n }\n function getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var isFixed = strategy === 'fixed';\n var rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n var offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n }\n function getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n }\n\n // Gets the closest ancestor positioned element. Handles some edge cases,\n // such as table ancestors and cross browser bugs.\n function getOffsetParent(element, polyfill) {\n var window = getWindow(element);\n if (!isHTMLElement(element)) {\n return window;\n }\n var offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n }\n var getElementRects = /*#__PURE__*/function () {\n var _getElementRects = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_ref) {\n var reference, floating, strategy, getOffsetParentFn, getDimensionsFn;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n reference = _ref.reference, floating = _ref.floating, strategy = _ref.strategy;\n getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n getDimensionsFn = this.getDimensions;\n _context5.t0 = getRectRelativeToOffsetParent;\n _context5.t1 = reference;\n _context5.next = 7;\n return getOffsetParentFn(floating);\n case 7:\n _context5.t2 = _context5.sent;\n _context5.t3 = strategy;\n _context5.t4 = (0, _context5.t0)(_context5.t1, _context5.t2, _context5.t3);\n _context5.t5 = _extends;\n _context5.t6 = {\n x: 0,\n y: 0\n };\n _context5.next = 14;\n return getDimensionsFn(floating);\n case 14:\n _context5.t7 = _context5.sent;\n _context5.t8 = (0, _context5.t5)(_context5.t6, _context5.t7);\n return _context5.abrupt(\"return\", {\n reference: _context5.t4,\n floating: _context5.t8\n });\n case 17:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function getElementRects(_x6) {\n return _getElementRects.apply(this, arguments);\n }\n return getElementRects;\n }();\n function isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n }\n var platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect: convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement: getDocumentElement,\n getClippingRect: getClippingRect,\n getOffsetParent: getOffsetParent,\n getElementRects: getElementRects,\n getClientRects: getClientRects,\n getDimensions: getDimensions,\n getScale: getScale,\n isElement: isElement,\n isRTL: isRTL\n };\n\n // https://samthor.au/2021/observing-dom/\n function observeMove(element, onMove) {\n var io = null;\n var timeoutId;\n var root = getDocumentElement(element);\n function cleanup() {\n clearTimeout(timeoutId);\n io && io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n var _element$getBoundingC = element.getBoundingClientRect(),\n left = _element$getBoundingC.left,\n top = _element$getBoundingC.top,\n width = _element$getBoundingC.width,\n height = _element$getBoundingC.height;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n var insetTop = floor(top);\n var insetRight = floor(root.clientWidth - (left + width));\n var insetBottom = floor(root.clientHeight - (top + height));\n var insetLeft = floor(left);\n var rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n var options = {\n rootMargin: rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n var isFirstUpdate = true;\n function handleObserve(entries) {\n var ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(function () {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, _extends({}, options, {\n // Handle <iframe>s\n root: root.ownerDocument\n }));\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n }\n\n /**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\n function autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n _options$ancestorScro = _options.ancestorScroll,\n ancestorScroll = _options$ancestorScro === void 0 ? true : _options$ancestorScro,\n _options$ancestorResi = _options.ancestorResize,\n ancestorResize = _options$ancestorResi === void 0 ? true : _options$ancestorResi,\n _options$elementResiz = _options.elementResize,\n elementResize = _options$elementResiz === void 0 ? typeof ResizeObserver === 'function' : _options$elementResiz,\n _options$layoutShift = _options.layoutShift,\n layoutShift = _options$layoutShift === void 0 ? typeof IntersectionObserver === 'function' : _options$layoutShift,\n _options$animationFra = _options.animationFrame,\n animationFrame = _options$animationFra === void 0 ? false : _options$animationFra;\n var referenceEl = unwrapElement(reference);\n var ancestors = ancestorScroll || ancestorResize ? [].concat(_toConsumableArray(referenceEl ? getOverflowAncestors(referenceEl) : []), _toConsumableArray(getOverflowAncestors(floating))) : [];\n ancestors.forEach(function (ancestor) {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n var cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n var reobserveFrame = -1;\n var resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(function (_ref) {\n var _ref7 = _slicedToArray(_ref, 1),\n firstEntry = _ref7[0];\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(function () {\n resizeObserver && resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n var frameId;\n var prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n var nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return function () {\n ancestors.forEach(function (ancestor) {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo && cleanupIo();\n resizeObserver && resizeObserver.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n }\n\n /**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\n var computePosition = function computePosition(reference, floating, options) {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n var cache = new Map();\n var mergedOptions = _extends({\n platform: platform\n }, options);\n var platformWithCache = _extends({}, mergedOptions.platform, {\n _c: cache\n });\n return computePosition$1(reference, floating, _extends({}, mergedOptions, {\n platform: platformWithCache\n }));\n };\n\n /**\n * Floating UI Options\n *\n * @typedef {object} FloatingUIOptions\n */\n\n /**\n * Determines options for the tooltip and initializes event listeners.\n *\n * @param {Step} step The step instance\n *\n * @return {FloatingUIOptions}\n */\n function setupTooltip(step) {\n if (step.cleanup) {\n step.cleanup();\n }\n var attachToOptions = step._getResolvedAttachToOptions();\n var target = attachToOptions.element;\n var floatingUIOptions = getFloatingUIOptions(attachToOptions, step);\n var shouldCenter = shouldCenterStep(attachToOptions);\n if (shouldCenter) {\n target = document.body;\n var content = step.shepherdElementComponent.getElement();\n content.classList.add('shepherd-centered');\n }\n step.cleanup = autoUpdate(target, step.el, function () {\n // The element might have already been removed by the end of the tour.\n if (!step.el) {\n step.cleanup();\n return;\n }\n setPosition(target, step, floatingUIOptions, shouldCenter);\n });\n step.target = attachToOptions.element;\n return floatingUIOptions;\n }\n\n /**\n * Merge tooltip options handling nested keys.\n *\n * @param tourOptions - The default tour options.\n * @param options - Step specific options.\n *\n * @return {floatingUIOptions: FloatingUIOptions}\n */\n function mergeTooltipConfig(tourOptions, options) {\n return {\n floatingUIOptions: cjs(tourOptions.floatingUIOptions || {}, options.floatingUIOptions || {})\n };\n }\n\n /**\n * Cleanup function called when the step is closed/destroyed.\n *\n * @param {Step} step\n */\n function destroyTooltip(step) {\n if (step.cleanup) {\n step.cleanup();\n }\n step.cleanup = null;\n }\n\n /**\n *\n * @return {Promise<*>}\n */\n function setPosition(target, step, floatingUIOptions, shouldCenter) {\n return computePosition(target, step.el, floatingUIOptions).then(floatingUIposition(step, shouldCenter))\n // Wait before forcing focus.\n .then(function (step) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n return resolve(step);\n }, 300);\n });\n })\n // Replaces focusAfterRender modifier.\n .then(function (step) {\n if (step && step.el) {\n step.el.focus({\n preventScroll: true\n });\n }\n });\n }\n\n /**\n *\n * @param step\n * @param shouldCenter\n * @return {function({x: *, y: *, placement: *, middlewareData: *}): Promise<unknown>}\n */\n function floatingUIposition(step, shouldCenter) {\n return function (_ref8) {\n var x = _ref8.x,\n y = _ref8.y,\n placement = _ref8.placement,\n middlewareData = _ref8.middlewareData;\n if (!step.el) {\n return step;\n }\n if (shouldCenter) {\n Object.assign(step.el.style, {\n position: 'fixed',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)'\n });\n } else {\n Object.assign(step.el.style, {\n position: 'absolute',\n left: \"\".concat(x, \"px\"),\n top: \"\".concat(y, \"px\")\n });\n }\n step.el.dataset.popperPlacement = placement;\n placeArrow(step.el, middlewareData);\n return step;\n };\n }\n\n /**\n *\n * @param el\n * @param middlewareData\n */\n function placeArrow(el, middlewareData) {\n var arrowEl = el.querySelector('.shepherd-arrow');\n if (arrowEl && middlewareData.arrow) {\n var _middlewareData$arrow = middlewareData.arrow,\n arrowX = _middlewareData$arrow.x,\n arrowY = _middlewareData$arrow.y;\n Object.assign(arrowEl.style, {\n left: arrowX != null ? \"\".concat(arrowX, \"px\") : '',\n top: arrowY != null ? \"\".concat(arrowY, \"px\") : ''\n });\n }\n }\n\n /**\n * Gets the `Floating UI` options from a set of base `attachTo` options\n * @param attachToOptions\n * @param {Step} step The step instance\n * @return {Object}\n * @private\n */\n function getFloatingUIOptions(attachToOptions, step) {\n var options = {\n strategy: 'absolute',\n middleware: []\n };\n var arrowEl = addArrow(step);\n var shouldCenter = shouldCenterStep(attachToOptions);\n if (!shouldCenter) {\n options.middleware.push(flip(),\n // Replicate PopperJS default behavior.\n shift({\n limiter: limitShift(),\n crossAxis: true\n }));\n if (arrowEl) {\n options.middleware.push(arrow({\n element: arrowEl\n }));\n }\n options.placement = attachToOptions.on;\n }\n return cjs(step.options.floatingUIOptions || {}, options);\n }\n\n /**\n * @param {Step} step\n * @return {HTMLElement|false|null}\n */\n function addArrow(step) {\n if (step.options.arrow && step.el) {\n return step.el.querySelector('.shepherd-arrow');\n }\n return false;\n }\n function noop() {}\n function assign(tar, src) {\n // @ts-ignore\n for (var k in src) tar[k] = src[k];\n return tar;\n }\n function run(fn) {\n return fn();\n }\n function blank_object() {\n return Object.create(null);\n }\n function run_all(fns) {\n fns.forEach(run);\n }\n function is_function(thing) {\n return typeof thing === 'function';\n }\n function safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || a && _typeof(a) === 'object' || typeof a === 'function';\n }\n function is_empty(obj) {\n return Object.keys(obj).length === 0;\n }\n function append(target, node) {\n target.appendChild(node);\n }\n function insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n }\n function detach(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n function destroy_each(iterations, detaching) {\n for (var i = 0; i < iterations.length; i += 1) {\n if (iterations[i]) iterations[i].d(detaching);\n }\n }\n function element(name) {\n return document.createElement(name);\n }\n function svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n }\n function text(data) {\n return document.createTextNode(data);\n }\n function space() {\n return text(' ');\n }\n function empty() {\n return text('');\n }\n function listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return function () {\n return node.removeEventListener(event, handler, options);\n };\n }\n function attr(node, attribute, value) {\n if (value == null) node.removeAttribute(attribute);else if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);\n }\n /**\n * List of attributes that should always be set through the attr method,\n * because updating them through the property setter doesn't work reliably.\n * In the example of `width`/`height`, the problem is that the setter only\n * accepts numeric values, but the attribute can also be set to a string like `50%`.\n * If this list becomes too big, rethink this approach.\n */\n var always_set_through_set_attribute = ['width', 'height'];\n function set_attributes(node, attributes) {\n // @ts-ignore\n var descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (var key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n } else if (key === 'style') {\n node.style.cssText = attributes[key];\n } else if (key === '__value') {\n node.value = node[key] = attributes[key];\n } else if (descriptors[key] && descriptors[key].set && always_set_through_set_attribute.indexOf(key) === -1) {\n node[key] = attributes[key];\n } else {\n attr(node, key, attributes[key]);\n }\n }\n }\n function children(element) {\n return Array.from(element.childNodes);\n }\n function toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n }\n var current_component;\n function set_current_component(component) {\n current_component = component;\n }\n function get_current_component() {\n if (!current_component) throw new Error('Function called outside component initialization');\n return current_component;\n }\n /**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs#run-time-svelte-onmount\n */\n function onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n }\n /**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`\n */\n function afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n }\n var dirty_components = [];\n var binding_callbacks = [];\n var render_callbacks = [];\n var flush_callbacks = [];\n var resolved_promise = /* @__PURE__ */Promise.resolve();\n var update_scheduled = false;\n function schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n }\n function add_render_callback(fn) {\n render_callbacks.push(fn);\n }\n // flush() calls callbacks in this order:\n // 1. All beforeUpdate callbacks, in order: parents before children\n // 2. All bind:this callbacks, in reverse order: children before parents.\n // 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n // for afterUpdates called during the initial onMount, which are called in\n // reverse order: children before parents.\n // Since callbacks might update component values, which could trigger another\n // call to flush(), the following steps guard against this:\n // 1. During beforeUpdate, any updated components will be added to the\n // dirty_components array and will cause a reentrant call to flush(). Because\n // the flush index is kept outside the function, the reentrant call will pick\n // up where the earlier call left off and go through all dirty components. The\n // current_component value is saved and restored so that the reentrant call will\n // not interfere with the \"parent\" flush() call.\n // 2. bind:this callbacks cannot trigger new flush() calls.\n // 3. During afterUpdate, any updated components will NOT have their afterUpdate\n // callback called a second time; the seen_callbacks set, outside the flush()\n // function, guarantees this behavior.\n var seen_callbacks = new Set();\n var flushidx = 0; // Do *not* move this inside the flush() function\n function flush() {\n // Do not reenter flush while dirty components are updated, as this can\n // result in an infinite loop. Instead, let the inner flush handle it.\n // Reentrancy is ok afterwards for bindings etc.\n if (flushidx !== 0) {\n return;\n }\n var saved_component = current_component;\n do {\n // first, call beforeUpdate functions\n // and update components\n try {\n while (flushidx < dirty_components.length) {\n var component = dirty_components[flushidx];\n flushidx++;\n set_current_component(component);\n update(component.$$);\n }\n } catch (e) {\n // reset dirty state to not end up in a deadlocked state and then rethrow\n dirty_components.length = 0;\n flushidx = 0;\n throw e;\n }\n set_current_component(null);\n dirty_components.length = 0;\n flushidx = 0;\n while (binding_callbacks.length) binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (var i = 0; i < render_callbacks.length; i += 1) {\n var callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n seen_callbacks.clear();\n set_current_component(saved_component);\n }\n function update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n var dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n }\n /**\n * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.\n */\n function flush_render_callbacks(fns) {\n var filtered = [];\n var targets = [];\n render_callbacks.forEach(function (c) {\n return fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c);\n });\n targets.forEach(function (c) {\n return c();\n });\n render_callbacks = filtered;\n }\n var outroing = new Set();\n var outros;\n function group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n }\n function check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n }\n function transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n }\n function transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block)) return;\n outroing.add(block);\n outros.c.push(function () {\n outroing.delete(block);\n if (callback) {\n if (detach) block.d(1);\n callback();\n }\n });\n block.o(local);\n } else if (callback) {\n callback();\n }\n }\n function get_spread_update(levels, updates) {\n var update = {};\n var to_null_out = {};\n var accounted_for = {\n $$scope: 1\n };\n var i = levels.length;\n while (i--) {\n var o = levels[i];\n var n = updates[i];\n if (n) {\n for (var key in o) {\n if (!(key in n)) to_null_out[key] = 1;\n }\n for (var _key2 in n) {\n if (!accounted_for[_key2]) {\n update[_key2] = n[_key2];\n accounted_for[_key2] = 1;\n }\n }\n levels[i] = n;\n } else {\n for (var _key3 in o) {\n accounted_for[_key3] = 1;\n }\n }\n }\n for (var _key4 in to_null_out) {\n if (!(_key4 in update)) update[_key4] = undefined;\n }\n return update;\n }\n function create_component(block) {\n block && block.c();\n }\n function mount_component(component, target, anchor, customElement) {\n var _component$$$ = component.$$,\n fragment = _component$$$.fragment,\n after_update = _component$$$.after_update;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(function () {\n var new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n // if the component was destroyed immediately\n // it will update the `$$.on_destroy` reference to `null`.\n // the destructured on_destroy may still reference to the old array\n if (component.$$.on_destroy) {\n var _component$$$$on_dest;\n (_component$$$$on_dest = component.$$.on_destroy).push.apply(_component$$$$on_dest, _toConsumableArray(new_on_destroy));\n } else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n }\n function destroy_component(component, detaching) {\n var $$ = component.$$;\n if ($$.fragment !== null) {\n flush_render_callbacks($$.after_update);\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n }\n function make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[i / 31 | 0] |= 1 << i % 31;\n }\n function init(component, options, instance, create_fragment, not_equal, props, append_styles) {\n var dirty = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : [-1];\n var parent_component = current_component;\n set_current_component(component);\n var $$ = component.$$ = {\n fragment: null,\n ctx: [],\n // state\n props: props,\n update: noop,\n not_equal: not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty: dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n var ready = false;\n $$.ctx = instance ? instance(component, options.props || {}, function (i, ret) {\n var value = (arguments.length <= 2 ? 0 : arguments.length - 2) ? arguments.length <= 2 ? undefined : arguments[2] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);\n if (ready) make_dirty(component, i);\n }\n return ret;\n }) : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n var nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro) transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n flush();\n }\n set_current_component(parent_component);\n }\n /**\n * Base class for Svelte components. Used when dev=false.\n */\n var SvelteComponent = /*#__PURE__*/function () {\n function SvelteComponent() {\n _classCallCheck(this, SvelteComponent);\n }\n return _createClass(SvelteComponent, [{\n key: \"$destroy\",\n value: function $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n }, {\n key: \"$on\",\n value: function $on(type, callback) {\n if (!is_function(callback)) {\n return noop;\n }\n var callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n callbacks.push(callback);\n return function () {\n var index = callbacks.indexOf(callback);\n if (index !== -1) callbacks.splice(index, 1);\n };\n }\n }, {\n key: \"$set\",\n value: function $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n }]);\n }();\n /* src/js/components/shepherd-button.svelte generated by Svelte v3.59.2 */\n function create_fragment$8(ctx) {\n var button;\n var button_aria_label_value;\n var button_class_value;\n var mounted;\n var dispose;\n return {\n c: function c() {\n button = element(\"button\");\n attr(button, \"aria-label\", button_aria_label_value = /*label*/ctx[3] ? /*label*/ctx[3] : null);\n attr(button, \"class\", button_class_value = \"\".concat( /*classes*/ctx[1] || '', \" shepherd-button \").concat( /*secondary*/ctx[4] ? 'shepherd-button-secondary' : ''));\n button.disabled = /*disabled*/ctx[2];\n attr(button, \"tabindex\", \"0\");\n },\n m: function m(target, anchor) {\n insert(target, button, anchor);\n button.innerHTML = /*text*/ctx[5];\n if (!mounted) {\n dispose = listen(button, \"click\", function () {\n if (is_function( /*action*/ctx[0])) /*action*/ctx[0].apply(this, arguments);\n });\n mounted = true;\n }\n },\n p: function p(new_ctx, _ref9) {\n var _ref10 = _slicedToArray(_ref9, 1),\n dirty = _ref10[0];\n ctx = new_ctx;\n if (dirty & /*text*/32) button.innerHTML = /*text*/ctx[5];\n if (dirty & /*label*/8 && button_aria_label_value !== (button_aria_label_value = /*label*/ctx[3] ? /*label*/ctx[3] : null)) {\n attr(button, \"aria-label\", button_aria_label_value);\n }\n if (dirty & /*classes, secondary*/18 && button_class_value !== (button_class_value = \"\".concat( /*classes*/ctx[1] || '', \" shepherd-button \").concat( /*secondary*/ctx[4] ? 'shepherd-button-secondary' : ''))) {\n attr(button, \"class\", button_class_value);\n }\n if (dirty & /*disabled*/4) {\n button.disabled = /*disabled*/ctx[2];\n }\n },\n i: noop,\n o: noop,\n d: function d(detaching) {\n if (detaching) detach(button);\n mounted = false;\n dispose();\n }\n };\n }\n function instance$8($$self, $$props, $$invalidate) {\n var config = $$props.config,\n step = $$props.step;\n var action, classes, disabled, label, secondary, text;\n function getConfigOption(option) {\n if (isFunction(option)) {\n return option = option.call(step);\n }\n return option;\n }\n $$self.$$set = function ($$props) {\n if ('config' in $$props) $$invalidate(6, config = $$props.config);\n if ('step' in $$props) $$invalidate(7, step = $$props.step);\n };\n $$self.$$.update = function () {\n if ($$self.$$.dirty & /*config, step*/192) {\n {\n $$invalidate(0, action = config.action ? config.action.bind(step.tour) : null);\n $$invalidate(1, classes = config.classes);\n $$invalidate(2, disabled = config.disabled ? getConfigOption(config.disabled) : false);\n $$invalidate(3, label = config.label ? getConfigOption(config.label) : null);\n $$invalidate(4, secondary = config.secondary);\n $$invalidate(5, text = config.text ? getConfigOption(config.text) : null);\n }\n }\n };\n return [action, classes, disabled, label, secondary, text, config, step];\n }\n var Shepherd_button = /*#__PURE__*/function (_SvelteComponent) {\n function Shepherd_button(options) {\n var _this3;\n _classCallCheck(this, Shepherd_button);\n _this3 = _callSuper(this, Shepherd_button);\n init(_this3, options, instance$8, create_fragment$8, safe_not_equal, {\n config: 6,\n step: 7\n });\n return _this3;\n }\n _inherits(Shepherd_button, _SvelteComponent);\n return _createClass(Shepherd_button);\n }(SvelteComponent);\n /* src/js/components/shepherd-footer.svelte generated by Svelte v3.59.2 */\n function get_each_context(ctx, list, i) {\n var child_ctx = ctx.slice();\n child_ctx[2] = list[i];\n return child_ctx;\n }\n\n // (24:4) {#if buttons}\n function create_if_block$3(ctx) {\n var each_1_anchor;\n var current;\n var each_value = /*buttons*/ctx[1];\n var each_blocks = [];\n for (var i = 0; i < each_value.length; i += 1) {\n each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));\n }\n var out = function out(i) {\n return transition_out(each_blocks[i], 1, 1, function () {\n each_blocks[i] = null;\n });\n };\n return {\n c: function c() {\n for (var _i = 0; _i < each_blocks.length; _i += 1) {\n each_blocks[_i].c();\n }\n each_1_anchor = empty();\n },\n m: function m(target, anchor) {\n for (var _i2 = 0; _i2 < each_blocks.length; _i2 += 1) {\n if (each_blocks[_i2]) {\n each_blocks[_i2].m(target, anchor);\n }\n }\n insert(target, each_1_anchor, anchor);\n current = true;\n },\n p: function p(ctx, dirty) {\n if (dirty & /*buttons, step*/3) {\n each_value = /*buttons*/ctx[1];\n var _i3;\n for (_i3 = 0; _i3 < each_value.length; _i3 += 1) {\n var child_ctx = get_each_context(ctx, each_value, _i3);\n if (each_blocks[_i3]) {\n each_blocks[_i3].p(child_ctx, dirty);\n transition_in(each_blocks[_i3], 1);\n } else {\n each_blocks[_i3] = create_each_block(child_ctx);\n each_blocks[_i3].c();\n transition_in(each_blocks[_i3], 1);\n each_blocks[_i3].m(each_1_anchor.parentNode, each_1_anchor);\n }\n }\n group_outros();\n for (_i3 = each_value.length; _i3 < each_blocks.length; _i3 += 1) {\n out(_i3);\n }\n check_outros();\n }\n },\n i: function i(local) {\n if (current) return;\n for (var _i4 = 0; _i4 < each_value.length; _i4 += 1) {\n transition_in(each_blocks[_i4]);\n }\n current = true;\n },\n o: function o(local) {\n each_blocks = each_blocks.filter(Boolean);\n for (var _i5 = 0; _i5 < each_blocks.length; _i5 += 1) {\n transition_out(each_blocks[_i5]);\n }\n current = false;\n },\n d: function d(detaching) {\n destroy_each(each_blocks, detaching);\n if (detaching) detach(each_1_anchor);\n }\n };\n }\n\n // (25:8) {#each buttons as config}\n function create_each_block(ctx) {\n var shepherdbutton;\n var current;\n shepherdbutton = new Shepherd_button({\n props: {\n config: /*config*/ctx[2],\n step: /*step*/ctx[0]\n }\n });\n return {\n c: function c() {\n create_component(shepherdbutton.$$.fragment);\n },\n m: function m(target, anchor) {\n mount_component(shepherdbutton, target, anchor);\n current = true;\n },\n p: function p(ctx, dirty) {\n var shepherdbutton_changes = {};\n if (dirty & /*buttons*/2) shepherdbutton_changes.config = /*config*/ctx[2];\n if (dirty & /*step*/1) shepherdbutton_changes.step = /*step*/ctx[0];\n shepherdbutton.$set(shepherdbutton_changes);\n },\n i: function i(local) {\n if (current) return;\n transition_in(shepherdbutton.$$.fragment, local);\n current = true;\n },\n o: function o(local) {\n transition_out(shepherdbutton.$$.fragment, local);\n current = false;\n },\n d: function d(detaching) {\n destroy_component(shepherdbutton, detaching);\n }\n };\n }\n function create_fragment$7(ctx) {\n var footer;\n var current;\n var if_block = /*buttons*/ctx[1] && create_if_block$3(ctx);\n return {\n c: function c() {\n footer = element(\"footer\");\n if (if_block) if_block.c();\n attr(footer, \"class\", \"shepherd-footer\");\n },\n m: function m(target, anchor) {\n insert(target, footer, anchor);\n if (if_block) if_block.m(footer, null);\n current = true;\n },\n p: function p(ctx, _ref11) {\n var _ref12 = _slicedToArray(_ref11, 1),\n dirty = _ref12[0];\n if ( /*buttons*/ctx[1]) {\n if (if_block) {\n if_block.p(ctx, dirty);\n if (dirty & /*buttons*/2) {\n transition_in(if_block, 1);\n }\n } else {\n if_block = create_if_block$3(ctx);\n if_block.c();\n transition_in(if_block, 1);\n if_block.m(footer, null);\n }\n } else if (if_block) {\n group_outros();\n transition_out(if_block, 1, 1, function () {\n if_block = null;\n });\n check_outros();\n }\n },\n i: function i(local) {\n if (current) return;\n transition_in(if_block);\n current = true;\n },\n o: function o(local) {\n transition_out(if_block);\n current = false;\n },\n d: function d(detaching) {\n if (detaching) detach(footer);\n if (if_block) if_block.d();\n }\n };\n }\n function instance$7($$self, $$props, $$invalidate) {\n var buttons;\n var step = $$props.step;\n $$self.$$set = function ($$props) {\n if ('step' in $$props) $$invalidate(0, step = $$props.step);\n };\n $$self.$$.update = function () {\n if ($$self.$$.dirty & /*step*/1) {\n $$invalidate(1, buttons = step.options.buttons);\n }\n };\n return [step, buttons];\n }\n var Shepherd_footer = /*#__PURE__*/function (_SvelteComponent2) {\n function Shepherd_footer(options) {\n var _this4;\n _classCallCheck(this, Shepherd_footer);\n _this4 = _callSuper(this, Shepherd_footer);\n init(_this4, options, instance$7, create_fragment$7, safe_not_equal, {\n step: 0\n });\n return _this4;\n }\n _inherits(Shepherd_footer, _SvelteComponent2);\n return _createClass(Shepherd_footer);\n }(SvelteComponent);\n /* src/js/components/shepherd-cancel-icon.svelte generated by Svelte v3.59.2 */\n function create_fragment$6(ctx) {\n var button;\n var span;\n var button_aria_label_value;\n var mounted;\n var dispose;\n return {\n c: function c() {\n button = element(\"button\");\n span = element(\"span\");\n span.textContent = \"×\";\n attr(span, \"aria-hidden\", \"true\");\n attr(button, \"aria-label\", button_aria_label_value = /*cancelIcon*/ctx[0].label ? /*cancelIcon*/ctx[0].label : 'Close Tour');\n attr(button, \"class\", \"shepherd-cancel-icon\");\n attr(button, \"type\", \"button\");\n },\n m: function m(target, anchor) {\n insert(target, button, anchor);\n append(button, span);\n if (!mounted) {\n dispose = listen(button, \"click\", /*handleCancelClick*/ctx[1]);\n mounted = true;\n }\n },\n p: function p(ctx, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 1),\n dirty = _ref14[0];\n if (dirty & /*cancelIcon*/1 && button_aria_label_value !== (button_aria_label_value = /*cancelIcon*/ctx[0].label ? /*cancelIcon*/ctx[0].label : 'Close Tour')) {\n attr(button, \"aria-label\", button_aria_label_value);\n }\n },\n i: noop,\n o: noop,\n d: function d(detaching) {\n if (detaching) detach(button);\n mounted = false;\n dispose();\n }\n };\n }\n function instance$6($$self, $$props, $$invalidate) {\n var cancelIcon = $$props.cancelIcon,\n step = $$props.step;\n\n /**\n * Add a click listener to the cancel link that cancels the tour\n */\n var handleCancelClick = function handleCancelClick(e) {\n e.preventDefault();\n step.cancel();\n };\n $$self.$$set = function ($$props) {\n if ('cancelIcon' in $$props) $$invalidate(0, cancelIcon = $$props.cancelIcon);\n if ('step' in $$props) $$invalidate(2, step = $$props.step);\n };\n return [cancelIcon, handleCancelClick, step];\n }\n var Shepherd_cancel_icon = /*#__PURE__*/function (_SvelteComponent3) {\n function Shepherd_cancel_icon(options) {\n var _this5;\n _classCallCheck(this, Shepherd_cancel_icon);\n _this5 = _callSuper(this, Shepherd_cancel_icon);\n init(_this5, options, instance$6, create_fragment$6, safe_not_equal, {\n cancelIcon: 0,\n step: 2\n });\n return _this5;\n }\n _inherits(Shepherd_cancel_icon, _SvelteComponent3);\n return _createClass(Shepherd_cancel_icon);\n }(SvelteComponent);\n /* src/js/components/shepherd-title.svelte generated by Svelte v3.59.2 */\n function create_fragment$5(ctx) {\n var h3;\n return {\n c: function c() {\n h3 = element(\"h3\");\n attr(h3, \"id\", /*labelId*/ctx[1]);\n attr(h3, \"class\", \"shepherd-title\");\n },\n m: function m(target, anchor) {\n insert(target, h3, anchor);\n /*h3_binding*/\n ctx[3](h3);\n },\n p: function p(ctx, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 1),\n dirty = _ref16[0];\n if (dirty & /*labelId*/2) {\n attr(h3, \"id\", /*labelId*/ctx[1]);\n }\n },\n i: noop,\n o: noop,\n d: function d(detaching) {\n if (detaching) detach(h3);\n /*h3_binding*/\n ctx[3](null);\n }\n };\n }\n function instance$5($$self, $$props, $$invalidate) {\n var labelId = $$props.labelId,\n element = $$props.element,\n title = $$props.title;\n afterUpdate(function () {\n if (isFunction(title)) {\n $$invalidate(2, title = title());\n }\n $$invalidate(0, element.innerHTML = title, element);\n });\n function h3_binding($$value) {\n binding_callbacks[$$value ? 'unshift' : 'push'](function () {\n element = $$value;\n $$invalidate(0, element);\n });\n }\n $$self.$$set = function ($$props) {\n if ('labelId' in $$props) $$invalidate(1, labelId = $$props.labelId);\n if ('element' in $$props) $$invalidate(0, element = $$props.element);\n if ('title' in $$props) $$invalidate(2, title = $$props.title);\n };\n return [element, labelId, title, h3_binding];\n }\n var Shepherd_title = /*#__PURE__*/function (_SvelteComponent4) {\n function Shepherd_title(options) {\n var _this6;\n _classCallCheck(this, Shepherd_title);\n _this6 = _callSuper(this, Shepherd_title);\n init(_this6, options, instance$5, create_fragment$5, safe_not_equal, {\n labelId: 1,\n element: 0,\n title: 2\n });\n return _this6;\n }\n _inherits(Shepherd_title, _SvelteComponent4);\n return _createClass(Shepherd_title);\n }(SvelteComponent);\n /* src/js/components/shepherd-header.svelte generated by Svelte v3.59.2 */\n function create_if_block_1$1(ctx) {\n var shepherdtitle;\n var current;\n shepherdtitle = new Shepherd_title({\n props: {\n labelId: /*labelId*/ctx[0],\n title: /*title*/ctx[2]\n }\n });\n return {\n c: function c() {\n create_component(shepherdtitle.$$.fragment);\n },\n m: function m(target, anchor) {\n mount_component(shepherdtitle, target, anchor);\n current = true;\n },\n p: function p(ctx, dirty) {\n var shepherdtitle_changes = {};\n if (dirty & /*labelId*/1) shepherdtitle_changes.labelId = /*labelId*/ctx[0];\n if (dirty & /*title*/4) shepherdtitle_changes.title = /*title*/ctx[2];\n shepherdtitle.$set(shepherdtitle_changes);\n },\n i: function i(local) {\n if (current) return;\n transition_in(shepherdtitle.$$.fragment, local);\n current = true;\n },\n o: function o(local) {\n transition_out(shepherdtitle.$$.fragment, local);\n current = false;\n },\n d: function d(detaching) {\n destroy_component(shepherdtitle, detaching);\n }\n };\n }\n\n // (39:4) {#if cancelIcon && cancelIcon.enabled}\n function create_if_block$2(ctx) {\n var shepherdcancelicon;\n var current;\n shepherdcancelicon = new Shepherd_cancel_icon({\n props: {\n cancelIcon: /*cancelIcon*/ctx[3],\n step: /*step*/ctx[1]\n }\n });\n return {\n c: function c() {\n create_component(shepherdcancelicon.$$.fragment);\n },\n m: function m(target, anchor) {\n mount_component(shepherdcancelicon, target, anchor);\n current = true;\n },\n p: function p(ctx, dirty) {\n var shepherdcancelicon_changes = {};\n if (dirty & /*cancelIcon*/8) shepherdcancelicon_changes.cancelIcon = /*cancelIcon*/ctx[3];\n if (dirty & /*step*/2) shepherdcancelicon_changes.step = /*step*/ctx[1];\n shepherdcancelicon.$set(shepherdcancelicon_changes);\n },\n i: function i(local) {\n if (current) return;\n transition_in(shepherdcancelicon.$$.fragment, local);\n current = true;\n },\n o: function o(local) {\n transition_out(shepherdcancelicon.$$.fragment, local);\n current = false;\n },\n d: function d(detaching) {\n destroy_component(shepherdcancelicon, detaching);\n }\n };\n }\n function create_fragment$4(ctx) {\n var header;\n var t;\n var current;\n var if_block0 = /*title*/ctx[2] && create_if_block_1$1(ctx);\n var if_block1 = /*cancelIcon*/ctx[3] && /*cancelIcon*/ctx[3].enabled && create_if_block$2(ctx);\n return {\n c: function c() {\n header = element(\"header\");\n if (if_block0) if_block0.c();\n t = space();\n if (if_block1) if_block1.c();\n attr(header, \"class\", \"shepherd-header\");\n },\n m: function m(target, anchor) {\n insert(target, header, anchor);\n if (if_block0) if_block0.m(header, null);\n append(header, t);\n if (if_block1) if_block1.m(header, null);\n current = true;\n },\n p: function p(ctx, _ref17) {\n var _ref18 = _slicedToArray(_ref17, 1),\n dirty = _ref18[0];\n if ( /*title*/ctx[2]) {\n if (if_block0) {\n if_block0.p(ctx, dirty);\n if (dirty & /*title*/4) {\n transition_in(if_block0, 1);\n }\n } else {\n if_block0 = create_if_block_1$1(ctx);\n if_block0.c();\n transition_in(if_block0, 1);\n if_block0.m(header, t);\n }\n } else if (if_block0) {\n group_outros();\n transition_out(if_block0, 1, 1, function () {\n if_block0 = null;\n });\n check_outros();\n }\n if ( /*cancelIcon*/ctx[3] && /*cancelIcon*/ctx[3].enabled) {\n if (if_block1) {\n if_block1.p(ctx, dirty);\n if (dirty & /*cancelIcon*/8) {\n transition_in(if_block1, 1);\n }\n } else {\n if_block1 = create_if_block$2(ctx);\n if_block1.c();\n transition_in(if_block1, 1);\n if_block1.m(header, null);\n }\n } else if (if_block1) {\n group_outros();\n transition_out(if_block1, 1, 1, function () {\n if_block1 = null;\n });\n check_outros();\n }\n },\n i: function i(local) {\n if (current) return;\n transition_in(if_block0);\n transition_in(if_block1);\n current = true;\n },\n o: function o(local) {\n transition_out(if_block0);\n transition_out(if_block1);\n current = false;\n },\n d: function d(detaching) {\n if (detaching) detach(header);\n if (if_block0) if_block0.d();\n if (if_block1) if_block1.d();\n }\n };\n }\n function instance$4($$self, $$props, $$invalidate) {\n var labelId = $$props.labelId,\n step = $$props.step;\n var title, cancelIcon;\n $$self.$$set = function ($$props) {\n if ('labelId' in $$props) $$invalidate(0, labelId = $$props.labelId);\n if ('step' in $$props) $$invalidate(1, step = $$props.step);\n };\n $$self.$$.update = function () {\n if ($$self.$$.dirty & /*step*/2) {\n {\n $$invalidate(2, title = step.options.title);\n $$invalidate(3, cancelIcon = step.options.cancelIcon);\n }\n }\n };\n return [labelId, step, title, cancelIcon];\n }\n var Shepherd_header = /*#__PURE__*/function (_SvelteComponent5) {\n function Shepherd_header(options) {\n var _this7;\n _classCallCheck(this, Shepherd_header);\n _this7 = _callSuper(this, Shepherd_header);\n init(_this7, options, instance$4, create_fragment$4, safe_not_equal, {\n labelId: 0,\n step: 1\n });\n return _this7;\n }\n _inherits(Shepherd_header, _SvelteComponent5);\n return _createClass(Shepherd_header);\n }(SvelteComponent);\n /* src/js/components/shepherd-text.svelte generated by Svelte v3.59.2 */\n function create_fragment$3(ctx) {\n var div;\n return {\n c: function c() {\n div = element(\"div\");\n attr(div, \"class\", \"shepherd-text\");\n attr(div, \"id\", /*descriptionId*/ctx[1]);\n },\n m: function m(target, anchor) {\n insert(target, div, anchor);\n /*div_binding*/\n ctx[3](div);\n },\n p: function p(ctx, _ref19) {\n var _ref20 = _slicedToArray(_ref19, 1),\n dirty = _ref20[0];\n if (dirty & /*descriptionId*/2) {\n attr(div, \"id\", /*descriptionId*/ctx[1]);\n }\n },\n i: noop,\n o: noop,\n d: function d(detaching) {\n if (detaching) detach(div);\n /*div_binding*/\n ctx[3](null);\n }\n };\n }\n function instance$3($$self, $$props, $$invalidate) {\n var descriptionId = $$props.descriptionId,\n element = $$props.element,\n step = $$props.step;\n afterUpdate(function () {\n var text = step.options.text;\n if (isFunction(text)) {\n text = text.call(step);\n }\n if (isHTMLElement$1(text)) {\n element.appendChild(text);\n } else {\n $$invalidate(0, element.innerHTML = text, element);\n }\n });\n function div_binding($$value) {\n binding_callbacks[$$value ? 'unshift' : 'push'](function () {\n element = $$value;\n $$invalidate(0, element);\n });\n }\n $$self.$$set = function ($$props) {\n if ('descriptionId' in $$props) $$invalidate(1, descriptionId = $$props.descriptionId);\n if ('element' in $$props) $$invalidate(0, element = $$props.element);\n if ('step' in $$props) $$invalidate(2, step = $$props.step);\n };\n return [element, descriptionId, step, div_binding];\n }\n var Shepherd_text = /*#__PURE__*/function (_SvelteComponent6) {\n function Shepherd_text(options) {\n var _this8;\n _classCallCheck(this, Shepherd_text);\n _this8 = _callSuper(this, Shepherd_text);\n init(_this8, options, instance$3, create_fragment$3, safe_not_equal, {\n descriptionId: 1,\n element: 0,\n step: 2\n });\n return _this8;\n }\n _inherits(Shepherd_text, _SvelteComponent6);\n return _createClass(Shepherd_text);\n }(SvelteComponent);\n /* src/js/components/shepherd-content.svelte generated by Svelte v3.59.2 */\n function create_if_block_2(ctx) {\n var shepherdheader;\n var current;\n shepherdheader = new Shepherd_header({\n props: {\n labelId: /*labelId*/ctx[1],\n step: /*step*/ctx[2]\n }\n });\n return {\n c: function c() {\n create_component(shepherdheader.$$.fragment);\n },\n m: function m(target, anchor) {\n mount_component(shepherdheader, target, anchor);\n current = true;\n },\n p: function p(ctx, dirty) {\n var shepherdheader_changes = {};\n if (dirty & /*labelId*/2) shepherdheader_changes.labelId = /*labelId*/ctx[1];\n if (dirty & /*step*/4) shepherdheader_changes.step = /*step*/ctx[2];\n shepherdheader.$set(shepherdheader_changes);\n },\n i: function i(local) {\n if (current) return;\n transition_in(shepherdheader.$$.fragment, local);\n current = true;\n },\n o: function o(local) {\n transition_out(shepherdheader.$$.fragment, local);\n current = false;\n },\n d: function d(detaching) {\n destroy_component(shepherdheader, detaching);\n }\n };\n }\n\n // (28:2) {#if !isUndefined(step.options.text)}\n function create_if_block_1(ctx) {\n var shepherdtext;\n var current;\n shepherdtext = new Shepherd_text({\n props: {\n descriptionId: /*descriptionId*/ctx[0],\n step: /*step*/ctx[2]\n }\n });\n return {\n c: function c() {\n create_component(shepherdtext.$$.fragment);\n },\n m: function m(target, anchor) {\n mount_component(shepherdtext, target, anchor);\n current = true;\n },\n p: function p(ctx, dirty) {\n var shepherdtext_changes = {};\n if (dirty & /*descriptionId*/1) shepherdtext_changes.descriptionId = /*descriptionId*/ctx[0];\n if (dirty & /*step*/4) shepherdtext_changes.step = /*step*/ctx[2];\n shepherdtext.$set(shepherdtext_changes);\n },\n i: function i(local) {\n if (current) return;\n transition_in(shepherdtext.$$.fragment, local);\n current = true;\n },\n o: function o(local) {\n transition_out(shepherdtext.$$.fragment, local);\n current = false;\n },\n d: function d(detaching) {\n destroy_component(shepherdtext, detaching);\n }\n };\n }\n\n // (35:2) {#if Array.isArray(step.options.buttons) && step.options.buttons.length}\n function create_if_block$1(ctx) {\n var shepherdfooter;\n var current;\n shepherdfooter = new Shepherd_footer({\n props: {\n step: /*step*/ctx[2]\n }\n });\n return {\n c: function c() {\n create_component(shepherdfooter.$$.fragment);\n },\n m: function m(target, anchor) {\n mount_component(shepherdfooter, target, anchor);\n current = true;\n },\n p: function p(ctx, dirty) {\n var shepherdfooter_changes = {};\n if (dirty & /*step*/4) shepherdfooter_changes.step = /*step*/ctx[2];\n shepherdfooter.$set(shepherdfooter_changes);\n },\n i: function i(local) {\n if (current) return;\n transition_in(shepherdfooter.$$.fragment, local);\n current = true;\n },\n o: function o(local) {\n transition_out(shepherdfooter.$$.fragment, local);\n current = false;\n },\n d: function d(detaching) {\n destroy_component(shepherdfooter, detaching);\n }\n };\n }\n function create_fragment$2(ctx) {\n var div;\n var show_if_2 = !isUndefined( /*step*/ctx[2].options.title) || /*step*/ctx[2].options.cancelIcon && /*step*/ctx[2].options.cancelIcon.enabled;\n var t0;\n var show_if_1 = !isUndefined( /*step*/ctx[2].options.text);\n var t1;\n var show_if = Array.isArray( /*step*/ctx[2].options.buttons) && /*step*/ctx[2].options.buttons.length;\n var current;\n var if_block0 = show_if_2 && create_if_block_2(ctx);\n var if_block1 = show_if_1 && create_if_block_1(ctx);\n var if_block2 = show_if && create_if_block$1(ctx);\n return {\n c: function c() {\n div = element(\"div\");\n if (if_block0) if_block0.c();\n t0 = space();\n if (if_block1) if_block1.c();\n t1 = space();\n if (if_block2) if_block2.c();\n attr(div, \"class\", \"shepherd-content\");\n },\n m: function m(target, anchor) {\n insert(target, div, anchor);\n if (if_block0) if_block0.m(div, null);\n append(div, t0);\n if (if_block1) if_block1.m(div, null);\n append(div, t1);\n if (if_block2) if_block2.m(div, null);\n current = true;\n },\n p: function p(ctx, _ref21) {\n var _ref22 = _slicedToArray(_ref21, 1),\n dirty = _ref22[0];\n if (dirty & /*step*/4) show_if_2 = !isUndefined( /*step*/ctx[2].options.title) || /*step*/ctx[2].options.cancelIcon && /*step*/ctx[2].options.cancelIcon.enabled;\n if (show_if_2) {\n if (if_block0) {\n if_block0.p(ctx, dirty);\n if (dirty & /*step*/4) {\n transition_in(if_block0, 1);\n }\n } else {\n if_block0 = create_if_block_2(ctx);\n if_block0.c();\n transition_in(if_block0, 1);\n if_block0.m(div, t0);\n }\n } else if (if_block0) {\n group_outros();\n transition_out(if_block0, 1, 1, function () {\n if_block0 = null;\n });\n check_outros();\n }\n if (dirty & /*step*/4) show_if_1 = !isUndefined( /*step*/ctx[2].options.text);\n if (show_if_1) {\n if (if_block1) {\n if_block1.p(ctx, dirty);\n if (dirty & /*step*/4) {\n transition_in(if_block1, 1);\n }\n } else {\n if_block1 = create_if_block_1(ctx);\n if_block1.c();\n transition_in(if_block1, 1);\n if_block1.m(div, t1);\n }\n } else if (if_block1) {\n group_outros();\n transition_out(if_block1, 1, 1, function () {\n if_block1 = null;\n });\n check_outros();\n }\n if (dirty & /*step*/4) show_if = Array.isArray( /*step*/ctx[2].options.buttons) && /*step*/ctx[2].options.buttons.length;\n if (show_if) {\n if (if_block2) {\n if_block2.p(ctx, dirty);\n if (dirty & /*step*/4) {\n transition_in(if_block2, 1);\n }\n } else {\n if_block2 = create_if_block$1(ctx);\n if_block2.c();\n transition_in(if_block2, 1);\n if_block2.m(div, null);\n }\n } else if (if_block2) {\n group_outros();\n transition_out(if_block2, 1, 1, function () {\n if_block2 = null;\n });\n check_outros();\n }\n },\n i: function i(local) {\n if (current) return;\n transition_in(if_block0);\n transition_in(if_block1);\n transition_in(if_block2);\n current = true;\n },\n o: function o(local) {\n transition_out(if_block0);\n transition_out(if_block1);\n transition_out(if_block2);\n current = false;\n },\n d: function d(detaching) {\n if (detaching) detach(div);\n if (if_block0) if_block0.d();\n if (if_block1) if_block1.d();\n if (if_block2) if_block2.d();\n }\n };\n }\n function instance$2($$self, $$props, $$invalidate) {\n var descriptionId = $$props.descriptionId,\n labelId = $$props.labelId,\n step = $$props.step;\n $$self.$$set = function ($$props) {\n if ('descriptionId' in $$props) $$invalidate(0, descriptionId = $$props.descriptionId);\n if ('labelId' in $$props) $$invalidate(1, labelId = $$props.labelId);\n if ('step' in $$props) $$invalidate(2, step = $$props.step);\n };\n return [descriptionId, labelId, step];\n }\n var Shepherd_content = /*#__PURE__*/function (_SvelteComponent7) {\n function Shepherd_content(options) {\n var _this9;\n _classCallCheck(this, Shepherd_content);\n _this9 = _callSuper(this, Shepherd_content);\n init(_this9, options, instance$2, create_fragment$2, safe_not_equal, {\n descriptionId: 0,\n labelId: 1,\n step: 2\n });\n return _this9;\n }\n _inherits(Shepherd_content, _SvelteComponent7);\n return _createClass(Shepherd_content);\n }(SvelteComponent);\n /* src/js/components/shepherd-element.svelte generated by Svelte v3.59.2 */\n function create_if_block(ctx) {\n var div;\n return {\n c: function c() {\n div = element(\"div\");\n attr(div, \"class\", \"shepherd-arrow\");\n attr(div, \"data-popper-arrow\", \"\");\n },\n m: function m(target, anchor) {\n insert(target, div, anchor);\n },\n d: function d(detaching) {\n if (detaching) detach(div);\n }\n };\n }\n function create_fragment$1(ctx) {\n var div;\n var t;\n var shepherdcontent;\n var div_aria_describedby_value;\n var div_aria_labelledby_value;\n var current;\n var mounted;\n var dispose;\n var if_block = /*step*/ctx[4].options.arrow && /*step*/ctx[4].options.attachTo && /*step*/ctx[4].options.attachTo.element && /*step*/ctx[4].options.attachTo.on && create_if_block();\n shepherdcontent = new Shepherd_content({\n props: {\n descriptionId: /*descriptionId*/ctx[2],\n labelId: /*labelId*/ctx[3],\n step: /*step*/ctx[4]\n }\n });\n var div_levels = [{\n \"aria-describedby\": div_aria_describedby_value = !isUndefined( /*step*/ctx[4].options.text) ? /*descriptionId*/ctx[2] : null\n }, {\n \"aria-labelledby\": div_aria_labelledby_value = /*step*/ctx[4].options.title ? /*labelId*/ctx[3] : null\n }, /*dataStepId*/ctx[1], {\n role: \"dialog\"\n }, {\n tabindex: \"0\"\n }];\n var div_data = {};\n for (var i = 0; i < div_levels.length; i += 1) {\n div_data = assign(div_data, div_levels[i]);\n }\n return {\n c: function c() {\n div = element(\"div\");\n if (if_block) if_block.c();\n t = space();\n create_component(shepherdcontent.$$.fragment);\n set_attributes(div, div_data);\n toggle_class(div, \"shepherd-has-cancel-icon\", /*hasCancelIcon*/ctx[5]);\n toggle_class(div, \"shepherd-has-title\", /*hasTitle*/ctx[6]);\n toggle_class(div, \"shepherd-element\", true);\n },\n m: function m(target, anchor) {\n insert(target, div, anchor);\n if (if_block) if_block.m(div, null);\n append(div, t);\n mount_component(shepherdcontent, div, null);\n /*div_binding*/\n ctx[13](div);\n current = true;\n if (!mounted) {\n dispose = listen(div, \"keydown\", /*handleKeyDown*/ctx[7]);\n mounted = true;\n }\n },\n p: function p(ctx, _ref23) {\n var _ref24 = _slicedToArray(_ref23, 1),\n dirty = _ref24[0];\n if ( /*step*/ctx[4].options.arrow && /*step*/ctx[4].options.attachTo && /*step*/ctx[4].options.attachTo.element && /*step*/ctx[4].options.attachTo.on) {\n if (if_block) ;else {\n if_block = create_if_block();\n if_block.c();\n if_block.m(div, t);\n }\n } else if (if_block) {\n if_block.d(1);\n if_block = null;\n }\n var shepherdcontent_changes = {};\n if (dirty & /*descriptionId*/4) shepherdcontent_changes.descriptionId = /*descriptionId*/ctx[2];\n if (dirty & /*labelId*/8) shepherdcontent_changes.labelId = /*labelId*/ctx[3];\n if (dirty & /*step*/16) shepherdcontent_changes.step = /*step*/ctx[4];\n shepherdcontent.$set(shepherdcontent_changes);\n set_attributes(div, div_data = get_spread_update(div_levels, [(!current || dirty & /*step, descriptionId*/20 && div_aria_describedby_value !== (div_aria_describedby_value = !isUndefined( /*step*/ctx[4].options.text) ? /*descriptionId*/ctx[2] : null)) && {\n \"aria-describedby\": div_aria_describedby_value\n }, (!current || dirty & /*step, labelId*/24 && div_aria_labelledby_value !== (div_aria_labelledby_value = /*step*/ctx[4].options.title ? /*labelId*/ctx[3] : null)) && {\n \"aria-labelledby\": div_aria_labelledby_value\n }, dirty & /*dataStepId*/2 && /*dataStepId*/ctx[1], {\n role: \"dialog\"\n }, {\n tabindex: \"0\"\n }]));\n toggle_class(div, \"shepherd-has-cancel-icon\", /*hasCancelIcon*/ctx[5]);\n toggle_class(div, \"shepherd-has-title\", /*hasTitle*/ctx[6]);\n toggle_class(div, \"shepherd-element\", true);\n },\n i: function i(local) {\n if (current) return;\n transition_in(shepherdcontent.$$.fragment, local);\n current = true;\n },\n o: function o(local) {\n transition_out(shepherdcontent.$$.fragment, local);\n current = false;\n },\n d: function d(detaching) {\n if (detaching) detach(div);\n if (if_block) if_block.d();\n destroy_component(shepherdcontent);\n /*div_binding*/\n ctx[13](null);\n mounted = false;\n dispose();\n }\n };\n }\n var KEY_TAB = 9;\n var KEY_ESC = 27;\n var LEFT_ARROW = 37;\n var RIGHT_ARROW = 39;\n function getClassesArray(classes) {\n return classes.split(' ').filter(function (className) {\n return !!className.length;\n });\n }\n function instance$1($$self, $$props, $$invalidate) {\n var classPrefix = $$props.classPrefix,\n element = $$props.element,\n descriptionId = $$props.descriptionId,\n firstFocusableElement = $$props.firstFocusableElement,\n focusableElements = $$props.focusableElements,\n labelId = $$props.labelId,\n lastFocusableElement = $$props.lastFocusableElement,\n step = $$props.step,\n dataStepId = $$props.dataStepId;\n var hasCancelIcon, hasTitle, classes;\n var getElement = function getElement() {\n return element;\n };\n onMount(function () {\n // Get all elements that are focusable\n $$invalidate(1, dataStepId = _defineProperty({}, \"data-\".concat(classPrefix, \"shepherd-step-id\"), step.id));\n $$invalidate(9, focusableElements = element.querySelectorAll('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex=\"0\"]'));\n $$invalidate(8, firstFocusableElement = focusableElements[0]);\n $$invalidate(10, lastFocusableElement = focusableElements[focusableElements.length - 1]);\n });\n afterUpdate(function () {\n if (classes !== step.options.classes) {\n updateDynamicClasses();\n }\n });\n function updateDynamicClasses() {\n removeClasses(classes);\n classes = step.options.classes;\n addClasses(classes);\n }\n function removeClasses(classes) {\n if (isString(classes)) {\n var oldClasses = getClassesArray(classes);\n if (oldClasses.length) {\n var _element$classList;\n (_element$classList = element.classList).remove.apply(_element$classList, _toConsumableArray(oldClasses));\n }\n }\n }\n function addClasses(classes) {\n if (isString(classes)) {\n var newClasses = getClassesArray(classes);\n if (newClasses.length) {\n var _element$classList2;\n (_element$classList2 = element.classList).add.apply(_element$classList2, _toConsumableArray(newClasses));\n }\n }\n }\n\n /**\n * Setup keydown events to allow closing the modal with ESC\n *\n * Borrowed from this great post! https://bitsofco.de/accessible-modal-dialog/\n *\n * @private\n */\n var handleKeyDown = function handleKeyDown(e) {\n var _step = step,\n tour = _step.tour;\n switch (e.keyCode) {\n case KEY_TAB:\n if (focusableElements.length === 0) {\n e.preventDefault();\n break;\n }\n // Backward tab\n if (e.shiftKey) {\n if (document.activeElement === firstFocusableElement || document.activeElement.classList.contains('shepherd-element')) {\n e.preventDefault();\n lastFocusableElement.focus();\n }\n } else {\n if (document.activeElement === lastFocusableElement) {\n e.preventDefault();\n firstFocusableElement.focus();\n }\n }\n break;\n case KEY_ESC:\n if (tour.options.exitOnEsc) {\n e.stopPropagation();\n step.cancel();\n }\n break;\n case LEFT_ARROW:\n if (tour.options.keyboardNavigation) {\n e.stopPropagation();\n tour.back();\n }\n break;\n case RIGHT_ARROW:\n if (tour.options.keyboardNavigation) {\n e.stopPropagation();\n tour.next();\n }\n break;\n }\n };\n function div_binding($$value) {\n binding_callbacks[$$value ? 'unshift' : 'push'](function () {\n element = $$value;\n $$invalidate(0, element);\n });\n }\n $$self.$$set = function ($$props) {\n if ('classPrefix' in $$props) $$invalidate(11, classPrefix = $$props.classPrefix);\n if ('element' in $$props) $$invalidate(0, element = $$props.element);\n if ('descriptionId' in $$props) $$invalidate(2, descriptionId = $$props.descriptionId);\n if ('firstFocusableElement' in $$props) $$invalidate(8, firstFocusableElement = $$props.firstFocusableElement);\n if ('focusableElements' in $$props) $$invalidate(9, focusableElements = $$props.focusableElements);\n if ('labelId' in $$props) $$invalidate(3, labelId = $$props.labelId);\n if ('lastFocusableElement' in $$props) $$invalidate(10, lastFocusableElement = $$props.lastFocusableElement);\n if ('step' in $$props) $$invalidate(4, step = $$props.step);\n if ('dataStepId' in $$props) $$invalidate(1, dataStepId = $$props.dataStepId);\n };\n $$self.$$.update = function () {\n if ($$self.$$.dirty & /*step*/16) {\n {\n $$invalidate(5, hasCancelIcon = step.options && step.options.cancelIcon && step.options.cancelIcon.enabled);\n $$invalidate(6, hasTitle = step.options && step.options.title);\n }\n }\n };\n return [element, dataStepId, descriptionId, labelId, step, hasCancelIcon, hasTitle, handleKeyDown, firstFocusableElement, focusableElements, lastFocusableElement, classPrefix, getElement, div_binding];\n }\n var Shepherd_element = /*#__PURE__*/function (_SvelteComponent8) {\n function Shepherd_element(options) {\n var _this10;\n _classCallCheck(this, Shepherd_element);\n _this10 = _callSuper(this, Shepherd_element);\n init(_this10, options, instance$1, create_fragment$1, safe_not_equal, {\n classPrefix: 11,\n element: 0,\n descriptionId: 2,\n firstFocusableElement: 8,\n focusableElements: 9,\n labelId: 3,\n lastFocusableElement: 10,\n step: 4,\n dataStepId: 1,\n getElement: 12\n });\n return _this10;\n }\n _inherits(Shepherd_element, _SvelteComponent8);\n return _createClass(Shepherd_element, [{\n key: \"getElement\",\n get: function get() {\n return this.$$.ctx[12];\n }\n }]);\n }(SvelteComponent);\n /**\n * A class representing steps to be added to a tour.\n * @extends {Evented}\n */\n var Step = /*#__PURE__*/function (_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 {boolean} options.arrow Whether to display the arrow for the tooltip or not. Defaults to `true`.\n * @param {object} options.attachTo The element the step should be attached to on the page.\n * An object with properties `element` and `on`.\n *\n * ```js\n * const step = new Step(tour, {\n * attachTo: { element: '.some .selector-path', on: 'left' },\n * ...moreOptions\n * });\n * ```\n *\n * If you dont specify an `attachTo` the element will appear in the middle of the screen. The same will happen if your `attachTo.element` callback returns `null`, `undefined`, or a selector that does not exist in the DOM.\n * If you omit the `on` portion of `attachTo`, the element will still be highlighted, but the tooltip will appear\n * in the middle of the screen, without an arrow pointing to the target.\n * If the element to highlight does not yet exist while instantiating tour steps, you may use lazy evaluation by supplying a function to `attachTo.element`. The function will be called in the `before-show` phase.\n * @param {string|HTMLElement|function} options.attachTo.element An element selector string, DOM element, or a function (returning a selector, a DOM element, `null` or `undefined`).\n * @param {string} options.attachTo.on The optional direction to place the FloatingUI tooltip relative to the element.\n * - Possible string values: 'top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end', 'right', 'right-start', 'right-end', 'left', 'left-start', 'left-end'\n * @param {Object} options.advanceOn An action on the page which should advance shepherd to the next step.\n * It should be an object with a string `selector` and an `event` name\n * ```js\n * const step = new Step(tour, {\n * advanceOn: { selector: '.some .selector-path', event: 'click' },\n * ...moreOptions\n * });\n * ```\n * `event` doesnt 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 * It is automatically bound to the `tour` the step is associated with, so things like `this.next` will\n * work inside the action.\n * You can use action to skip steps or navigate to specific steps, with something like:\n * ```js\n * action() {\n * return this.show('some_step_name');\n * }\n * ```\n * @param {string} options.buttons.button.classes Extra classes to apply to the `<a>`\n * @param {boolean} options.buttons.button.disabled Should the button be disabled?\n * @param {string} options.buttons.button.label The aria-label text of the button\n * @param {boolean} options.buttons.button.secondary If true, a shepherd-button-secondary class is applied to the button\n * @param {string} options.buttons.button.text The HTML text of the button\n * @param {boolean} options.canClickTarget A boolean, that when set to false, will set `pointer-events: none` on the target\n * @param {object} options.cancelIcon Options for the cancel icon\n * @param {boolean} options.cancelIcon.enabled Should a cancel “✕” be shown in the header of the step?\n * @param {string} options.cancelIcon.label The label to add for `aria-label`\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 {string} options.id The string to use as the `id` for the step.\n * @param {number} options.modalOverlayOpeningPadding An amount of padding to add around the modal overlay opening\n * @param {number | { topLeft: number, bottomLeft: number, bottomRight: number, topRight: number }} options.modalOverlayOpeningRadius An amount of border radius to add around the modal overlay opening\n * @param {object} options.floatingUIOptions Extra options to pass to FloatingUI\n * @param {boolean|Object} options.scrollTo Should the element be scrolled to when this step is shown? If true, uses the default `scrollIntoView`,\n * if an object, passes that object as the params to `scrollIntoView` i.e. `{behavior: 'smooth', block: 'center'}`\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 {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 three types:\n * ```\n * - HTML string\n * - `HTMLElement` object\n * - `Function` to be executed when the step is built. It must return one the two options above.\n * ```\n * @param {string} options.title The step's title. It becomes an `h3` at the top of the step. It can be one of two types:\n * ```\n * - HTML string\n * - `Function` to be executed when the step is built. It must return HTML string.\n * ```\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 function Step(tour) {\n var _this11;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Step);\n _this11 = _callSuper(this, Step, [tour, options]);\n _this11.tour = tour;\n _this11.classPrefix = _this11.tour.options ? normalizePrefix(_this11.tour.options.classPrefix) : '';\n _this11.styles = tour.styles;\n\n /**\n * Resolved attachTo options. Due to lazy evaluation, we only resolve the options during `before-show` phase.\n * Do not use this directly, use the _getResolvedAttachToOptions method instead.\n * @type {null|{}|{element, to}}\n * @private\n */\n _this11._resolvedAttachTo = null;\n autoBind(_this11);\n _this11._setOptions(options);\n return _possibleConstructorReturn(_this11, _this11);\n }\n\n /**\n * Cancel the tour\n * Triggers the `cancel` event\n */\n _inherits(Step, _Evented);\n return _createClass(Step, [{\n key: \"cancel\",\n value: function cancel() {\n this.tour.cancel();\n this.trigger('cancel');\n }\n\n /**\n * Complete the tour\n * Triggers the `complete` event\n */\n }, {\n key: \"complete\",\n value: function complete() {\n this.tour.complete();\n this.trigger('complete');\n }\n\n /**\n * Remove the step, delete the step's element, and destroy the FloatingUI instance for the step.\n * Triggers `destroy` event\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n destroyTooltip(this);\n if (isHTMLElement$1(this.el)) {\n this.el.remove();\n this.el = null;\n }\n this._updateStepTargetOnHide();\n this.trigger('destroy');\n }\n\n /**\n * Returns the tour for the step\n * @return {Tour} The tour instance\n */\n }, {\n key: \"getTour\",\n value: function getTour() {\n return this.tour;\n }\n\n /**\n * Hide the step\n */\n }, {\n key: \"hide\",\n value: function hide() {\n this.tour.modal.hide();\n this.trigger('before-hide');\n if (this.el) {\n this.el.hidden = true;\n }\n this._updateStepTargetOnHide();\n this.trigger('hide');\n }\n\n /**\n * Resolves attachTo options.\n * @returns {{}|{element, on}}\n * @private\n */\n }, {\n key: \"_resolveAttachToOptions\",\n value: function _resolveAttachToOptions() {\n this._resolvedAttachTo = parseAttachTo(this);\n return this._resolvedAttachTo;\n }\n\n /**\n * A selector for resolved attachTo options.\n * @returns {{}|{element, on}}\n * @private\n */\n }, {\n key: \"_getResolvedAttachToOptions\",\n value: function _getResolvedAttachToOptions() {\n if (this._resolvedAttachTo === null) {\n return this._resolveAttachToOptions();\n }\n return this._resolvedAttachTo;\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 }, {\n key: \"isOpen\",\n value: function isOpen() {\n return Boolean(this.el && !this.el.hidden);\n }\n\n /**\n * Wraps `_show` and ensures `beforeShowPromise` resolves before calling show\n * @return {*|Promise}\n */\n }, {\n key: \"show\",\n value: function show() {\n var _this12 = this;\n if (isFunction(this.options.beforeShowPromise)) {\n return Promise.resolve(this.options.beforeShowPromise()).then(function () {\n return _this12._show();\n });\n }\n return Promise.resolve(this._show());\n }\n\n /**\n * Updates the options of the step.\n *\n * @param {Object} options The options for the step\n */\n }, {\n key: \"updateStepOptions\",\n value: function updateStepOptions(options) {\n Object.assign(this.options, options);\n if (this.shepherdElementComponent) {\n this.shepherdElementComponent.$set({\n step: this\n });\n }\n }\n\n /**\n * Returns the element for the step\n * @return {HTMLElement|null|undefined} The element instance. undefined if it has never been shown, null if it has been destroyed\n */\n }, {\n key: \"getElement\",\n value: function getElement() {\n return this.el;\n }\n\n /**\n * Returns the target for the step\n * @return {HTMLElement|null|undefined} The element instance. undefined if it has never been shown, null if query string has not been found\n */\n }, {\n key: \"getTarget\",\n value: function getTarget() {\n return this.target;\n }\n\n /**\n * Creates Shepherd element for step based on options\n *\n * @return {Element} The DOM element for the step tooltip\n * @private\n */\n }, {\n key: \"_createTooltipContent\",\n value: function _createTooltipContent() {\n var descriptionId = \"\".concat(this.id, \"-description\");\n var labelId = \"\".concat(this.id, \"-label\");\n this.shepherdElementComponent = new Shepherd_element({\n target: this.tour.options.stepsContainer || document.body,\n props: {\n classPrefix: this.classPrefix,\n descriptionId: descriptionId,\n labelId: labelId,\n step: this,\n styles: this.styles\n }\n });\n return this.shepherdElementComponent.getElement();\n }\n\n /**\n * If a custom scrollToHandler is defined, call that, otherwise do the generic\n * scrollIntoView call.\n *\n * @param {boolean|Object} scrollToOptions If true, uses the default `scrollIntoView`,\n * if an object, passes that object as the params to `scrollIntoView` i.e. `{ behavior: 'smooth', block: 'center' }`\n * @private\n */\n }, {\n key: \"_scrollTo\",\n value: function _scrollTo(scrollToOptions) {\n var _this$_getResolvedAtt = this._getResolvedAttachToOptions(),\n element = _this$_getResolvedAtt.element;\n if (isFunction(this.options.scrollToHandler)) {\n this.options.scrollToHandler(element);\n } else if (isElement$1(element) && typeof element.scrollIntoView === 'function') {\n element.scrollIntoView(scrollToOptions);\n }\n }\n\n /**\n * _getClassOptions gets all possible classes for the step\n * @param {Object} stepOptions The step specific options\n * @returns {String} unique string from array of classes\n * @private\n */\n }, {\n key: \"_getClassOptions\",\n value: function _getClassOptions(stepOptions) {\n var defaultStepOptions = this.tour && this.tour.options && this.tour.options.defaultStepOptions;\n var stepClasses = stepOptions.classes ? stepOptions.classes : '';\n var defaultStepOptionsClasses = defaultStepOptions && defaultStepOptions.classes ? defaultStepOptions.classes : '';\n var allClasses = [].concat(_toConsumableArray(stepClasses.split(' ')), _toConsumableArray(defaultStepOptionsClasses.split(' ')));\n var uniqClasses = new Set(allClasses);\n return Array.from(uniqClasses).join(' ').trim();\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 * @private\n */\n }, {\n key: \"_setOptions\",\n value: function _setOptions() {\n var _this13 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var tourOptions = this.tour && this.tour.options && this.tour.options.defaultStepOptions;\n tourOptions = cjs({}, tourOptions || {});\n this.options = Object.assign({\n arrow: true\n }, tourOptions, options, mergeTooltipConfig(tourOptions, options));\n var when = this.options.when;\n this.options.classes = this._getClassOptions(options);\n this.destroy();\n this.id = this.options.id || \"step-\".concat(uuid());\n if (when) {\n Object.keys(when).forEach(function (event) {\n _this13.on(event, when[event], _this13);\n });\n }\n }\n\n /**\n * Create the element and set up the FloatingUI instance\n * @private\n */\n }, {\n key: \"_setupElements\",\n value: function _setupElements() {\n if (!isUndefined(this.el)) {\n this.destroy();\n }\n this.el = this._createTooltipContent();\n if (this.options.advanceOn) {\n bindAdvance(this);\n }\n\n // The tooltip implementation details are handled outside of the Step\n // object.\n setupTooltip(this);\n }\n\n /**\n * Triggers `before-show`, generates the tooltip DOM content,\n * sets up a FloatingUI instance for the tooltip, then triggers `show`.\n * @private\n */\n }, {\n key: \"_show\",\n value: function _show() {\n var _this14 = this;\n this.trigger('before-show');\n\n // Force resolve to make sure the options are updated on subsequent shows.\n this._resolveAttachToOptions();\n this._setupElements();\n if (!this.tour.modal) {\n this.tour._setupModal();\n }\n this.tour.modal.setupForStep(this);\n this._styleTargetElementForStep(this);\n this.el.hidden = false;\n\n // start scrolling to target before showing the step\n if (this.options.scrollTo) {\n setTimeout(function () {\n _this14._scrollTo(_this14.options.scrollTo);\n });\n }\n this.el.hidden = false;\n var content = this.shepherdElementComponent.getElement();\n var target = this.target || document.body;\n target.classList.add(\"\".concat(this.classPrefix, \"shepherd-enabled\"));\n target.classList.add(\"\".concat(this.classPrefix, \"shepherd-target\"));\n content.classList.add('shepherd-enabled');\n this.trigger('show');\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 }, {\n key: \"_styleTargetElementForStep\",\n value: function _styleTargetElementForStep(step) {\n var targetElement = step.target;\n if (!targetElement) {\n return;\n }\n if (step.options.highlightClass) {\n targetElement.classList.add(step.options.highlightClass);\n }\n targetElement.classList.remove('shepherd-target-click-disabled');\n if (step.options.canClickTarget === false) {\n targetElement.classList.add('shepherd-target-click-disabled');\n }\n }\n\n /**\n * When a step is hidden, remove the highlightClass and 'shepherd-enabled'\n * and 'shepherd-target' classes\n * @private\n */\n }, {\n key: \"_updateStepTargetOnHide\",\n value: function _updateStepTargetOnHide() {\n var target = this.target || document.body;\n if (this.options.highlightClass) {\n target.classList.remove(this.options.highlightClass);\n }\n target.classList.remove('shepherd-target-click-disabled', \"\".concat(this.classPrefix, \"shepherd-enabled\"), \"\".concat(this.classPrefix, \"shepherd-target\"));\n }\n }]);\n }(Evented);\n /**\n * Cleanup the steps and set pointerEvents back to 'auto'\n * @param tour The tour object\n */\n function cleanupSteps(tour) {\n if (tour) {\n var steps = tour.steps;\n steps.forEach(function (step) {\n if (step.options && step.options.canClickTarget === false && step.options.attachTo) {\n if (step.target instanceof HTMLElement) {\n step.target.classList.remove('shepherd-target-click-disabled');\n }\n }\n });\n }\n }\n\n /**\n * Generates the svg path data for a rounded rectangle overlay\n * @param {Object} dimension - Dimensions of rectangle.\n * @param {number} width - Width.\n * @param {number} height - Height.\n * @param {number} [x=0] - Offset from top left corner in x axis. default 0.\n * @param {number} [y=0] - Offset from top left corner in y axis. default 0.\n * @param {number | { topLeft: number, topRight: number, bottomRight: number, bottomLeft: number }} [r=0] - Corner Radius. Keep this smaller than half of width or height.\n * @returns {string} - Rounded rectangle overlay path data.\n */\n function makeOverlayPath(_ref25) {\n var width = _ref25.width,\n height = _ref25.height,\n _ref25$x = _ref25.x,\n x = _ref25$x === void 0 ? 0 : _ref25$x,\n _ref25$y = _ref25.y,\n y = _ref25$y === void 0 ? 0 : _ref25$y,\n _ref25$r = _ref25.r,\n r = _ref25$r === void 0 ? 0 : _ref25$r;\n var _window = window,\n w = _window.innerWidth,\n h = _window.innerHeight;\n var _ref26 = typeof r === 'number' ? {\n topLeft: r,\n topRight: r,\n bottomRight: r,\n bottomLeft: r\n } : r,\n _ref26$topLeft = _ref26.topLeft,\n topLeft = _ref26$topLeft === void 0 ? 0 : _ref26$topLeft,\n _ref26$topRight = _ref26.topRight,\n topRight = _ref26$topRight === void 0 ? 0 : _ref26$topRight,\n _ref26$bottomRight = _ref26.bottomRight,\n bottomRight = _ref26$bottomRight === void 0 ? 0 : _ref26$bottomRight,\n _ref26$bottomLeft = _ref26.bottomLeft,\n bottomLeft = _ref26$bottomLeft === void 0 ? 0 : _ref26$bottomLeft;\n return \"M\".concat(w, \",\").concat(h, \"H0V0H\").concat(w, \"V\").concat(h, \"ZM\").concat(x + topLeft, \",\").concat(y, \"a\").concat(topLeft, \",\").concat(topLeft, \",0,0,0-\").concat(topLeft, \",\").concat(topLeft, \"V\").concat(height + y - bottomLeft, \"a\").concat(bottomLeft, \",\").concat(bottomLeft, \",0,0,0,\").concat(bottomLeft, \",\").concat(bottomLeft, \"H\").concat(width + x - bottomRight, \"a\").concat(bottomRight, \",\").concat(bottomRight, \",0,0,0,\").concat(bottomRight, \"-\").concat(bottomRight, \"V\").concat(y + topRight, \"a\").concat(topRight, \",\").concat(topRight, \",0,0,0-\").concat(topRight, \"-\").concat(topRight, \"Z\");\n }\n\n /* src/js/components/shepherd-modal.svelte generated by Svelte v3.59.2 */\n function create_fragment(ctx) {\n var svg;\n var path;\n var svg_class_value;\n var mounted;\n var dispose;\n return {\n c: function c() {\n svg = svg_element(\"svg\");\n path = svg_element(\"path\");\n attr(path, \"d\", /*pathDefinition*/ctx[2]);\n attr(svg, \"class\", svg_class_value = \"\".concat( /*modalIsVisible*/ctx[1] ? 'shepherd-modal-is-visible' : '', \" shepherd-modal-overlay-container\"));\n },\n m: function m(target, anchor) {\n insert(target, svg, anchor);\n append(svg, path);\n /*svg_binding*/\n ctx[11](svg);\n if (!mounted) {\n dispose = listen(svg, \"touchmove\", /*_preventModalOverlayTouch*/ctx[3]);\n mounted = true;\n }\n },\n p: function p(ctx, _ref27) {\n var _ref28 = _slicedToArray(_ref27, 1),\n dirty = _ref28[0];\n if (dirty & /*pathDefinition*/4) {\n attr(path, \"d\", /*pathDefinition*/ctx[2]);\n }\n if (dirty & /*modalIsVisible*/2 && svg_class_value !== (svg_class_value = \"\".concat( /*modalIsVisible*/ctx[1] ? 'shepherd-modal-is-visible' : '', \" shepherd-modal-overlay-container\"))) {\n attr(svg, \"class\", svg_class_value);\n }\n },\n i: noop,\n o: noop,\n d: function d(detaching) {\n if (detaching) detach(svg);\n /*svg_binding*/\n ctx[11](null);\n mounted = false;\n dispose();\n }\n };\n }\n function _getScrollParent(element) {\n if (!element) {\n return null;\n }\n var isHtmlElement = element instanceof HTMLElement;\n var overflowY = isHtmlElement && window.getComputedStyle(element).overflowY;\n var isScrollable = overflowY !== 'hidden' && overflowY !== 'visible';\n if (isScrollable && element.scrollHeight >= element.clientHeight) {\n return element;\n }\n return _getScrollParent(element.parentElement);\n }\n\n /**\n * Get the visible height of the target element relative to its scrollParent.\n * If there is no scroll parent, the height of the element is returned.\n *\n * @param {HTMLElement} element The target element\n * @param {HTMLElement} [scrollParent] The scrollable parent element\n * @returns {{y: number, height: number}}\n * @private\n */\n function _getVisibleHeight(element, scrollParent) {\n var elementRect = element.getBoundingClientRect();\n var top = elementRect.y || elementRect.top;\n var bottom = elementRect.bottom || top + elementRect.height;\n if (scrollParent) {\n var scrollRect = scrollParent.getBoundingClientRect();\n var scrollTop = scrollRect.y || scrollRect.top;\n var scrollBottom = scrollRect.bottom || scrollTop + scrollRect.height;\n top = Math.max(top, scrollTop);\n bottom = Math.min(bottom, scrollBottom);\n }\n var height = Math.max(bottom - top, 0); // Default to 0 if height is negative\n return {\n y: top,\n height: height\n };\n }\n function instance($$self, $$props, $$invalidate) {\n var element = $$props.element,\n openingProperties = $$props.openingProperties;\n uuid();\n var modalIsVisible = false;\n var rafId = undefined;\n var pathDefinition;\n closeModalOpening();\n var getElement = function getElement() {\n return element;\n };\n function closeModalOpening() {\n $$invalidate(4, openingProperties = {\n width: 0,\n height: 0,\n x: 0,\n y: 0,\n r: 0\n });\n }\n function hide() {\n $$invalidate(1, modalIsVisible = false);\n\n // Ensure we cleanup all event listeners when we hide the modal\n _cleanupStepEventListeners();\n }\n function positionModal() {\n var modalOverlayOpeningPadding = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var modalOverlayOpeningRadius = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var scrollParent = arguments.length > 2 ? arguments[2] : undefined;\n var targetElement = arguments.length > 3 ? arguments[3] : undefined;\n if (targetElement) {\n var _getVisibleHeight2 = _getVisibleHeight(targetElement, scrollParent),\n y = _getVisibleHeight2.y,\n height = _getVisibleHeight2.height;\n var _targetElement$getBou = targetElement.getBoundingClientRect(),\n x = _targetElement$getBou.x,\n width = _targetElement$getBou.width,\n left = _targetElement$getBou.left;\n\n // getBoundingClientRect is not consistent. Some browsers use x and y, while others use left and top\n $$invalidate(4, openingProperties = {\n width: width + modalOverlayOpeningPadding * 2,\n height: height + modalOverlayOpeningPadding * 2,\n x: (x || left) - modalOverlayOpeningPadding,\n y: y - modalOverlayOpeningPadding,\n r: modalOverlayOpeningRadius\n });\n } else {\n closeModalOpening();\n }\n }\n function setupForStep(step) {\n // Ensure we move listeners from the previous step, before we setup new ones\n _cleanupStepEventListeners();\n if (step.tour.options.useModalOverlay) {\n _styleForStep(step);\n show();\n } else {\n hide();\n }\n }\n function show() {\n $$invalidate(1, modalIsVisible = true);\n }\n var _preventModalBodyTouch = function _preventModalBodyTouch(e) {\n e.preventDefault();\n };\n var _preventModalOverlayTouch = function _preventModalOverlayTouch(e) {\n e.stopPropagation();\n };\n\n /**\n * Add touchmove event listener\n * @private\n */\n function _addStepEventListeners() {\n // Prevents window from moving on touch.\n window.addEventListener('touchmove', _preventModalBodyTouch, {\n passive: false\n });\n }\n\n /**\n * Cancel the requestAnimationFrame loop and remove touchmove event listeners\n * @private\n */\n function _cleanupStepEventListeners() {\n if (rafId) {\n cancelAnimationFrame(rafId);\n rafId = undefined;\n }\n window.removeEventListener('touchmove', _preventModalBodyTouch, {\n passive: false\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 function _styleForStep(step) {\n var _step$options = step.options,\n modalOverlayOpeningPadding = _step$options.modalOverlayOpeningPadding,\n modalOverlayOpeningRadius = _step$options.modalOverlayOpeningRadius;\n var scrollParent = _getScrollParent(step.target);\n\n // Setup recursive function to call requestAnimationFrame to update the modal opening position\n var rafLoop = function rafLoop() {\n rafId = undefined;\n positionModal(modalOverlayOpeningPadding, modalOverlayOpeningRadius, scrollParent, step.target);\n rafId = requestAnimationFrame(rafLoop);\n };\n rafLoop();\n _addStepEventListeners();\n }\n function svg_binding($$value) {\n binding_callbacks[$$value ? 'unshift' : 'push'](function () {\n element = $$value;\n $$invalidate(0, element);\n });\n }\n $$self.$$set = function ($$props) {\n if ('element' in $$props) $$invalidate(0, element = $$props.element);\n if ('openingProperties' in $$props) $$invalidate(4, openingProperties = $$props.openingProperties);\n };\n $$self.$$.update = function () {\n if ($$self.$$.dirty & /*openingProperties*/16) {\n $$invalidate(2, pathDefinition = makeOverlayPath(openingProperties));\n }\n };\n return [element, modalIsVisible, pathDefinition, _preventModalOverlayTouch, openingProperties, getElement, closeModalOpening, hide, positionModal, setupForStep, show, svg_binding];\n }\n var Shepherd_modal = /*#__PURE__*/function (_SvelteComponent9) {\n function Shepherd_modal(options) {\n var _this15;\n _classCallCheck(this, Shepherd_modal);\n _this15 = _callSuper(this, Shepherd_modal);\n init(_this15, options, instance, create_fragment, safe_not_equal, {\n element: 0,\n openingProperties: 4,\n getElement: 5,\n closeModalOpening: 6,\n hide: 7,\n positionModal: 8,\n setupForStep: 9,\n show: 10\n });\n return _this15;\n }\n _inherits(Shepherd_modal, _SvelteComponent9);\n return _createClass(Shepherd_modal, [{\n key: \"getElement\",\n get: function get() {\n return this.$$.ctx[5];\n }\n }, {\n key: \"closeModalOpening\",\n get: function get() {\n return this.$$.ctx[6];\n }\n }, {\n key: \"hide\",\n get: function get() {\n return this.$$.ctx[7];\n }\n }, {\n key: \"positionModal\",\n get: function get() {\n return this.$$.ctx[8];\n }\n }, {\n key: \"setupForStep\",\n get: function get() {\n return this.$$.ctx[9];\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.$$.ctx[10];\n }\n }]);\n }(SvelteComponent);\n var Shepherd = new Evented();\n\n /**\n * Class representing the site tour\n * @extends {Evented}\n */\n var Tour = /*#__PURE__*/function (_Evented2) {\n /**\n * @param {Object} options The options for the tour\n * @param {boolean | function(): boolean | Promise<boolean> | function(): Promise<boolean>} options.confirmCancel If true, will issue a `window.confirm` before cancelling.\n * If it is a function(support Async Function), it will be called and wait for the return value, and will only be cancelled if the value returned is true\n * @param {string} options.confirmCancelMessage The message to display in the `window.confirm` dialog\n * @param {string} options.classPrefix The prefix to add to the `shepherd-enabled` and `shepherd-target` class names as well as the `data-shepherd-step-id`.\n * @param {Object} options.defaultStepOptions Default options for Steps ({@link Step#constructor}), created through `addStep`\n * @param {boolean} options.exitOnEsc Exiting the tour with the escape key will be enabled unless this is explicitly\n * set to false.\n * @param {boolean} options.keyboardNavigation Navigating the tour via left and right arrow keys will be enabled\n * unless this is explicitly set to false.\n * @param {HTMLElement} options.stepsContainer An optional container element for the steps.\n * If not set, the steps will be appended to `document.body`.\n * @param {HTMLElement} options.modalContainer An optional container element for the modal.\n * If not set, the modal will be appended to `document.body`.\n * @param {object[] | Step[]} options.steps An array of step options objects or 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.\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 function Tour() {\n var _this16;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Tour);\n _this16 = _callSuper(this, Tour, [options]);\n autoBind(_this16);\n var defaultTourOptions = {\n exitOnEsc: true,\n keyboardNavigation: true\n };\n _this16.options = Object.assign({}, defaultTourOptions, options);\n _this16.classPrefix = normalizePrefix(_this16.options.classPrefix);\n _this16.steps = [];\n _this16.addSteps(_this16.options.steps);\n\n // Pass these events onto the global Shepherd object\n var events = ['active', 'cancel', 'complete', 'inactive', 'show', 'start'];\n events.map(function (event) {\n (function (e) {\n _this16.on(e, function (opts) {\n opts = opts || {};\n opts.tour = _this16;\n Shepherd.trigger(e, opts);\n });\n })(event);\n });\n _this16._setTourID();\n return _possibleConstructorReturn(_this16, _this16);\n }\n\n /**\n * Adds a new step to the tour\n * @param {Object|Step} options An object containing step options or a Step instance\n * @param {number} index The optional index to insert the step at. If undefined, the step\n * is added to the end of the array.\n * @return {Step} The newly added step\n */\n _inherits(Tour, _Evented2);\n return _createClass(Tour, [{\n key: \"addStep\",\n value: function addStep(options, index) {\n var step = options;\n if (!(step instanceof Step)) {\n step = new Step(this, step);\n } else {\n step.tour = this;\n }\n if (!isUndefined(index)) {\n this.steps.splice(index, 0, step);\n } else {\n this.steps.push(step);\n }\n return step;\n }\n\n /**\n * Add multiple steps to the tour\n * @param {Array<object> | Array<Step>} steps The steps to add to the tour\n */\n }, {\n key: \"addSteps\",\n value: function addSteps(steps) {\n var _this17 = this;\n if (Array.isArray(steps)) {\n steps.forEach(function (step) {\n _this17.addStep(step);\n });\n }\n return this;\n }\n\n /**\n * Go to the previous step in the tour\n */\n }, {\n key: \"back\",\n value: function back() {\n var 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 * If `confirmCancel` is a function, will call it and wait for the return value,\n * and only cancel when the value returned is true\n */\n }, {\n key: \"cancel\",\n value: (function () {\n var _cancel = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n var confirmCancelIsFunction, cancelMessage, stopTour;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (!this.options.confirmCancel) {\n _context6.next = 14;\n break;\n }\n confirmCancelIsFunction = typeof this.options.confirmCancel === 'function';\n cancelMessage = this.options.confirmCancelMessage || 'Are you sure you want to stop the tour?';\n if (!confirmCancelIsFunction) {\n _context6.next = 9;\n break;\n }\n _context6.next = 6;\n return this.options.confirmCancel();\n case 6:\n _context6.t0 = _context6.sent;\n _context6.next = 10;\n break;\n case 9:\n _context6.t0 = window.confirm(cancelMessage);\n case 10:\n stopTour = _context6.t0;\n if (stopTour) {\n this._done('cancel');\n }\n _context6.next = 15;\n break;\n case 14:\n this._done('cancel');\n case 15:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this);\n }));\n function cancel() {\n return _cancel.apply(this, arguments);\n }\n return cancel;\n }()\n /**\n * Calls _done() triggering the `complete` event\n */\n )\n }, {\n key: \"complete\",\n value: function complete() {\n this._done('complete');\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 }, {\n key: \"getById\",\n value: function getById(id) {\n return this.steps.find(function (step) {\n return step.id === id;\n });\n }\n\n /**\n * Gets the current step\n * @returns {Step|null}\n */\n }, {\n key: \"getCurrentStep\",\n value: function getCurrentStep() {\n return this.currentStep;\n }\n\n /**\n * Hide the current step\n */\n }, {\n key: \"hide\",\n value: function hide() {\n var currentStep = this.getCurrentStep();\n if (currentStep) {\n return currentStep.hide();\n }\n }\n\n /**\n * Check if the tour is active\n * @return {boolean}\n */\n }, {\n key: \"isActive\",\n value: function 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 }, {\n key: \"next\",\n value: function next() {\n var index = this.steps.indexOf(this.currentStep);\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 }, {\n key: \"removeStep\",\n value: function removeStep(name) {\n var _this18 = this;\n var current = this.getCurrentStep();\n\n // Find the step, destroy it and remove it from this.steps\n this.steps.some(function (step, i) {\n if (step.id === name) {\n if (step.isOpen()) {\n step.hide();\n }\n step.destroy();\n _this18.steps.splice(i, 1);\n return true;\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 * 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 }, {\n key: \"show\",\n value: function show() {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var step = isString(key) ? this.getById(key) : this.steps[key];\n if (step) {\n this._updateStateBeforeShow();\n var 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: step,\n previous: this.currentStep\n });\n this.currentStep = step;\n step.show();\n }\n }\n }\n\n /**\n * Start the tour\n */\n }, {\n key: \"start\",\n value: function start() {\n this.trigger('start');\n\n // Save the focused element before the tour opens\n this.focusedElBeforeOpen = document.activeElement;\n this.currentStep = null;\n this._setupModal();\n this._setupActiveTour();\n this.next();\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 * @private\n */\n }, {\n key: \"_done\",\n value: function _done(event) {\n var index = this.steps.indexOf(this.currentStep);\n if (Array.isArray(this.steps)) {\n this.steps.forEach(function (step) {\n return step.destroy();\n });\n }\n cleanupSteps(this);\n this.trigger(event, {\n index: index\n });\n Shepherd.activeTour = null;\n this.trigger('inactive', {\n tour: this\n });\n if (this.modal) {\n this.modal.hide();\n }\n if (event === 'cancel' || event === 'complete') {\n if (this.modal) {\n var modalContainer = document.querySelector('.shepherd-modal-overlay-container');\n if (modalContainer) {\n modalContainer.remove();\n }\n }\n }\n\n // Focus the element that was focused before the tour started\n if (isHTMLElement$1(this.focusedElBeforeOpen)) {\n this.focusedElBeforeOpen.focus();\n }\n }\n\n /**\n * Make this tour \"active\"\n * @private\n */\n }, {\n key: \"_setupActiveTour\",\n value: function _setupActiveTour() {\n this.trigger('active', {\n tour: this\n });\n Shepherd.activeTour = this;\n }\n\n /**\n * _setupModal create the modal container and instance\n * @private\n */\n }, {\n key: \"_setupModal\",\n value: function _setupModal() {\n this.modal = new Shepherd_modal({\n target: this.options.modalContainer || document.body,\n props: {\n classPrefix: this.classPrefix,\n styles: this.styles\n }\n });\n }\n\n /**\n * Called when `showOn` evaluates to false, to skip the step or complete the tour if it's the last 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 }, {\n key: \"_skipStep\",\n value: function _skipStep(step, forward) {\n var index = this.steps.indexOf(step);\n if (index === this.steps.length - 1) {\n this.complete();\n } else {\n var nextIndex = forward ? index + 1 : index - 1;\n this.show(nextIndex, forward);\n }\n }\n\n /**\n * Before showing, hide the current step and if the tour is not\n * already active, call `this._setupActiveTour`.\n * @private\n */\n }, {\n key: \"_updateStateBeforeShow\",\n value: function _updateStateBeforeShow() {\n if (this.currentStep) {\n this.currentStep.hide();\n }\n if (!this.isActive()) {\n this._setupActiveTour();\n }\n }\n\n /**\n * Sets this.id to `${tourName}--${uuid}`\n * @private\n */\n }, {\n key: \"_setTourID\",\n value: function _setTourID() {\n var tourName = this.options.tourName || 'tour';\n this.id = \"\".concat(tourName, \"--\").concat(uuid());\n }\n }]);\n }(Evented);\n var isServerSide = typeof window === 'undefined';\n var NoOp = /*#__PURE__*/_createClass(function NoOp() {\n _classCallCheck(this, NoOp);\n });\n if (isServerSide) {\n Object.assign(Shepherd, {\n Tour: NoOp,\n Step: NoOp\n });\n } else {\n Object.assign(Shepherd, {\n Tour: Tour,\n Step: Step\n });\n }\n return Shepherd;\n});\n\n//# sourceURL=webpack://Sneat/./node_modules/shepherd.js/dist/js/shepherd.js?");
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ !function() {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function() { return module['default']; } :
/******/ function() { return module; };
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ }();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ !function() {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = function(exports, definition) {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ }();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ !function() {
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
/******/ }();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ !function() {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ }();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module can't be inlined because the eval devtool is used.
/******/ var __webpack_exports__ = __webpack_require__("./libs/shepherd/shepherd.js");
/******/
/******/ return __webpack_exports__;
/******/ })()
;
});