shepherdjs_rails 1.8.1 → 2.0.0.pre.beta.35

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,747 +1,2747 @@
1
- //= require tether
1
+ /*!
2
+ * /*! shepherd.js 2.0.0-beta.35 * /
3
+ *
4
+ */
5
+ (function webpackUniversalModuleDefinition(root, factory) {
6
+ if(typeof exports === 'object' && typeof module === 'object')
7
+ module.exports = factory();
8
+ else if(typeof define === 'function' && define.amd)
9
+ define([], factory);
10
+ else if(typeof exports === 'object')
11
+ exports["Shepherd"] = factory();
12
+ else
13
+ root["Shepherd"] = factory();
14
+ })(this, function() {
15
+ return /******/ (function(modules) { // webpackBootstrap
16
+ /******/ // The module cache
17
+ /******/ var installedModules = {};
18
+ /******/
19
+ /******/ // The require function
20
+ /******/ function __webpack_require__(moduleId) {
21
+ /******/
22
+ /******/ // Check if module is in cache
23
+ /******/ if(installedModules[moduleId]) {
24
+ /******/ return installedModules[moduleId].exports;
25
+ /******/ }
26
+ /******/ // Create a new module (and put it into the cache)
27
+ /******/ var module = installedModules[moduleId] = {
28
+ /******/ i: moduleId,
29
+ /******/ l: false,
30
+ /******/ exports: {}
31
+ /******/ };
32
+ /******/
33
+ /******/ // Execute the module function
34
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
35
+ /******/
36
+ /******/ // Flag the module as loaded
37
+ /******/ module.l = true;
38
+ /******/
39
+ /******/ // Return the exports of the module
40
+ /******/ return module.exports;
41
+ /******/ }
42
+ /******/
43
+ /******/
44
+ /******/ // expose the modules object (__webpack_modules__)
45
+ /******/ __webpack_require__.m = modules;
46
+ /******/
47
+ /******/ // expose the module cache
48
+ /******/ __webpack_require__.c = installedModules;
49
+ /******/
50
+ /******/ // define getter function for harmony exports
51
+ /******/ __webpack_require__.d = function(exports, name, getter) {
52
+ /******/ if(!__webpack_require__.o(exports, name)) {
53
+ /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
54
+ /******/ }
55
+ /******/ };
56
+ /******/
57
+ /******/ // define __esModule on exports
58
+ /******/ __webpack_require__.r = function(exports) {
59
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
60
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
61
+ /******/ }
62
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
63
+ /******/ };
64
+ /******/
65
+ /******/ // create a fake namespace object
66
+ /******/ // mode & 1: value is a module id, require it
67
+ /******/ // mode & 2: merge all properties of value into the ns
68
+ /******/ // mode & 4: return value when already ns object
69
+ /******/ // mode & 8|1: behave like require
70
+ /******/ __webpack_require__.t = function(value, mode) {
71
+ /******/ if(mode & 1) value = __webpack_require__(value);
72
+ /******/ if(mode & 8) return value;
73
+ /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
74
+ /******/ var ns = Object.create(null);
75
+ /******/ __webpack_require__.r(ns);
76
+ /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
77
+ /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
78
+ /******/ return ns;
79
+ /******/ };
80
+ /******/
81
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
82
+ /******/ __webpack_require__.n = function(module) {
83
+ /******/ var getter = module && module.__esModule ?
84
+ /******/ function getDefault() { return module['default']; } :
85
+ /******/ function getModuleExports() { return module; };
86
+ /******/ __webpack_require__.d(getter, 'a', getter);
87
+ /******/ return getter;
88
+ /******/ };
89
+ /******/
90
+ /******/ // Object.prototype.hasOwnProperty.call
91
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
92
+ /******/
93
+ /******/ // __webpack_public_path__
94
+ /******/ __webpack_require__.p = "";
95
+ /******/
96
+ /******/
97
+ /******/ // Load entry module and return exports
98
+ /******/ return __webpack_require__(__webpack_require__.s = 14);
99
+ /******/ })
100
+ /************************************************************************/
101
+ /******/ ([
102
+ /* 0 */
103
+ /***/ (function(module, exports) {
104
+
105
+ /**
106
+ * Checks if `value` is `undefined`.
107
+ *
108
+ * @static
109
+ * @since 0.1.0
110
+ * @memberOf _
111
+ * @category Lang
112
+ * @param {*} value The value to check.
113
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
114
+ * @example
115
+ *
116
+ * _.isUndefined(void 0);
117
+ * // => true
118
+ *
119
+ * _.isUndefined(null);
120
+ * // => false
121
+ */
122
+ function isUndefined(value) {
123
+ return value === undefined;
124
+ }
125
+
126
+ module.exports = isUndefined;
127
+
128
+
129
+ /***/ }),
130
+ /* 1 */
131
+ /***/ (function(module, exports) {
132
+
133
+ /**
134
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
135
+ * and has a `typeof` result of "object".
136
+ *
137
+ * @static
138
+ * @memberOf _
139
+ * @since 4.0.0
140
+ * @category Lang
141
+ * @param {*} value The value to check.
142
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
143
+ * @example
144
+ *
145
+ * _.isObjectLike({});
146
+ * // => true
147
+ *
148
+ * _.isObjectLike([1, 2, 3]);
149
+ * // => true
150
+ *
151
+ * _.isObjectLike(_.noop);
152
+ * // => false
153
+ *
154
+ * _.isObjectLike(null);
155
+ * // => false
156
+ */
157
+ function isObjectLike(value) {
158
+ return value != null && typeof value == 'object';
159
+ }
160
+
161
+ module.exports = isObjectLike;
162
+
163
+
164
+ /***/ }),
165
+ /* 2 */
166
+ /***/ (function(module, exports, __webpack_require__) {
167
+
168
+ var baseGetTag = __webpack_require__(3),
169
+ isArray = __webpack_require__(8),
170
+ isObjectLike = __webpack_require__(1);
171
+
172
+ /** `Object#toString` result references. */
173
+ var stringTag = '[object String]';
174
+
175
+ /**
176
+ * Checks if `value` is classified as a `String` primitive or object.
177
+ *
178
+ * @static
179
+ * @since 0.1.0
180
+ * @memberOf _
181
+ * @category Lang
182
+ * @param {*} value The value to check.
183
+ * @returns {boolean} Returns `true` if `value` is a string, else `false`.
184
+ * @example
185
+ *
186
+ * _.isString('abc');
187
+ * // => true
188
+ *
189
+ * _.isString(1);
190
+ * // => false
191
+ */
192
+ function isString(value) {
193
+ return typeof value == 'string' ||
194
+ (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
195
+ }
196
+
197
+ module.exports = isString;
198
+
199
+
200
+ /***/ }),
201
+ /* 3 */
202
+ /***/ (function(module, exports) {
203
+
204
+ /** Used for built-in method references. */
205
+ var objectProto = Object.prototype;
206
+
207
+ /**
208
+ * Used to resolve the
209
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
210
+ * of values.
211
+ */
212
+ var nativeObjectToString = objectProto.toString;
213
+
214
+ /**
215
+ * Converts `value` to a string using `Object.prototype.toString`.
216
+ *
217
+ * @private
218
+ * @param {*} value The value to convert.
219
+ * @returns {string} Returns the converted string.
220
+ */
221
+ function objectToString(value) {
222
+ return nativeObjectToString.call(value);
223
+ }
224
+
225
+ module.exports = objectToString;
226
+
227
+
228
+ /***/ }),
229
+ /* 4 */
230
+ /***/ (function(module, exports, __webpack_require__) {
231
+
232
+ "use strict";
233
+
234
+
235
+ Object.defineProperty(exports, "__esModule", {
236
+ value: true
237
+ });
238
+ exports.Evented = undefined;
239
+
240
+ var _isUndefined2 = __webpack_require__(0);
241
+
242
+ var _isUndefined3 = _interopRequireDefault(_isUndefined2);
243
+
244
+ var _drop2 = __webpack_require__(15);
245
+
246
+ var _drop3 = _interopRequireDefault(_drop2);
247
+
248
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
249
+
250
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
251
+
252
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
253
+
254
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
255
+
256
+ var Evented =
257
+ /*#__PURE__*/
258
+ exports.Evented = function () {
259
+ function Evented() {
260
+ _classCallCheck(this, Evented);
261
+ }
262
+
263
+ _createClass(Evented, [{
264
+ key: "on",
265
+ value: function on(event, handler, ctx) {
266
+ var once = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];
267
+
268
+ if ((0, _isUndefined3.default)(this.bindings)) {
269
+ this.bindings = {};
270
+ }
271
+
272
+ if ((0, _isUndefined3.default)(this.bindings[event])) {
273
+ this.bindings[event] = [];
274
+ }
275
+
276
+ this.bindings[event].push({
277
+ handler: handler,
278
+ ctx: ctx,
279
+ once: once
280
+ });
281
+ }
282
+ }, {
283
+ key: "once",
284
+ value: function once(event, handler, ctx) {
285
+ this.on(event, handler, ctx, true);
286
+ }
287
+ }, {
288
+ key: "off",
289
+ value: function off(event, handler) {
290
+ var _this = this;
291
+
292
+ if ((0, _isUndefined3.default)(this.bindings) || (0, _isUndefined3.default)(this.bindings[event])) {
293
+ return false;
294
+ }
295
+
296
+ if ((0, _isUndefined3.default)(handler)) {
297
+ delete this.bindings[event];
298
+ } else {
299
+ this.bindings[event].forEach(function (binding, index) {
300
+ if (binding.handler === handler) {
301
+ _this.bindings[event].splice(index, 1);
302
+ }
303
+ });
304
+ }
305
+ }
306
+ }, {
307
+ key: "trigger",
308
+ value: function trigger(event) {
309
+ var _this2 = this;
310
+
311
+ if (!(0, _isUndefined3.default)(this.bindings) && this.bindings[event]) {
312
+ var args = (0, _drop3.default)(arguments);
313
+ this.bindings[event].forEach(function (binding, index) {
314
+ var ctx = binding.ctx,
315
+ handler = binding.handler,
316
+ once = binding.once;
317
+ var context = ctx || _this2;
318
+ handler.apply(context, args);
319
+
320
+ if (once) {
321
+ _this2.bindings[event].splice(index, 1);
322
+ }
323
+ });
324
+ }
325
+ }
326
+ }]);
327
+
328
+ return Evented;
329
+ }();
330
+
331
+ /***/ }),
332
+ /* 5 */
333
+ /***/ (function(module, exports, __webpack_require__) {
334
+
335
+ var baseGetTag = __webpack_require__(3),
336
+ isObject = __webpack_require__(18);
337
+
338
+ /** `Object#toString` result references. */
339
+ var asyncTag = '[object AsyncFunction]',
340
+ funcTag = '[object Function]',
341
+ genTag = '[object GeneratorFunction]',
342
+ proxyTag = '[object Proxy]';
343
+
344
+ /**
345
+ * Checks if `value` is classified as a `Function` object.
346
+ *
347
+ * @static
348
+ * @memberOf _
349
+ * @since 0.1.0
350
+ * @category Lang
351
+ * @param {*} value The value to check.
352
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
353
+ * @example
354
+ *
355
+ * _.isFunction(_);
356
+ * // => true
357
+ *
358
+ * _.isFunction(/abc/);
359
+ * // => false
360
+ */
361
+ function isFunction(value) {
362
+ if (!isObject(value)) {
363
+ return false;
364
+ }
365
+ // The use of `Object#toString` avoids issues with the `typeof` operator
366
+ // in Safari 9 which returns 'object' for typed arrays and other constructors.
367
+ var tag = baseGetTag(value);
368
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
369
+ }
370
+
371
+ module.exports = isFunction;
372
+
373
+
374
+ /***/ }),
375
+ /* 6 */
376
+ /***/ (function(module, exports) {
377
+
378
+ /**
379
+ * Creates a unary function that invokes `func` with its argument transformed.
380
+ *
381
+ * @private
382
+ * @param {Function} func The function to wrap.
383
+ * @param {Function} transform The argument transform.
384
+ * @returns {Function} Returns the new function.
385
+ */
386
+ function overArg(func, transform) {
387
+ return function(arg) {
388
+ return func(transform(arg));
389
+ };
390
+ }
391
+
392
+ module.exports = overArg;
393
+
394
+
395
+ /***/ }),
396
+ /* 7 */
397
+ /***/ (function(module, exports, __webpack_require__) {
398
+
399
+ "use strict";
400
+
401
+
402
+ Object.defineProperty(exports, "__esModule", {
403
+ value: true
404
+ });
405
+ exports.Step = undefined;
406
+
407
+ var _isUndefined2 = __webpack_require__(0);
408
+
409
+ var _isUndefined3 = _interopRequireDefault(_isUndefined2);
410
+
411
+ var _isString2 = __webpack_require__(2);
412
+
413
+ var _isString3 = _interopRequireDefault(_isString2);
414
+
415
+ var _isFunction2 = __webpack_require__(5);
416
+
417
+ var _isFunction3 = _interopRequireDefault(_isFunction2);
418
+
419
+ var _isEmpty2 = __webpack_require__(9);
420
+
421
+ var _isEmpty3 = _interopRequireDefault(_isEmpty2);
422
+
423
+ var _isElement2 = __webpack_require__(27);
424
+
425
+ var _isElement3 = _interopRequireDefault(_isElement2);
426
+
427
+ var _forOwn2 = __webpack_require__(10);
428
+
429
+ var _forOwn3 = _interopRequireDefault(_forOwn2);
430
+
431
+ var _evented = __webpack_require__(4);
432
+
433
+ __webpack_require__(35);
434
+
435
+ var _bind = __webpack_require__(11);
436
+
437
+ var _utils = __webpack_require__(12);
438
+
439
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
440
+
441
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
442
+
443
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
444
+
445
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
446
+
447
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
448
+
449
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
450
+
451
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
452
+
453
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
454
+
455
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
456
+
457
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
458
+
459
+ /**
460
+ * Creates incremented ID for each newly created step
461
+ *
462
+ * @private
463
+ * @return {Number} The unique id for the step
464
+ */
465
+ var uniqueId = function () {
466
+ var id = 0;
467
+ return function () {
468
+ return ++id;
469
+ };
470
+ }();
471
+ /**
472
+ * Class representing steps to be added to a tour
473
+ * @extends {Evented}
474
+ */
475
+
476
+
477
+ var Step =
478
+ /*#__PURE__*/
479
+ exports.Step = function (_Evented) {
480
+ _inherits(Step, _Evented);
481
+
482
+ /**
483
+ * Create a step
484
+ * @param {Tour} tour The tour for the step
485
+ * @param {Object} options The options for the step
486
+ * @param {Object|string} options.attachTo What element the step should be attached to on the page.
487
+ * It can either be a string of the form "element on", or an object with those properties.
488
+ * For example: ".some #element left", or {element: '.some #element', on: 'left'}.
489
+ * If you use the object syntax, element can also be a DOM element. If you don’t specify an attachTo the
490
+ * element will appear in the middle of the screen.
491
+ * @param {HTMLElement|string} options.attachTo.element
492
+ * @param {string} options.attachTo.on
493
+ * @param {Object|string} options.advanceOn An action on the page which should advance shepherd to the next step.
494
+ * It can be of the form `"selector event"`, or an object with those properties.
495
+ * For example: `".some-element click"`, or `{selector: '.some-element', event: 'click'}`.
496
+ * It doesn’t have to be an event inside the tour, it can be any event fired on any element on the page.
497
+ * You can also always manually advance the Tour by calling `myTour.next()`.
498
+ * @param {function} options.beforeShowPromise A function that returns a promise.
499
+ * When the promise resolves, the rest of the `show` code for the step will execute.
500
+ * @param {Object[]} options.buttons An array of buttons to add to the step. These will be rendered in a
501
+ * footer below the main body text.
502
+ * @param {function} options.buttons.button.action A function executed when the button is clicked on
503
+ * @param {string} options.buttons.button.classes Extra classes to apply to the `<a>`
504
+ * @param {Object} options.buttons.button.events A hash of events to bind onto the button, for example
505
+ * `{'mouseover': function(){}}`. Adding a `click` event to events when you already have an `action` specified is not supported.
506
+ * You can use events to skip steps or navigate to specific steps, with something like:
507
+ * ```js
508
+ * events: {
509
+ * click: function() {
510
+ * return Shepherd.activeTour.show('some_step_name');
511
+ * }
512
+ * }
513
+ * ```
514
+ * @param {string} options.buttons.button.text The HTML text of the button
515
+ * @param {string} options.classes A string of extra classes to add to the step's content element.
516
+ * @param {Object} options.tippyOptions Extra [options to pass to tippy.js]{@link https://atomiks.github.io/tippyjs/#all-options}
517
+ * @param {boolean} options.scrollTo Should the element be scrolled to when this step is shown?
518
+ * @param {function} options.scrollToHandler A function that lets you override the default scrollTo behavior and
519
+ * define a custom action to do the scrolling, and possibly other logic.
520
+ * @param {boolean} options.showCancelLink Should a cancel “✕” be shown in the header of the step?
521
+ * @param {function} options.showOn A function that, when it returns `true`, will show the step.
522
+ * If it returns false, the step will be skipped.
523
+ * @param {string} options.text The text in the body of the step. It can be one of four types:
524
+ * ```
525
+ * - HTML string
526
+ * - Array of HTML strings
527
+ * - `HTMLElement` object
528
+ * - `Function` to be executed when the step is built. It must return one of the three options above.
529
+ * ```
530
+ * @param {string} options.title The step's title. It becomes an `h3` at the top of the step.
531
+ * @param {Object} options.when You can define `show`, `hide`, etc events inside `when`. For example:
532
+ * ```js
533
+ * when: {
534
+ * show: function() {
535
+ * window.scrollTo(0, 0);
536
+ * }
537
+ * }
538
+ * ```
539
+ * @return {Step} The newly created Step instance
540
+ */
541
+ function Step(tour, options) {
542
+ var _this;
543
+
544
+ _classCallCheck(this, Step);
545
+
546
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(Step).call(this, tour, options));
547
+ _this.tour = tour;
548
+
549
+ _bind.bindMethods.call(_assertThisInitialized(_assertThisInitialized(_this)), ['_show', 'cancel', 'complete', 'destroy', 'hide', 'isOpen', 'scrollTo', 'setupElements', 'show']);
550
+
551
+ _this.setOptions(options);
552
+
553
+ _this.bindAdvance = _bind.bindAdvance.bind(_assertThisInitialized(_assertThisInitialized(_this)));
554
+ _this.bindButtonEvents = _bind.bindButtonEvents.bind(_assertThisInitialized(_assertThisInitialized(_this)));
555
+ _this.bindCancelLink = _bind.bindCancelLink.bind(_assertThisInitialized(_assertThisInitialized(_this)));
556
+ _this.setupTooltip = _utils.setupTooltip.bind(_assertThisInitialized(_assertThisInitialized(_this)));
557
+ _this.parseAttachTo = _utils.parseAttachTo.bind(_assertThisInitialized(_assertThisInitialized(_this)));
558
+ return _possibleConstructorReturn(_this, _assertThisInitialized(_assertThisInitialized(_this)));
559
+ }
560
+ /**
561
+ * Adds buttons to the step as passed into options
562
+ *
563
+ * @private
564
+ * @param {HTMLElement} content The element for the step, to append the footer with buttons to
565
+ */
566
+
567
+
568
+ _createClass(Step, [{
569
+ key: "_addButtons",
570
+ value: function _addButtons(content) {
571
+ var _this2 = this;
572
+
573
+ if (!(0, _isEmpty3.default)(this.options.buttons)) {
574
+ var footer = document.createElement('footer');
575
+ var buttons = (0, _utils.createFromHTML)('<ul class="shepherd-buttons"></ul>');
576
+ footer.classList.add('shepherd-footer');
577
+ this.options.buttons.map(function (cfg) {
578
+ var button = (0, _utils.createFromHTML)("<li><a class=\"shepherd-button ".concat(cfg.classes || '', "\">").concat(cfg.text, "</a>"));
579
+ buttons.appendChild(button);
580
+
581
+ _this2.bindButtonEvents(cfg, button.querySelector('a'));
582
+ });
583
+ footer.appendChild(buttons);
584
+ content.appendChild(footer);
585
+ }
586
+ }
587
+ /**
588
+ * Adds the "x" button to cancel the tour
589
+ * @param {HTMLElement} element The step element
590
+ * @param {HTMLElement} header The header element for the step
591
+ * @private
592
+ */
593
+
594
+ }, {
595
+ key: "_addCancelLink",
596
+ value: function _addCancelLink(element, header) {
597
+ if (this.options.showCancelLink) {
598
+ var link = (0, _utils.createFromHTML)('<a href class="shepherd-cancel-link"></a>');
599
+ header.appendChild(link);
600
+ element.classList.add('shepherd-has-cancel-link');
601
+ this.bindCancelLink(link);
602
+ }
603
+ }
604
+ /**
605
+ * Adds text passed in as options
606
+ *
607
+ * @private
608
+ * @param {HTMLElement} content The content to append the text to
609
+ */
610
+
611
+ }, {
612
+ key: "_addContent",
613
+ value: function _addContent(content) {
614
+ var text = (0, _utils.createFromHTML)('<div class="shepherd-text"></div>');
615
+ var paragraphs = this.options.text;
616
+
617
+ if ((0, _isFunction3.default)(paragraphs)) {
618
+ paragraphs = paragraphs.call(this, text);
619
+ }
620
+
621
+ if (paragraphs instanceof HTMLElement) {
622
+ text.appendChild(paragraphs);
623
+ } else {
624
+ if ((0, _isString3.default)(paragraphs)) {
625
+ paragraphs = [paragraphs];
626
+ }
627
+
628
+ paragraphs.map(function (paragraph) {
629
+ text.innerHTML += "<p>".concat(paragraph, "</p>");
630
+ });
631
+ }
632
+
633
+ content.appendChild(text);
634
+ }
635
+ /**
636
+ * Creates Shepherd element for step based on options
637
+ *
638
+ * @private
639
+ * @return {HTMLElement} The DOM element for the step tooltip
640
+ */
641
+
642
+ }, {
643
+ key: "_createTooltipContent",
644
+ value: function _createTooltipContent() {
645
+ var content = document.createElement('div');
646
+ var classes = this.options.classes || '';
647
+ var element = (0, _utils.createFromHTML)("<div class='".concat(classes, "' data-shepherd-step-id='").concat(this.id, "' id=\"step-").concat(this.options.id, "-").concat(uniqueId(), "\"}>"));
648
+ var header = document.createElement('header');
649
+
650
+ if (this.options.title) {
651
+ var title = document.createElement('h3');
652
+ title.classList.add('shepherd-title');
653
+ title.innerHTML = "".concat(this.options.title);
654
+ header.appendChild(title);
655
+ element.classList.add('shepherd-has-title');
656
+ }
657
+
658
+ content.classList.add('shepherd-content');
659
+ header.classList.add('shepherd-header');
660
+ element.appendChild(content);
661
+ content.appendChild(header);
662
+
663
+ if (!(0, _isUndefined3.default)(this.options.text)) {
664
+ this._addContent(content);
665
+ }
666
+
667
+ this._addButtons(content);
668
+
669
+ this._addCancelLink(element, header);
670
+
671
+ return element;
672
+ }
673
+ /**
674
+ * Returns the tour for the step
675
+ * @return {Tour} The tour instance
676
+ */
677
+
678
+ }, {
679
+ key: "getTour",
680
+ value: function getTour() {
681
+ return this.tour;
682
+ }
683
+ /**
684
+ * Cancel the tour
685
+ * Triggers the `cancel` event
686
+ */
687
+
688
+ }, {
689
+ key: "cancel",
690
+ value: function cancel() {
691
+ this.tour.cancel();
692
+ this.trigger('cancel');
693
+ }
694
+ /**
695
+ * Complete the tour
696
+ * Triggers the `complete` event
697
+ */
698
+
699
+ }, {
700
+ key: "complete",
701
+ value: function complete() {
702
+ this.tour.complete();
703
+ this.trigger('complete');
704
+ }
705
+ /**
706
+ * Remove the step, delete the step's element, and destroy the tippy instance for the step
707
+ * Triggers `destroy` event
708
+ */
2
709
 
3
- /*! tether-shepherd 1.8.1 */
710
+ }, {
711
+ key: "destroy",
712
+ value: function destroy() {
713
+ if (this.tooltip) {
714
+ this.tooltip.destroy();
715
+ this.tooltip = null;
716
+ }
717
+
718
+ if ((0, _isElement3.default)(this.el) && this.el.parentNode) {
719
+ this.el.parentNode.removeChild(this.el);
720
+ this.el = null;
721
+ }
722
+
723
+ if (this.target) {
724
+ this.target.classList.remove('shepherd-enabled', 'shepherd-target');
725
+ }
4
726
 
5
- (function(root, factory) {
6
- if (typeof define === 'function' && define.amd) {
7
- define(["tether"], factory);
8
- } else if (typeof exports === 'object') {
9
- module.exports = factory(require('tether'));
727
+ this.trigger('destroy');
728
+ }
729
+ /**
730
+ * Hide the step and destroy the tippy instance
731
+ */
732
+
733
+ }, {
734
+ key: "hide",
735
+ value: function hide() {
736
+ this.trigger('before-hide');
737
+ document.body.removeAttribute('data-shepherd-step');
738
+
739
+ if (this.target) {
740
+ this.target.classList.remove('shepherd-enabled', 'shepherd-target');
741
+ }
742
+
743
+ if (this.tooltip) {
744
+ this.tooltip.hide();
745
+ }
746
+
747
+ this.trigger('hide');
748
+ }
749
+ /**
750
+ * Check if the step is open and visible
751
+ * @return {boolean} True if the step is open and visible
752
+ */
753
+
754
+ }, {
755
+ key: "isOpen",
756
+ value: function isOpen() {
757
+ return Boolean(this.tooltip && this.tooltip.state && this.tooltip.state.isVisible);
758
+ }
759
+ /**
760
+ * Create the element and set up the tippy instance
761
+ */
762
+
763
+ }, {
764
+ key: "setupElements",
765
+ value: function setupElements() {
766
+ if (!(0, _isUndefined3.default)(this.el)) {
767
+ this.destroy();
768
+ }
769
+
770
+ this.el = this._createTooltipContent();
771
+
772
+ if (this.options.advanceOn) {
773
+ this.bindAdvance();
774
+ }
775
+
776
+ this.setupTooltip();
777
+ }
778
+ /**
779
+ * If a custom scrollToHandler is defined, call that, otherwise do the generic
780
+ * scrollIntoView call.
781
+ */
782
+
783
+ }, {
784
+ key: "scrollTo",
785
+ value: function scrollTo() {
786
+ var _this$parseAttachTo = this.parseAttachTo(),
787
+ element = _this$parseAttachTo.element;
788
+
789
+ if ((0, _isFunction3.default)(this.options.scrollToHandler)) {
790
+ this.options.scrollToHandler(element);
791
+ } else if ((0, _isElement3.default)(element)) {
792
+ element.scrollIntoView();
793
+ }
794
+ }
795
+ /**
796
+ * Sets the options for the step, maps `when` to events, sets up buttons
797
+ * @param {Object} options The options for the step
798
+ */
799
+
800
+ }, {
801
+ key: "setOptions",
802
+ value: function setOptions() {
803
+ var _this3 = this;
804
+
805
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
806
+ this.options = options;
807
+ var when = this.options.when;
808
+ this.destroy();
809
+ this.id = this.options.id || "step-".concat(uniqueId());
810
+ (0, _forOwn3.default)(when, function (handler, event) {
811
+ _this3.on(event, handler, _this3);
812
+ });
813
+ }
814
+ /**
815
+ * Wraps `_show` and ensures `beforeShowPromise` resolves before calling show
816
+ * @return {*|Promise}
817
+ */
818
+
819
+ }, {
820
+ key: "show",
821
+ value: function show() {
822
+ var _this4 = this;
823
+
824
+ if ((0, _isFunction3.default)(this.options.beforeShowPromise)) {
825
+ var beforeShowPromise = this.options.beforeShowPromise();
826
+
827
+ if (!(0, _isUndefined3.default)(beforeShowPromise)) {
828
+ return beforeShowPromise.then(function () {
829
+ return _this4._show();
830
+ });
831
+ }
832
+ }
833
+
834
+ this._show();
835
+ }
836
+ /**
837
+ * Triggers `before-show`, generates the tooltip DOM content,
838
+ * sets up a tippy instance for the tooltip, then triggers `show`.
839
+ * @private
840
+ */
841
+
842
+ }, {
843
+ key: "_show",
844
+ value: function _show() {
845
+ var _this5 = this;
846
+
847
+ this.trigger('before-show');
848
+
849
+ if (!this.el) {
850
+ this.setupElements();
851
+ }
852
+
853
+ this.target.classList.add('shepherd-enabled', 'shepherd-target');
854
+ document.body.setAttribute('data-shepherd-step', this.id);
855
+
856
+ if (this.options.scrollTo) {
857
+ setTimeout(function () {
858
+ _this5.scrollTo();
859
+ });
860
+ }
861
+
862
+ this.tooltip.show();
863
+ this.trigger('show');
864
+ }
865
+ }]);
866
+
867
+ return Step;
868
+ }(_evented.Evented);
869
+
870
+ /***/ }),
871
+ /* 8 */
872
+ /***/ (function(module, exports) {
873
+
874
+ /**
875
+ * Checks if `value` is classified as an `Array` object.
876
+ *
877
+ * @static
878
+ * @memberOf _
879
+ * @since 0.1.0
880
+ * @category Lang
881
+ * @param {*} value The value to check.
882
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
883
+ * @example
884
+ *
885
+ * _.isArray([1, 2, 3]);
886
+ * // => true
887
+ *
888
+ * _.isArray(document.body.children);
889
+ * // => false
890
+ *
891
+ * _.isArray('abc');
892
+ * // => false
893
+ *
894
+ * _.isArray(_.noop);
895
+ * // => false
896
+ */
897
+ var isArray = Array.isArray;
898
+
899
+ module.exports = isArray;
900
+
901
+
902
+ /***/ }),
903
+ /* 9 */
904
+ /***/ (function(module, exports, __webpack_require__) {
905
+
906
+ var baseKeys = __webpack_require__(19),
907
+ getTag = __webpack_require__(20),
908
+ isArguments = __webpack_require__(21),
909
+ isArray = __webpack_require__(8),
910
+ isArrayLike = __webpack_require__(22),
911
+ isBuffer = __webpack_require__(24),
912
+ isPrototype = __webpack_require__(25),
913
+ isTypedArray = __webpack_require__(26);
914
+
915
+ /** `Object#toString` result references. */
916
+ var mapTag = '[object Map]',
917
+ setTag = '[object Set]';
918
+
919
+ /** Used for built-in method references. */
920
+ var objectProto = Object.prototype;
921
+
922
+ /** Used to check objects for own properties. */
923
+ var hasOwnProperty = objectProto.hasOwnProperty;
924
+
925
+ /**
926
+ * Checks if `value` is an empty object, collection, map, or set.
927
+ *
928
+ * Objects are considered empty if they have no own enumerable string keyed
929
+ * properties.
930
+ *
931
+ * Array-like values such as `arguments` objects, arrays, buffers, strings, or
932
+ * jQuery-like collections are considered empty if they have a `length` of `0`.
933
+ * Similarly, maps and sets are considered empty if they have a `size` of `0`.
934
+ *
935
+ * @static
936
+ * @memberOf _
937
+ * @since 0.1.0
938
+ * @category Lang
939
+ * @param {*} value The value to check.
940
+ * @returns {boolean} Returns `true` if `value` is empty, else `false`.
941
+ * @example
942
+ *
943
+ * _.isEmpty(null);
944
+ * // => true
945
+ *
946
+ * _.isEmpty(true);
947
+ * // => true
948
+ *
949
+ * _.isEmpty(1);
950
+ * // => true
951
+ *
952
+ * _.isEmpty([1, 2, 3]);
953
+ * // => false
954
+ *
955
+ * _.isEmpty({ 'a': 1 });
956
+ * // => false
957
+ */
958
+ function isEmpty(value) {
959
+ if (value == null) {
960
+ return true;
961
+ }
962
+ if (isArrayLike(value) &&
963
+ (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
964
+ isBuffer(value) || isTypedArray(value) || isArguments(value))) {
965
+ return !value.length;
966
+ }
967
+ var tag = getTag(value);
968
+ if (tag == mapTag || tag == setTag) {
969
+ return !value.size;
970
+ }
971
+ if (isPrototype(value)) {
972
+ return !baseKeys(value).length;
973
+ }
974
+ for (var key in value) {
975
+ if (hasOwnProperty.call(value, key)) {
976
+ return false;
977
+ }
978
+ }
979
+ return true;
980
+ }
981
+
982
+ module.exports = isEmpty;
983
+
984
+
985
+ /***/ }),
986
+ /* 10 */
987
+ /***/ (function(module, exports, __webpack_require__) {
988
+
989
+ var baseForOwn = __webpack_require__(30),
990
+ castFunction = __webpack_require__(34);
991
+
992
+ /**
993
+ * Iterates over own enumerable string keyed properties of an object and
994
+ * invokes `iteratee` for each property. The iteratee is invoked with three
995
+ * arguments: (value, key, object). Iteratee functions may exit iteration
996
+ * early by explicitly returning `false`.
997
+ *
998
+ * @static
999
+ * @memberOf _
1000
+ * @since 0.3.0
1001
+ * @category Object
1002
+ * @param {Object} object The object to iterate over.
1003
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1004
+ * @returns {Object} Returns `object`.
1005
+ * @see _.forOwnRight
1006
+ * @example
1007
+ *
1008
+ * function Foo() {
1009
+ * this.a = 1;
1010
+ * this.b = 2;
1011
+ * }
1012
+ *
1013
+ * Foo.prototype.c = 3;
1014
+ *
1015
+ * _.forOwn(new Foo, function(value, key) {
1016
+ * console.log(key);
1017
+ * });
1018
+ * // => Logs 'a' then 'b' (iteration order is not guaranteed).
1019
+ */
1020
+ function forOwn(object, iteratee) {
1021
+ return object && baseForOwn(object, castFunction(iteratee));
1022
+ }
1023
+
1024
+ module.exports = forOwn;
1025
+
1026
+
1027
+ /***/ }),
1028
+ /* 11 */
1029
+ /***/ (function(module, exports, __webpack_require__) {
1030
+
1031
+ "use strict";
1032
+
1033
+
1034
+ Object.defineProperty(exports, "__esModule", {
1035
+ value: true
1036
+ });
1037
+
1038
+ var _isUndefined2 = __webpack_require__(0);
1039
+
1040
+ var _isUndefined3 = _interopRequireDefault(_isUndefined2);
1041
+
1042
+ var _isString2 = __webpack_require__(2);
1043
+
1044
+ var _isString3 = _interopRequireDefault(_isString2);
1045
+
1046
+ var _forOwn2 = __webpack_require__(10);
1047
+
1048
+ var _forOwn3 = _interopRequireDefault(_forOwn2);
1049
+
1050
+ exports.bindAdvance = bindAdvance;
1051
+ exports.bindButtonEvents = bindButtonEvents;
1052
+ exports.bindCancelLink = bindCancelLink;
1053
+ exports.bindMethods = bindMethods;
1054
+
1055
+ var _utils = __webpack_require__(12);
1056
+
1057
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1058
+
1059
+ /**
1060
+ * Sets up the handler to determine if we should advance the tour
1061
+ * @private
1062
+ */
1063
+ function _setupAdvanceOnHandler(selector) {
1064
+ var _this = this;
1065
+
1066
+ return function (event) {
1067
+ if (_this.isOpen()) {
1068
+ var targetIsEl = _this.el && event.target === _this.el;
1069
+ var targetIsSelector = !(0, _isUndefined3.default)(selector) && event.target.matches(selector);
1070
+
1071
+ if (targetIsSelector || targetIsEl) {
1072
+ _this.tour.next();
1073
+ }
1074
+ }
1075
+ };
1076
+ }
1077
+ /**
1078
+ * Bind the event handler for advanceOn
1079
+ */
1080
+
1081
+
1082
+ function bindAdvance() {
1083
+ // An empty selector matches the step element
1084
+ var _parseShorthand = (0, _utils.parseShorthand)(this.options.advanceOn, ['selector', 'event']),
1085
+ event = _parseShorthand.event,
1086
+ selector = _parseShorthand.selector;
1087
+
1088
+ var handler = _setupAdvanceOnHandler.call(this, selector); // TODO: this should also bind/unbind on show/hide
1089
+
1090
+
1091
+ var el = document.querySelector(selector);
1092
+
1093
+ if (!(0, _isUndefined3.default)(selector) && el) {
1094
+ el.addEventListener(event, handler);
10
1095
  } else {
11
- root.Shepherd = factory(root.Tether);
1096
+ document.body.addEventListener(event, handler, true);
12
1097
  }
13
- }(this, function(Tether) {
14
1098
 
15
- /* global Tether */
1099
+ this.on('destroy', function () {
1100
+ return document.body.removeEventListener(event, handler, true);
1101
+ });
1102
+ }
1103
+ /**
1104
+ * Bind events to the buttons for next, back, etc
1105
+ * @param {Object} cfg An object containing the config options for the button
1106
+ * @param {HTMLElement} el The element for the button
1107
+ */
16
1108
 
17
- 'use strict';
18
1109
 
19
- var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
1110
+ function bindButtonEvents(cfg, el) {
1111
+ var _this2 = this;
20
1112
 
21
- var _get = function get(_x5, _x6, _x7) { var _again = true; _function: while (_again) { var object = _x5, property = _x6, receiver = _x7; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x5 = parent; _x6 = property; _x7 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
1113
+ cfg.events = cfg.events || {};
22
1114
 
23
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
1115
+ if (!(0, _isUndefined3.default)(cfg.action)) {
1116
+ // Including both a click event and an action is not supported
1117
+ cfg.events.click = cfg.action;
1118
+ }
24
1119
 
25
- function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
1120
+ (0, _forOwn3.default)(cfg.events, function (handler, event) {
1121
+ if ((0, _isString3.default)(handler)) {
1122
+ var page = handler;
26
1123
 
27
- var _Tether$Utils = Tether.Utils;
28
- var Evented = _Tether$Utils.Evented;
29
- var addClass = _Tether$Utils.addClass;
30
- var extend = _Tether$Utils.extend;
31
- var hasClass = _Tether$Utils.hasClass;
32
- var removeClass = _Tether$Utils.removeClass;
33
- var uniqueId = _Tether$Utils.uniqueId;
1124
+ handler = function handler() {
1125
+ return _this2.tour.show(page);
1126
+ };
1127
+ }
34
1128
 
35
- var Shepherd = new Evented();
1129
+ el.dataset.buttonEvent = true;
1130
+ el.addEventListener(event, handler); // Cleanup event listeners on destroy
36
1131
 
37
- function isUndefined(obj) {
38
- return typeof obj === 'undefined';
39
- };
1132
+ _this2.on('destroy', function () {
1133
+ el.removeAttribute('data-button-event');
1134
+ el.removeEventListener(event, handler);
1135
+ });
1136
+ });
1137
+ }
1138
+ /**
1139
+ * Add a click listener to the cancel link that cancels the tour
1140
+ * @param {HTMLElement} link The cancel link element
1141
+ */
40
1142
 
41
- function isArray(obj) {
42
- return obj && obj.constructor === Array;
43
- };
44
1143
 
45
- function isObject(obj) {
46
- return obj && obj.constructor === Object;
47
- };
1144
+ function bindCancelLink(link) {
1145
+ var _this3 = this;
48
1146
 
49
- function isObjectLoose(obj) {
50
- return typeof obj === 'object';
51
- };
1147
+ link.addEventListener('click', function (e) {
1148
+ e.preventDefault();
1149
+
1150
+ _this3.cancel();
1151
+ });
1152
+ }
1153
+ /**
1154
+ * Take an array of strings and look up methods by name, then bind them to `this`
1155
+ * @param {String[]} methods The names of methods to bind
1156
+ */
52
1157
 
53
- var ATTACHMENT = {
54
- 'top right': 'bottom left',
55
- 'top left': 'bottom right',
56
- 'top center': 'bottom center',
57
- 'middle right': 'middle left',
58
- 'middle left': 'middle right',
59
- 'middle center': 'middle center',
60
- 'bottom left': 'top right',
61
- 'bottom right': 'top left',
62
- 'bottom center': 'top center',
63
- 'top': 'bottom center',
64
- 'left': 'middle right',
65
- 'right': 'middle left',
66
- 'bottom': 'top center',
67
- 'center': 'middle center',
68
- 'middle': 'middle center'
1158
+
1159
+ function bindMethods(methods) {
1160
+ var _this4 = this;
1161
+
1162
+ methods.map(function (method) {
1163
+ _this4[method] = _this4[method].bind(_this4);
1164
+ });
1165
+ }
1166
+
1167
+ /***/ }),
1168
+ /* 12 */
1169
+ /***/ (function(module, exports, __webpack_require__) {
1170
+
1171
+ "use strict";
1172
+
1173
+
1174
+ Object.defineProperty(exports, "__esModule", {
1175
+ value: true
1176
+ });
1177
+
1178
+ var _zipObject2 = __webpack_require__(36);
1179
+
1180
+ var _zipObject3 = _interopRequireDefault(_zipObject2);
1181
+
1182
+ var _isUndefined2 = __webpack_require__(0);
1183
+
1184
+ var _isUndefined3 = _interopRequireDefault(_isUndefined2);
1185
+
1186
+ var _isObjectLike2 = __webpack_require__(1);
1187
+
1188
+ var _isObjectLike3 = _interopRequireDefault(_isObjectLike2);
1189
+
1190
+ var _isString2 = __webpack_require__(2);
1191
+
1192
+ var _isString3 = _interopRequireDefault(_isString2);
1193
+
1194
+ exports.createFromHTML = createFromHTML;
1195
+ exports._parseAttachToOpts = _parseAttachToOpts;
1196
+ exports.parseShorthand = parseShorthand;
1197
+ exports.setupTooltip = setupTooltip;
1198
+ exports.parseAttachTo = parseAttachTo;
1199
+
1200
+ var _tippy = __webpack_require__(13);
1201
+
1202
+ var _tippy2 = _interopRequireDefault(_tippy);
1203
+
1204
+ var _errorMessages = __webpack_require__(44);
1205
+
1206
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1207
+
1208
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
1209
+
1210
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1211
+
1212
+ var centeredStylePopperModifier = {
1213
+ computeStyle: {
1214
+ enabled: true,
1215
+ fn: function fn(data) {
1216
+ data.styles = Object.assign({}, data.styles, {
1217
+ left: '50%',
1218
+ top: '50%',
1219
+ transform: 'translate(-50%, -50%)'
1220
+ });
1221
+ return data;
1222
+ }
1223
+ }
1224
+ }; // Used to compose settings for tippyOptions.popperOptions (https://atomiks.github.io/tippyjs/#popper-options-option)
1225
+
1226
+ var defaultPopperOptions = {
1227
+ positionFixed: true
69
1228
  };
1229
+ /**
1230
+ * TODO rewrite the way items are being added to use more performant documentFragment code
1231
+ * @param html
1232
+ * @return {HTMLElement} The element created from the passed HTML string
1233
+ */
70
1234
 
71
1235
  function createFromHTML(html) {
72
1236
  var el = document.createElement('div');
73
1237
  el.innerHTML = html;
74
1238
  return el.children[0];
75
1239
  }
76
-
77
- function matchesSelector(el, sel) {
78
- var matches = undefined;
79
- if (!isUndefined(el.matches)) {
80
- matches = el.matches;
81
- } else if (!isUndefined(el.matchesSelector)) {
82
- matches = el.matchesSelector;
83
- } else if (!isUndefined(el.msMatchesSelector)) {
84
- matches = el.msMatchesSelector;
85
- } else if (!isUndefined(el.webkitMatchesSelector)) {
86
- matches = el.webkitMatchesSelector;
87
- } else if (!isUndefined(el.mozMatchesSelector)) {
88
- matches = el.mozMatchesSelector;
89
- } else if (!isUndefined(el.oMatchesSelector)) {
90
- matches = el.oMatchesSelector;
91
- }
92
- return matches.call(el, sel);
93
- }
94
-
95
- var positionRe = /^(.+) (top|left|right|bottom|center|\[[a-z ]+\])$/;
96
-
97
- function parsePosition(str) {
98
- if (isObjectLoose(str)) {
99
- if (str.hasOwnProperty("element") && str.hasOwnProperty("on")) {
100
- return str;
1240
+ /**
1241
+ * Parse the position object or string to return the attachment and element to attach to
1242
+ * @param {Object|String} position Either a string or object denoting the selector and position for attachment
1243
+ * @return {Object} The object with `element` and `on` for the step
1244
+ * @private
1245
+ */
1246
+
1247
+
1248
+ function _parseAttachToOpts(opts) {
1249
+ if ((0, _isObjectLike3.default)(opts)) {
1250
+ if (opts.hasOwnProperty('element') && opts.hasOwnProperty('on')) {
1251
+ return opts;
101
1252
  }
1253
+
102
1254
  return null;
103
1255
  }
104
1256
 
105
- var matches = positionRe.exec(str);
1257
+ var positionRe = /^(.+) ((auto|top|left|right|bottom)(-start|-end)?)$/;
1258
+ var matches = positionRe.exec(opts);
1259
+
106
1260
  if (!matches) {
107
1261
  return null;
108
1262
  }
109
1263
 
110
- var on = matches[2];
111
- if (on[0] === '[') {
112
- on = on.substring(1, on.length - 1);
113
- }
114
-
115
1264
  return {
116
- 'element': matches[1],
117
- 'on': on
1265
+ element: matches[1],
1266
+ on: matches[2]
118
1267
  };
119
1268
  }
1269
+ /**
1270
+ * @param obj
1271
+ * @param {Array} props
1272
+ * @return {*}
1273
+ */
1274
+
120
1275
 
121
1276
  function parseShorthand(obj, props) {
122
- if (obj === null || isUndefined(obj)) {
1277
+ if (obj === null || (0, _isUndefined3.default)(obj)) {
123
1278
  return obj;
124
- } else if (isObjectLoose(obj)) {
1279
+ } else if ((0, _isObjectLike3.default)(obj)) {
125
1280
  return obj;
126
1281
  }
127
1282
 
128
- var vals = obj.split(' ');
129
- var out = {};
130
- var j = props.length - 1;
131
- for (var i = vals.length - 1; i >= 0; i--) {
132
- if (j === 0) {
133
- out[props[j]] = vals.slice(0, i + 1).join(' ');
134
- break;
135
- } else {
136
- out[props[j]] = vals[i];
1283
+ var values = obj.split(' ');
1284
+ return (0, _zipObject3.default)(props, values);
1285
+ }
1286
+ /**
1287
+ * Determines options for the tooltip and initializes
1288
+ * `this.tooltip` as a Tippy.js instance.
1289
+ */
1290
+
1291
+
1292
+ function setupTooltip() {
1293
+ if ((0, _isUndefined3.default)(_tippy2.default)) {
1294
+ throw new Error(_errorMessages.missingTippy);
1295
+ }
1296
+
1297
+ if (this.tooltip) {
1298
+ this.tooltip.destroy();
1299
+ }
1300
+
1301
+ var attachToOpts = this.parseAttachTo();
1302
+ this.tooltip = _makeTippyInstance.call(this, attachToOpts);
1303
+ this.target = attachToOpts.element || document.body;
1304
+ this.el.classList.add('shepherd-element');
1305
+ }
1306
+ /**
1307
+ * Passes `options.attachTo` to `_parseAttachToOpts` to get the correct `attachTo` format
1308
+ * @returns {({} & {element, on}) | ({})}
1309
+ * `element` is a qualified HTML Element
1310
+ * `on` is a string position value
1311
+ */
1312
+
1313
+
1314
+ function parseAttachTo() {
1315
+ var options = _parseAttachToOpts(this.options.attachTo) || {};
1316
+ var returnOpts = Object.assign({}, options);
1317
+
1318
+ if ((0, _isString3.default)(options.element)) {
1319
+ // Can't override the element in user opts reference because we can't
1320
+ // guarantee that the element will exist in the future.
1321
+ try {
1322
+ returnOpts.element = document.querySelector(options.element);
1323
+ } catch (e) {// TODO
137
1324
  }
138
1325
 
139
- j--;
1326
+ if (!returnOpts.element) {
1327
+ console.error("The element for this Shepherd step was not found ".concat(options.element));
1328
+ }
140
1329
  }
141
1330
 
142
- return out;
1331
+ return returnOpts;
143
1332
  }
1333
+ /**
1334
+ * Generates a `Tippy` instance from a set of base `attachTo` options
1335
+ *
1336
+ * @return {tippy} The final tippy instance
1337
+ * @private
1338
+ */
144
1339
 
145
- var Step = (function (_Evented) {
146
- _inherits(Step, _Evented);
147
1340
 
148
- function Step(tour, options) {
149
- _classCallCheck(this, Step);
1341
+ function _makeTippyInstance(attachToOptions) {
1342
+ if (!attachToOptions.element) {
1343
+ return _makeCenteredTippy.call(this);
1344
+ }
150
1345
 
151
- _get(Object.getPrototypeOf(Step.prototype), 'constructor', this).call(this, tour, options);
152
- this.tour = tour;
153
- this.bindMethods();
154
- this.setOptions(options);
155
- return this;
1346
+ var tippyOptions = _makeAttachedTippyOptions.call(this, attachToOptions);
1347
+
1348
+ return _tippy2.default.one(attachToOptions.element, tippyOptions);
1349
+ }
1350
+ /**
1351
+ * Generates the hash of options that will be passed to `Tippy` instances
1352
+ * target an element in the DOM.
1353
+ *
1354
+ * @param {Object} attachToOptions The local `attachTo` options
1355
+ * @return {Object} The final tippy options object
1356
+ * @private
1357
+ */
1358
+
1359
+
1360
+ function _makeAttachedTippyOptions(attachToOptions) {
1361
+ var resultingTippyOptions = _objectSpread({
1362
+ content: this.el,
1363
+ placement: attachToOptions.on || 'right'
1364
+ }, this.options.tippyOptions);
1365
+
1366
+ if (this.options.tippyOptions && this.options.tippyOptions.popperOptions) {
1367
+ Object.assign(defaultPopperOptions, this.options.tippyOptions.popperOptions);
156
1368
  }
157
1369
 
158
- _createClass(Step, [{
159
- key: 'bindMethods',
160
- value: function bindMethods() {
161
- var _this = this;
1370
+ resultingTippyOptions.popperOptions = defaultPopperOptions;
1371
+ return resultingTippyOptions;
1372
+ }
1373
+ /**
1374
+ * Generates a `Tippy` instance for a tooltip that doesn't have a
1375
+ * target element in the DOM -- and thus is positioned in the center
1376
+ * of the view
1377
+ *
1378
+ * @return {tippy} The final tippy instance
1379
+ * @private
1380
+ */
1381
+
1382
+
1383
+ function _makeCenteredTippy() {
1384
+ var tippyOptions = _objectSpread({
1385
+ content: this.el,
1386
+ placement: 'top'
1387
+ }, this.options.tippyOptions);
1388
+
1389
+ tippyOptions.arrow = false;
1390
+ tippyOptions.popperOptions = tippyOptions.popperOptions || {};
1391
+ var finalPopperOptions = Object.assign({}, defaultPopperOptions, tippyOptions.popperOptions, {
1392
+ modifiers: Object.assign(centeredStylePopperModifier, tippyOptions.popperOptions.modifiers)
1393
+ });
1394
+ tippyOptions.popperOptions = finalPopperOptions;
1395
+ return _tippy2.default.one(document.body, tippyOptions);
1396
+ }
162
1397
 
163
- var methods = ['_show', 'show', 'hide', 'isOpen', 'cancel', 'complete', 'scrollTo', 'destroy', 'render'];
164
- methods.map(function (method) {
165
- _this[method] = _this[method].bind(_this);
166
- });
167
- }
168
- }, {
169
- key: 'setOptions',
170
- value: function setOptions() {
171
- var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
1398
+ /***/ }),
1399
+ /* 13 */
1400
+ /***/ (function(module, exports, __webpack_require__) {
1401
+
1402
+ /* WEBPACK VAR INJECTION */(function(global) {(function(e,t){ true?module.exports=t():undefined})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var a=getComputedStyle(e,null);return t?a[t]:a}function a(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function r(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var p=t(e),o=p.overflow,i=p.overflowX,n=p.overflowY;return /(auto|scroll|overlay)/.test(o+n+i)?e:r(a(e))}function p(e){return 11===e?he:10===e?be:he||be}function o(e){if(!e)return document.documentElement;for(var a=p(10)?document.body:null,r=e.offsetParent;r===a&&e.nextElementSibling;)r=(e=e.nextElementSibling).offsetParent;var i=r&&r.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(r.nodeName)&&'static'===t(r,'position')?o(r):r:e?e.ownerDocument.documentElement:document.documentElement}function n(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||o(e.firstElementChild)===e)}function s(e){return null===e.parentNode?e:s(e.parentNode)}function l(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var a=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,r=a?e:t,p=a?t:e,i=document.createRange();i.setStart(r,0),i.setEnd(p,0);var d=i.commonAncestorContainer;if(e!==d&&t!==d||r.contains(p))return n(d)?d:o(d);var c=s(e);return c.host?l(c.host,t):l(e,s(t).host)}function d(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',a='top'===t?'scrollTop':'scrollLeft',r=e.nodeName;if('BODY'===r||'HTML'===r){var p=e.ownerDocument.documentElement,o=e.ownerDocument.scrollingElement||p;return o[a]}return e[a]}function c(e,t){var a=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],r=d(t,'top'),p=d(t,'left'),o=a?-1:1;return e.top+=r*o,e.bottom+=r*o,e.left+=p*o,e.right+=p*o,e}function m(e,t){var a='x'===t?'Left':'Top',r='Left'===a?'Right':'Bottom';return parseFloat(e['border'+a+'Width'],10)+parseFloat(e['border'+r+'Width'],10)}function f(e,t,a,r){return ae(t['offset'+e],t['scroll'+e],a['client'+e],a['offset'+e],a['scroll'+e],p(10)?parseInt(a['offset'+e])+parseInt(r['margin'+('Height'===e?'Top':'Left')])+parseInt(r['margin'+('Height'===e?'Bottom':'Right')]):0)}function h(e){var t=e.body,a=e.documentElement,r=p(10)&&getComputedStyle(a);return{height:f('Height',t,a,r),width:f('Width',t,a,r)}}function b(e){return xe({},e,{right:e.left+e.width,bottom:e.top+e.height})}function u(e){var a={};try{if(p(10)){a=e.getBoundingClientRect();var r=d(e,'top'),o=d(e,'left');a.top+=r,a.left+=o,a.bottom+=r,a.right+=o}else a=e.getBoundingClientRect()}catch(t){}var i={left:a.left,top:a.top,width:a.right-a.left,height:a.bottom-a.top},n='HTML'===e.nodeName?h(e.ownerDocument):{},s=n.width||e.clientWidth||i.right-i.left,l=n.height||e.clientHeight||i.bottom-i.top,c=e.offsetWidth-s,f=e.offsetHeight-l;if(c||f){var y=t(e);c-=m(y,'x'),f-=m(y,'y'),i.width-=c,i.height-=f}return b(i)}function y(e,a){var o=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],i=p(10),n='HTML'===a.nodeName,s=u(e),l=u(a),d=r(e),m=t(a),f=parseFloat(m.borderTopWidth,10),h=parseFloat(m.borderLeftWidth,10);o&&n&&(l.top=ae(l.top,0),l.left=ae(l.left,0));var y=b({top:s.top-l.top-f,left:s.left-l.left-h,width:s.width,height:s.height});if(y.marginTop=0,y.marginLeft=0,!i&&n){var g=parseFloat(m.marginTop,10),x=parseFloat(m.marginLeft,10);y.top-=f-g,y.bottom-=f-g,y.left-=h-x,y.right-=h-x,y.marginTop=g,y.marginLeft=x}return(i&&!o?a.contains(d):a===d&&'BODY'!==d.nodeName)&&(y=c(y,a)),y}function g(e){var t=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],a=e.ownerDocument.documentElement,r=y(e,a),p=ae(a.clientWidth,window.innerWidth||0),o=ae(a.clientHeight,window.innerHeight||0),i=t?0:d(a),n=t?0:d(a,'left'),s={top:i-r.top+r.marginTop,left:n-r.left+r.marginLeft,width:p,height:o};return b(s)}function x(e){var r=e.nodeName;return'BODY'!==r&&'HTML'!==r&&('fixed'===t(e,'position')||x(a(e)))}function w(e){if(!e||!e.parentElement||p())return document.documentElement;for(var a=e.parentElement;a&&'none'===t(a,'transform');)a=a.parentElement;return a||document.documentElement}function v(e,t,p,o){var i=!!(4<arguments.length&&void 0!==arguments[4])&&arguments[4],n={top:0,left:0},s=i?w(e):l(e,t);if('viewport'===o)n=g(s,i);else{var d;'scrollParent'===o?(d=r(a(t)),'BODY'===d.nodeName&&(d=e.ownerDocument.documentElement)):'window'===o?d=e.ownerDocument.documentElement:d=o;var c=y(d,s,i);if('HTML'===d.nodeName&&!x(s)){var m=h(e.ownerDocument),f=m.height,b=m.width;n.top+=c.top-c.marginTop,n.bottom=f+c.top,n.left+=c.left-c.marginLeft,n.right=b+c.left}else n=c}p=p||0;var u='number'==typeof p;return n.left+=u?p:p.left||0,n.top+=u?p:p.top||0,n.right-=u?p:p.right||0,n.bottom-=u?p:p.bottom||0,n}function k(e){var t=e.width,a=e.height;return t*a}function E(e,t,a,r,p){var o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var i=v(a,r,o,p),n={top:{width:i.width,height:t.top-i.top},right:{width:i.right-t.right,height:i.height},bottom:{width:i.width,height:i.bottom-t.bottom},left:{width:t.left-i.left,height:i.height}},s=Object.keys(n).map(function(e){return xe({key:e},n[e],{area:k(n[e])})}).sort(function(e,t){return t.area-e.area}),l=s.filter(function(e){var t=e.width,r=e.height;return t>=a.clientWidth&&r>=a.clientHeight}),d=0<l.length?l[0].key:s[0].key,c=e.split('-')[1];return d+(c?'-'+c:'')}function O(e,t,a){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,p=r?w(t):l(t,a);return y(a,p,r)}function L(e){var t=getComputedStyle(e),a=parseFloat(t.marginTop)+parseFloat(t.marginBottom),r=parseFloat(t.marginLeft)+parseFloat(t.marginRight),p={width:e.offsetWidth+r,height:e.offsetHeight+a};return p}function C(e){var t={left:'right',right:'left',bottom:'top',top:'bottom'};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,a){a=a.split('-')[0];var r=L(e),p={width:r.width,height:r.height},o=-1!==['right','left'].indexOf(a),i=o?'top':'left',n=o?'left':'top',s=o?'height':'width',l=o?'width':'height';return p[i]=t[i]+t[s]/2-r[s]/2,p[n]=a===n?t[n]-r[l]:t[C(n)],p}function A(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function Y(e,t,a){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===a});var r=A(e,function(e){return e[t]===a});return e.indexOf(r)}function S(t,a,r){var p=void 0===r?t:t.slice(0,Y(t,'name',r));return p.forEach(function(t){t['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var r=t['function']||t.fn;t.enabled&&e(r)&&(a.offsets.popper=b(a.offsets.popper),a.offsets.reference=b(a.offsets.reference),a=r(a,t))}),a}function P(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=O(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=E(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?'fixed':'absolute',e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var a=e.name,r=e.enabled;return r&&a===t})}function X(e){for(var t=[!1,'ms','Webkit','Moz','O'],a=e.charAt(0).toUpperCase()+e.slice(1),r=0;r<t.length;r++){var p=t[r],o=p?''+p+a:e;if('undefined'!=typeof document.body.style[o])return o}return null}function I(){return this.state.isDestroyed=!0,D(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.position='',this.popper.style.top='',this.popper.style.left='',this.popper.style.right='',this.popper.style.bottom='',this.popper.style.willChange='',this.popper.style[X('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function N(e){var t=e.ownerDocument;return t?t.defaultView:window}function H(e,t,a,p){var o='BODY'===e.nodeName,i=o?e.ownerDocument.defaultView:e;i.addEventListener(t,a,{passive:!0}),o||H(r(i.parentNode),t,a,p),p.push(i)}function R(e,t,a,p){a.updateBound=p,N(e).addEventListener('resize',a.updateBound,{passive:!0});var o=r(e);return H(o,'scroll',a.updateBound,a.scrollParents),a.scrollElement=o,a.eventsEnabled=!0,a}function B(){this.state.eventsEnabled||(this.state=R(this.reference,this.options,this.state,this.scheduleUpdate))}function M(e,t){return N(e).removeEventListener('resize',t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function W(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=M(this.reference,this.state))}function z(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function _(e,t){Object.keys(t).forEach(function(a){var r='';-1!==['width','height','top','right','bottom','left'].indexOf(a)&&z(t[a])&&(r='px'),e.style[a]=t[a]+r})}function U(e,t){Object.keys(t).forEach(function(a){var r=t[a];!1===r?e.removeAttribute(a):e.setAttribute(a,t[a])})}function F(e,t,a){var r=A(e,function(e){var a=e.name;return a===t}),p=!!r&&e.some(function(e){return e.name===a&&e.enabled&&e.order<r.order});if(!p){var o='`'+t+'`';console.warn('`'+a+'`'+' modifier is required by '+o+' modifier in order to work, be sure to include it before '+o+'!')}return p}function V(e){return'end'===e?'start':'start'===e?'end':e}function q(e){var t=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],a=ve.indexOf(e),r=ve.slice(a+1).concat(ve.slice(0,a));return t?r.reverse():r}function j(e,t,a,r){var p=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+p[1],i=p[2];if(!o)return e;if(0===i.indexOf('%')){var n;switch(i){case'%p':n=a;break;case'%':case'%r':default:n=r;}var s=b(n);return s[t]/100*o}if('vh'===i||'vw'===i){var l;return l='vh'===i?ae(document.documentElement.clientHeight,window.innerHeight||0):ae(document.documentElement.clientWidth,window.innerWidth||0),l/100*o}return o}function K(e,t,a,r){var p=[0,0],o=-1!==['right','left'].indexOf(r),i=e.split(/(\+|\-)/).map(function(e){return e.trim()}),n=i.indexOf(A(i,function(e){return-1!==e.search(/,|\s/)}));i[n]&&-1===i[n].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var s=/\s*,\s*|\s+/,l=-1===n?[i]:[i.slice(0,n).concat([i[n].split(s)[0]]),[i[n].split(s)[1]].concat(i.slice(n+1))];return l=l.map(function(e,r){var p=(1===r?!o:o)?'height':'width',i=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,i=!0,e):i?(e[e.length-1]+=t,i=!1,e):e.concat(t)},[]).map(function(e){return j(e,p,t,a)})}),l.forEach(function(e,t){e.forEach(function(a,r){z(a)&&(p[t]+=a*('-'===e[r-1]?-1:1))})}),p}function G(e,t){var a=t.offset,r=e.placement,p=e.offsets,o=p.popper,i=p.reference,n=r.split('-')[0],s=void 0;return s=z(+a)?[+a,0]:K(a,o,i,n),'left'===n?(o.top+=s[0],o.left-=s[1]):'right'===n?(o.top+=s[0],o.left+=s[1]):'top'===n?(o.left+=s[0],o.top-=s[1]):'bottom'===n&&(o.left+=s[0],o.top+=s[1]),e.popper=o,e}function Q(e){document.addEventListener('click',Ct,e),document.addEventListener('touchstart',Et),window.addEventListener('blur',Tt),window.addEventListener('resize',At),!vt&&(navigator.maxTouchPoints||navigator.msMaxTouchPoints)&&document.addEventListener('pointerdown',Et)}function Z(e,t){function a(){lt(function(){W=!1})}function r(e){var t=I=e,a=t.clientX,r=t.clientY;if(q.popperInstance){var p=q.reference.getBoundingClientRect(),o=q.props.followCursor,i='horizontal'===o,n='vertical'===o;q.popperInstance.reference={getBoundingClientRect:function(){return{width:0,height:0,top:i?p.top:r,bottom:i?p.bottom:r,left:n?p.left:a,right:n?p.right:a}},clientWidth:0,clientHeight:0},q.popperInstance.scheduleUpdate()}}function p(e){var t=Ze(e.target,q.props.target);t&&!t._tippy&&(Z(t,oe({},q.props,{target:'',showOnInit:!0})),o(e))}function o(e){if(C(),!q.state.isVisible){if(q.props.target)return p(e);if(R=!0,q.props.wait)return q.props.wait(q,e);g()&&(V.arrow&&(V.arrow.style.margin='0'),document.addEventListener('mousemove',r));var t=Be(q.props.delay,0,ie.delay);t?N=setTimeout(function(){A()},t):A()}}function i(){if(C(),!q.state.isVisible)return n();R=!1;var e=Be(q.props.delay,1,ie.delay);e?H=setTimeout(function(){q.state.isVisible&&Y()},e):Y()}function n(){document.removeEventListener('mousemove',r),I=null}function s(){document.body.removeEventListener('mouseleave',i),document.removeEventListener('mousemove',_)}function l(e){!q.state.isEnabled||b(e)||(!q.state.isVisible&&(X=e),'click'===e.type&&!1!==q.props.hideOnClick&&q.state.isVisible?i():o(e))}function d(e){var t=$e(e.target,function(e){return e._tippy}),a=Ze(e.target,Oe.POPPER)===q.popper,r=t===q.reference;a||r||dt(mt(q.popper),q.popper.getBoundingClientRect(),e,q.props)&&(s(),i())}function c(e){return b(e)?void 0:q.props.interactive?(document.body.addEventListener('mouseleave',i),void document.addEventListener('mousemove',_)):void i()}function m(e){if(e.target===q.reference){if(q.props.interactive){if(!e.relatedTarget)return;if(Ze(e.relatedTarget,Oe.POPPER))return}i()}}function f(e){Ze(e.target,q.props.target)&&o(e)}function h(e){Ze(e.target,q.props.target)&&i()}function b(e){var t=-1<e.type.indexOf('touch'),a=vt&&kt&&q.props.touchHold&&!t,r=kt&&!q.props.touchHold&&t;return a||r}function y(){var e=q.popperChildren.tooltip,t=q.props.popperOptions,a=Oe['round'===q.props.arrowType?'ROUND_ARROW':'ARROW'],r=e.querySelector(a),p=oe({placement:q.props.placement},t||{},{modifiers:oe({},t?t.modifiers:{},{arrow:oe({element:a},t&&t.modifiers?t.modifiers.arrow:{}),flip:oe({enabled:q.props.flip,padding:q.props.distance+5,behavior:q.props.flipBehavior},t&&t.modifiers?t.modifiers.flip:{}),offset:oe({offset:q.props.offset},t&&t.modifiers?t.modifiers.offset:{})}),onCreate:function(){e.style[mt(q.popper)]=ct(q.props.distance,ie.distance),r&&q.props.arrowTransform&&it(r,q.props.arrowTransform)},onUpdate:function(){var t=e.style;t.top='',t.bottom='',t.left='',t.right='',t[mt(q.popper)]=ct(q.props.distance,ie.distance),r&&q.props.arrowTransform&&it(r,q.props.arrowTransform)}}),n=new MutationObserver(function(){q.popperInstance.update()});return n.observe(q.popper,{childList:!0,subtree:!0}),D&&D.disconnect(),D=n,z||(z=!0,q.popper.addEventListener('mouseenter',function(e){q.props.interactive&&q.state.isVisible&&'mouseenter'===X.type&&o(e)}),q.popper.addEventListener('mouseleave',function(e){q.props.interactive&&'mouseenter'===X.type&&0===q.props.interactiveDebounce&&dt(mt(q.popper),q.popper.getBoundingClientRect(),e,q.props)&&i()})),new Ee(q.reference,q.popper,p)}function u(e){if(q.popperInstance?(!g()&&q.popperInstance.scheduleUpdate(),q.props.livePlacement&&!g()&&q.popperInstance.enableEventListeners()):(q.popperInstance=y(),!q.props.livePlacement&&q.popperInstance.disableEventListeners()),q.popperInstance.reference=q.reference,g()){q.popperChildren.arrow&&(q.popperChildren.arrow.style.margin='');var t=Be(q.props.delay,0,ie.delay);X.type&&r(t&&I?I:X)}st(q.popperInstance,e),q.props.appendTo.contains(q.popper)||(q.props.appendTo.appendChild(q.popper),q.props.onMount(q),q.state.isMounted=!0)}function g(){return q.props.followCursor&&!kt&&'focus'!==X.type}function x(){Pe([q.popper],xt?0:q.props.updateDuration);(function e(){q.popperInstance&&q.popperInstance.scheduleUpdate(),q.state.isMounted?requestAnimationFrame(e):Pe([q.popper],0)})()}function w(e,t){k(e,function(){!q.state.isVisible&&q.props.appendTo.contains(q.popper)&&t()})}function v(e,t){k(e,t)}function k(e,t){if(0===e)return t();var a=q.popperChildren.tooltip,r=function r(p){p.target===a&&(ht(a,'remove',r),t())};ht(a,'remove',B),ht(a,'add',r),B=r}function E(e,t,a){q.reference.addEventListener(e,t),a.push({eventType:e,handler:t})}function O(){M=q.props.trigger.trim().split(' ').reduce(function(e,t){return'manual'===t?e:(q.props.target?'mouseenter'===t?(E('mouseover',f,e),E('mouseout',h,e)):'focus'===t?(E('focusin',f,e),E('focusout',h,e)):'click'===t?E(t,f,e):void 0:(E(t,l,e),q.props.touchHold&&(E('touchstart',l,e),E('touchend',c,e)),'mouseenter'===t?E('mouseleave',c,e):'focus'===t?E(xt?'focusout':'blur',m,e):void 0),e)},[])}function L(){M.forEach(function(e){var t=e.eventType,a=e.handler;q.reference.removeEventListener(t,a)})}function C(){clearTimeout(N),clearTimeout(H)}function T(e){yt(e,ie);var t=q.props,a=ft(q.reference,oe({},q.props,e,{performance:!0}));a.performance=e.performance||t.performance,q.props=a,('trigger'in e||'touchHold'in e)&&(L(),O()),'interactiveDebounce'in e&&(s(),_=bt(d,e.interactiveDebounce)),qe(q.popper,t,a),q.popperChildren=De(q.popper),q.popperInstance&&se.some(function(t){return t in e})&&(q.popperInstance.destroy(),q.popperInstance=y(),!q.state.isVisible&&q.popperInstance.disableEventListeners(),q.props.followCursor&&I&&r(I))}function A(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:Be(q.props.duration,0,ie.duration[0]);return q.state.isDestroyed||!q.state.isEnabled||kt&&!q.props.touch?void 0:q.reference.isVirtual||document.documentElement.contains(q.reference)?q.reference.hasAttribute('disabled')?void 0:W?void(W=!1):void(!1===q.props.onShow(q)||(q.popper.style.visibility='visible',q.state.isVisible=!0,Pe([q.popper,q.popperChildren.tooltip,q.popperChildren.backdrop],0),u(function(){q.state.isVisible&&(!g()&&q.popperInstance.update(),Pe([q.popperChildren.tooltip,q.popperChildren.backdrop,q.popperChildren.content],e),q.popperChildren.backdrop&&(q.popperChildren.content.style.transitionDelay=ee(e/6)+'ms'),q.props.interactive&&q.reference.classList.add('tippy-active'),q.props.sticky&&x(),nt([q.popperChildren.tooltip,q.popperChildren.backdrop,q.popperChildren.content],'visible'),v(e,function(){0===q.props.updateDuration&&q.popperChildren.tooltip.classList.add('tippy-notransition'),q.props.interactive&&-1<['focus','click'].indexOf(X.type)&&Je(q.popper),q.reference.setAttribute('aria-describedby',q.popper.id),q.props.onShown(q),q.state.isShown=!0}))}))):S()}function Y(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:Be(q.props.duration,1,ie.duration[1]);q.state.isDestroyed||!q.state.isEnabled||!1===q.props.onHide(q)||(0===q.props.updateDuration&&q.popperChildren.tooltip.classList.remove('tippy-notransition'),q.props.interactive&&q.reference.classList.remove('tippy-active'),q.popper.style.visibility='hidden',q.state.isVisible=!1,q.state.isShown=!1,Pe([q.popperChildren.tooltip,q.popperChildren.backdrop,q.popperChildren.content],e),nt([q.popperChildren.tooltip,q.popperChildren.backdrop,q.popperChildren.content],'hidden'),q.props.interactive&&!W&&-1<['focus','click'].indexOf(X.type)&&('focus'===X.type&&(W=!0),Je(q.reference)),w(e,function(){R||n(),q.reference.removeAttribute('aria-describedby'),q.popperInstance.disableEventListeners(),q.props.appendTo.removeChild(q.popper),q.state.isMounted=!1,q.props.onHidden(q)}))}function S(e){q.state.isDestroyed||(q.state.isVisible&&Y(0),L(),q.reference.removeEventListener('click',a),delete q.reference._tippy,q.props.target&&e&&Ae(q.reference.querySelectorAll(q.props.target)).forEach(function(e){return e._tippy&&e._tippy.destroy()}),q.popperInstance&&q.popperInstance.destroy(),D&&D.disconnect(),q.state.isDestroyed=!0)}var P=ft(e,t);if(!P.multiple&&e._tippy)return null;var D=null,X={},I=null,N=0,H=0,R=!1,B=function(){},M=[],W=!1,z=!1,_=0<P.interactiveDebounce?bt(d,P.interactiveDebounce):d,U=Yt++,F=Ve(U,P),V=De(F),q={id:U,reference:e,popper:F,popperChildren:V,popperInstance:null,props:P,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},clearDelayTimeouts:C,set:T,setContent:function(e){T({content:e})},show:A,hide:Y,enable:function(){q.state.isEnabled=!0},disable:function(){q.state.isEnabled=!1},destroy:S};return O(),e.addEventListener('click',a),P.lazy||(q.popperInstance=y(),q.popperInstance.disableEventListeners()),P.showOnInit&&setTimeout(o,20),!P.a11y||P.target||Se(e)||e.setAttribute('tabindex','0'),e._tippy=q,F._tippy=q,q}function $(e,t,a){yt(t,ie),St||(Q(Pt),St=!0);var r=oe({},ie,t);Xe(e)&&Ge(e);var p=He(e),o=p[0],i=(a&&o?[o]:p).reduce(function(e,t){var a=t&&Z(t,r);return a&&e.push(a),e},[]);return{targets:e,props:r,instances:i,destroyAll:function(){this.instances.forEach(function(e){e.destroy()}),this.instances=[]}}}for(var J=Math.min,ee=Math.round,te=Math.floor,ae=Math.max,re='.tippy-iOS{cursor:pointer!important}.tippy-notransition{transition:none!important}.tippy-popper{-webkit-perspective:700px;perspective:700px;z-index:9999;outline:0;transition-timing-function:cubic-bezier(.165,.84,.44,1);pointer-events:none;line-height:1.4}.tippy-popper[x-placement^=top] .tippy-backdrop{border-radius:40% 40% 0 0}.tippy-popper[x-placement^=top] .tippy-roundarrow{bottom:-8px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.tippy-popper[x-placement^=top] .tippy-arrow{border-top:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;bottom:-7px;margin:0 6px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-backdrop{-webkit-transform-origin:0 25%;transform-origin:0 25%}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-55%);transform:scale(1) translate(-50%,-55%);opacity:1}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-50%,-45%);transform:scale(.2) translate(-50%,-45%);opacity:0}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}.tippy-popper[x-placement^=top] [data-animation=perspective]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px) rotateX(0);transform:translateY(-10px) rotateX(0)}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(60deg);transform:translateY(0) rotateX(60deg)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(.5);transform:translateY(0) scale(.5)}.tippy-popper[x-placement^=bottom] .tippy-backdrop{border-radius:0 0 30% 30%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow{top:-8px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(0);transform:rotate(0)}.tippy-popper[x-placement^=bottom] .tippy-arrow{border-bottom:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;top:-7px;margin:0 6px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-backdrop{-webkit-transform-origin:0 -50%;transform-origin:0 -50%}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-45%);transform:scale(1) translate(-50%,-45%);opacity:1}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-50%);transform:scale(.2) translate(-50%);opacity:0}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}.tippy-popper[x-placement^=bottom] [data-animation=perspective]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateY(10px) rotateX(0);transform:translateY(10px) rotateX(0)}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(-60deg);transform:translateY(0) rotateX(-60deg)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(.5);transform:translateY(0) scale(.5)}.tippy-popper[x-placement^=left] .tippy-backdrop{border-radius:50% 0 0 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow{right:-16px;-webkit-transform-origin:33.33333333% 50%;transform-origin:33.33333333% 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.tippy-popper[x-placement^=left] .tippy-arrow{border-left:8px solid #333;border-top:8px solid transparent;border-bottom:8px solid transparent;right:-7px;margin:3px 0;-webkit-transform-origin:0 50%;transform-origin:0 50%}.tippy-popper[x-placement^=left] .tippy-backdrop{-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%);opacity:1}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-75%,-50%);transform:scale(.2) translate(-75%,-50%);opacity:0}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}.tippy-popper[x-placement^=left] [data-animation=perspective]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px) rotateY(0);transform:translateX(-10px) rotateY(0)}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(-60deg);transform:translateX(0) rotateY(-60deg)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(.5);transform:translateX(0) scale(.5)}.tippy-popper[x-placement^=right] .tippy-backdrop{border-radius:0 50% 50% 0}.tippy-popper[x-placement^=right] .tippy-roundarrow{left:-16px;-webkit-transform-origin:66.66666666% 50%;transform-origin:66.66666666% 50%}.tippy-popper[x-placement^=right] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.tippy-popper[x-placement^=right] .tippy-arrow{border-right:8px solid #333;border-top:8px solid transparent;border-bottom:8px solid transparent;left:-7px;margin:3px 0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tippy-popper[x-placement^=right] .tippy-backdrop{-webkit-transform-origin:-50% 0;transform-origin:-50% 0}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%);opacity:1}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-25%,-50%);transform:scale(.2) translate(-25%,-50%);opacity:0}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.tippy-popper[x-placement^=right] [data-animation=perspective]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateX(10px) rotateY(0);transform:translateX(10px) rotateY(0)}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(60deg);transform:translateX(0) rotateY(60deg)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(.5);transform:translateX(0) scale(.5)}.tippy-tooltip{position:relative;color:#fff;border-radius:4px;font-size:.9rem;padding:.3rem .6rem;max-width:350px;text-align:center;will-change:transform;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#333}.tippy-tooltip[data-size=small]{padding:.2rem .4rem;font-size:.75rem}.tippy-tooltip[data-size=large]{padding:.4rem .8rem;font-size:1rem}.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent}.tippy-tooltip[data-interactive],.tippy-tooltip[data-interactive] path{pointer-events:auto}.tippy-tooltip[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.53,2,.36,.85)}.tippy-tooltip[data-inertia][data-state=hidden]{transition-timing-function:ease}.tippy-arrow,.tippy-roundarrow{position:absolute;width:0;height:0}.tippy-roundarrow{width:24px;height:8px;fill:#333;pointer-events:none}.tippy-backdrop{position:absolute;will-change:transform;background-color:#333;border-radius:50%;width:calc(110% + 2rem);left:50%;top:50%;z-index:-1;transition:all cubic-bezier(.46,.1,.52,.98);-webkit-backface-visibility:hidden;backface-visibility:hidden}.tippy-backdrop:after{content:"";float:left;padding-top:100%}.tippy-backdrop+.tippy-content{transition-property:opacity}.tippy-backdrop+.tippy-content[data-state=visible]{opacity:1}.tippy-backdrop+.tippy-content[data-state=hidden]{opacity:0}@media (max-width:360px){.tippy-popper{max-width:96%;max-width:calc(100% - 20px)}}',pe='3.1.1',oe=Object.assign||function(e){for(var t,a=1;a<arguments.length;a++)for(var r in t=arguments[a],t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},ie={a11y:!0,content:'',placement:'top',livePlacement:!0,trigger:'mouseenter focus',hideOnClick:!0,animation:'shift-away',animateFill:!0,arrow:!1,delay:[0,20],duration:[325,275],interactive:!1,interactiveBorder:2,interactiveDebounce:0,theme:'dark',size:'regular',distance:10,offset:0,multiple:!1,followCursor:!1,inertia:!1,updateDuration:200,sticky:!1,appendTo:function(){return document.body},zIndex:9999,touchHold:!1,performance:!1,flip:!0,flipBehavior:'flip',arrowType:'sharp',arrowTransform:'',target:'',allowHTML:!0,showOnInit:!1,popperOptions:{},lazy:!0,touch:!0,wait:null,shouldPopperHideOnBlur:function(){return!0},onShow:function(){},onShown:function(){},onHide:function(){},onHidden:function(){},onMount:function(){}},ne=function(e){ie=oe({},ie,e)},se=['placement','popperOptions','flip','flipBehavior','distance','offset'],le='undefined'!=typeof window&&'undefined'!=typeof document,de=['Edge','Trident','Firefox'],ce=0,me=0;me<de.length;me+=1)if(le&&0<=navigator.userAgent.indexOf(de[me])){ce=1;break}var i=le&&window.Promise,fe=i?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},ce))}},he=le&&!!(window.MSInputMethodContext&&document.documentMode),be=le&&/MSIE 10/.test(navigator.userAgent),ye=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')},ue=function(){function e(e,t){for(var a,r=0;r<t.length;r++)a=t[r],a.enumerable=a.enumerable||!1,a.configurable=!0,'value'in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}return function(t,a,r){return a&&e(t.prototype,a),r&&e(t,r),t}}(),ge=function(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e},xe=Object.assign||function(e){for(var t,a=1;a<arguments.length;a++)for(var r in t=arguments[a],t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},we=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],ve=we.slice(3),ke={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},Ee=function(){function t(a,r){var p=this,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};ye(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(p.update)},this.update=fe(this.update.bind(this)),this.options=xe({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=a&&a.jquery?a[0]:a,this.popper=r&&r.jquery?r[0]:r,this.options.modifiers={},Object.keys(xe({},t.Defaults.modifiers,o.modifiers)).forEach(function(e){p.options.modifiers[e]=xe({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return xe({name:e},p.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(t){t.enabled&&e(t.onLoad)&&t.onLoad(p.reference,p.popper,p.options,t,p.state)}),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return ue(t,[{key:'update',value:function(){return P.call(this)}},{key:'destroy',value:function(){return I.call(this)}},{key:'enableEventListeners',value:function(){return B.call(this)}},{key:'disableEventListeners',value:function(){return W.call(this)}}]),t}();Ee.Utils=('undefined'==typeof window?global:window).PopperUtils,Ee.placements=we,Ee.Defaults={placement:'bottom',positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,a=t.split('-')[0],r=t.split('-')[1];if(r){var p=e.offsets,o=p.reference,i=p.popper,n=-1!==['bottom','top'].indexOf(a),s=n?'left':'top',l=n?'width':'height',d={start:ge({},s,o[s]),end:ge({},s,o[s]+o[l]-i[l])};e.offsets.popper=xe({},i,d[r])}return e}},offset:{order:200,enabled:!0,fn:G,offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var a=t.boundariesElement||o(e.instance.popper);e.instance.reference===a&&(a=o(a));var r=X('transform'),p=e.instance.popper.style,i=p.top,n=p.left,s=p[r];p.top='',p.left='',p[r]='';var l=v(e.instance.popper,e.instance.reference,t.padding,a,e.positionFixed);p.top=i,p.left=n,p[r]=s,t.boundaries=l;var d=t.priority,c=e.offsets.popper,m={primary:function(e){var a=c[e];return c[e]<l[e]&&!t.escapeWithReference&&(a=ae(c[e],l[e])),ge({},e,a)},secondary:function(e){var a='right'===e?'left':'top',r=c[a];return c[e]>l[e]&&!t.escapeWithReference&&(r=J(c[a],l[e]-('right'===e?c.width:c.height))),ge({},a,r)}};return d.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';c=xe({},c,m[t](e))}),e.offsets.popper=c,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,a=t.popper,r=t.reference,p=e.placement.split('-')[0],o=te,i=-1!==['top','bottom'].indexOf(p),n=i?'right':'bottom',s=i?'left':'top',l=i?'width':'height';return a[n]<o(r[s])&&(e.offsets.popper[s]=o(r[s])-a[l]),a[s]>o(r[n])&&(e.offsets.popper[s]=o(r[n])),e}},arrow:{order:500,enabled:!0,fn:function(e,a){var r;if(!F(e.instance.modifiers,'arrow','keepTogether'))return e;var p=a.element;if('string'==typeof p){if(p=e.instance.popper.querySelector(p),!p)return e;}else if(!e.instance.popper.contains(p))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var o=e.placement.split('-')[0],i=e.offsets,n=i.popper,s=i.reference,l=-1!==['left','right'].indexOf(o),d=l?'height':'width',c=l?'Top':'Left',m=c.toLowerCase(),f=l?'left':'top',h=l?'bottom':'right',y=L(p)[d];s[h]-y<n[m]&&(e.offsets.popper[m]-=n[m]-(s[h]-y)),s[m]+y>n[h]&&(e.offsets.popper[m]+=s[m]+y-n[h]),e.offsets.popper=b(e.offsets.popper);var u=s[m]+s[d]/2-y/2,g=t(e.instance.popper),x=parseFloat(g['margin'+c],10),w=parseFloat(g['border'+c+'Width'],10),v=u-e.offsets.popper[m]-x-w;return v=ae(J(n[d]-y,v),0),e.arrowElement=p,e.offsets.arrow=(r={},ge(r,m,ee(v)),ge(r,f,''),r),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(D(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var a=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),r=e.placement.split('-')[0],p=C(r),o=e.placement.split('-')[1]||'',i=[];switch(t.behavior){case ke.FLIP:i=[r,p];break;case ke.CLOCKWISE:i=q(r);break;case ke.COUNTERCLOCKWISE:i=q(r,!0);break;default:i=t.behavior;}return i.forEach(function(n,s){if(r!==n||i.length===s+1)return e;r=e.placement.split('-')[0],p=C(r);var l=e.offsets.popper,d=e.offsets.reference,c=te,m='left'===r&&c(l.right)>c(d.left)||'right'===r&&c(l.left)<c(d.right)||'top'===r&&c(l.bottom)>c(d.top)||'bottom'===r&&c(l.top)<c(d.bottom),f=c(l.left)<c(a.left),h=c(l.right)>c(a.right),b=c(l.top)<c(a.top),y=c(l.bottom)>c(a.bottom),u='left'===r&&f||'right'===r&&h||'top'===r&&b||'bottom'===r&&y,g=-1!==['top','bottom'].indexOf(r),x=!!t.flipVariations&&(g&&'start'===o&&f||g&&'end'===o&&h||!g&&'start'===o&&b||!g&&'end'===o&&y);(m||u||x)&&(e.flipped=!0,(m||u)&&(r=i[s+1]),x&&(o=V(o)),e.placement=r+(o?'-'+o:''),e.offsets.popper=xe({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,a=t.split('-')[0],r=e.offsets,p=r.popper,o=r.reference,i=-1!==['left','right'].indexOf(a),n=-1===['top','left'].indexOf(a);return p[i?'left':'top']=o[a]-(n?p[i?'width':'height']:0),e.placement=C(t),e.offsets.popper=b(p),e}},hide:{order:800,enabled:!0,fn:function(e){if(!F(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,a=A(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottom<a.top||t.left>a.right||t.top>a.bottom||t.right<a.left){if(!0===e.hide)return e;e.hide=!0,e.attributes['x-out-of-boundaries']=''}else{if(!1===e.hide)return e;e.hide=!1,e.attributes['x-out-of-boundaries']=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var a=t.x,r=t.y,p=e.offsets.popper,i=A(e.instance.modifiers,function(e){return'applyStyle'===e.name}).gpuAcceleration;void 0!==i&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var n=void 0===i?t.gpuAcceleration:i,s=o(e.instance.popper),l=u(s),d={position:p.position},c={left:te(p.left),top:ee(p.top),bottom:ee(p.bottom),right:te(p.right)},m='bottom'===a?'top':'bottom',f='right'===r?'left':'right',h=X('transform'),b=void 0,y=void 0;if(y='bottom'==m?'HTML'===s.nodeName?-s.clientHeight+c.bottom:-l.height+c.bottom:c.top,b='right'==f?'HTML'===s.nodeName?-s.clientWidth+c.right:-l.width+c.right:c.left,n&&h)d[h]='translate3d('+b+'px, '+y+'px, 0)',d[m]=0,d[f]=0,d.willChange='transform';else{var g='bottom'==m?-1:1,x='right'==f?-1:1;d[m]=y*g,d[f]=b*x,d.willChange=m+', '+f}var w={"x-placement":e.placement};return e.attributes=xe({},w,e.attributes),e.styles=xe({},d,e.styles),e.arrowStyles=xe({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return _(e.instance.popper,e.styles),U(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&_(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,a,r,p){var o=O(p,t,e,a.positionFixed),i=E(a.placement,o,t,e,a.modifiers.flip.boundariesElement,a.modifiers.flip.padding);return t.setAttribute('x-placement',i),_(t,{position:a.positionFixed?'fixed':'absolute'}),a},gpuAcceleration:void 0}}};var Oe={POPPER:'.tippy-popper',TOOLTIP:'.tippy-tooltip',CONTENT:'.tippy-content',BACKDROP:'.tippy-backdrop',ARROW:'.tippy-arrow',ROUND_ARROW:'.tippy-roundarrow'},Le={x:!0},Ce='undefined'!=typeof window,Te=Ce&&'MutationObserver'in window,Ae=function(e){return[].slice.call(e)},Ye=function(e,t){t.content instanceof Element?(Ne(e,''),e.appendChild(t.content)):e[t.allowHTML?'innerHTML':'textContent']=t.content},Se=function(e){return!(e instanceof Element)||Qe.call(e,'a[href],area[href],button,details,input,textarea,select,iframe,[tabindex]')&&!e.hasAttribute('disabled')},Pe=function(e,t){e.filter(Boolean).forEach(function(e){e.style.transitionDuration=t+'ms'})},De=function(e){var t=function(t){return e.querySelector(t)};return{tooltip:t(Oe.TOOLTIP),backdrop:t(Oe.BACKDROP),content:t(Oe.CONTENT),arrow:t(Oe.ARROW)||t(Oe.ROUND_ARROW)}},Xe=function(e){return'[object Object]'==={}.toString.call(e)},Ie=function(){return document.createElement('div')},Ne=function(e,t){e[Le.x&&'innerHTML']=t instanceof Element?t[Le.x&&'innerHTML']:t},He=function(e){if(e instanceof Element||Xe(e))return[e];if(e instanceof NodeList)return Ae(e);if(Array.isArray(e))return e;try{return Ae(document.querySelectorAll(e))}catch(t){return[]}},Re=function(e){return!isNaN(e)&&!isNaN(parseFloat(e))},Be=function(e,t,a){if(Array.isArray(e)){var r=e[t];return null==r?a:r}return e},Me=function(e){var t=Ie();return'round'===e?(t.className='tippy-roundarrow',Ne(t,'<svg viewBox="0 0 24 8" xmlns="http://www.w3.org/2000/svg"><path d="M3 8s2.021-.015 5.253-4.218C9.584 2.051 10.797 1.007 12 1c1.203-.007 2.416 1.035 3.761 2.782C19.012 8.005 21 8 21 8H3z"/></svg>')):t.className='tippy-arrow',t},We=function(){var e=Ie();return e.className='tippy-backdrop',e.setAttribute('data-state','hidden'),e},ze=function(e,t){e.setAttribute('tabindex','-1'),t.setAttribute('data-interactive','')},_e=function(e,t){e.removeAttribute('tabindex'),t.removeAttribute('data-interactive')},Ue=function(e){e.setAttribute('data-inertia','')},Fe=function(e){e.removeAttribute('data-inertia')},Ve=function(e,t){var a=Ie();a.className='tippy-popper',a.setAttribute('role','tooltip'),a.id='tippy-'+e,a.style.zIndex=t.zIndex;var r=Ie();r.className='tippy-tooltip',r.setAttribute('data-size',t.size),r.setAttribute('data-animation',t.animation),r.setAttribute('data-state','hidden'),t.theme.split(' ').forEach(function(e){r.classList.add(e+'-theme')});var p=Ie();return p.className='tippy-content',p.setAttribute('data-state','hidden'),t.interactive&&ze(a,r),t.arrow&&r.appendChild(Me(t.arrowType)),t.animateFill&&(r.appendChild(We()),r.setAttribute('data-animatefill','')),t.inertia&&r.setAttribute('data-inertia',''),Ye(p,t),r.appendChild(p),a.appendChild(r),a.addEventListener('focusout',function(t){t.relatedTarget&&a._tippy&&!$e(t.relatedTarget,function(e){return e===a})&&t.relatedTarget!==a._tippy.reference&&a._tippy.props.shouldPopperHideOnBlur(t)&&a._tippy.hide()}),a},qe=function(e,t,a){var r=De(e),p=r.tooltip,o=r.content,i=r.backdrop,n=r.arrow;e.style.zIndex=a.zIndex,p.setAttribute('data-size',a.size),p.setAttribute('data-animation',a.animation),t.content!==a.content&&Ye(o,a),!t.animateFill&&a.animateFill?(p.appendChild(We()),p.setAttribute('data-animatefill','')):t.animateFill&&!a.animateFill&&(p.removeChild(i),p.removeAttribute('data-animatefill')),!t.arrow&&a.arrow?p.appendChild(Me(a.arrowType)):t.arrow&&!a.arrow&&p.removeChild(n),t.arrow&&a.arrow&&t.arrowType!==a.arrowType&&p.replaceChild(Me(a.arrowType),n),!t.interactive&&a.interactive?ze(e,p):t.interactive&&!a.interactive&&_e(e,p),!t.inertia&&a.inertia?Ue(p):t.inertia&&!a.inertia&&Fe(p),t.theme!==a.theme&&(t.theme.split(' ').forEach(function(e){p.classList.remove(e+'-theme')}),a.theme.split(' ').forEach(function(e){p.classList.add(e+'-theme')}))},je=function(e){Ae(document.querySelectorAll(Oe.POPPER)).forEach(function(t){var a=t._tippy;a&&!0===a.props.hideOnClick&&(!e||t!==e.popper)&&a.hide()})},Ke=function(e){return Object.keys(ie).reduce(function(t,a){var r=(e.getAttribute('data-tippy-'+a)||'').trim();return r?(t[a]='content'===a?r:'true'===r||'false'!==r&&(Re(r)?+r:'['===r[0]||'{'===r[0]?JSON.parse(r):r),t):t},{})},Ge=function(e){var t={isVirtual:!0,attributes:e.attributes||{},setAttribute:function(t,a){e.attributes[t]=a},getAttribute:function(t){return e.attributes[t]},removeAttribute:function(t){delete e.attributes[t]},hasAttribute:function(t){return t in e.attributes},addEventListener:function(){},removeEventListener:function(){},classList:{classNames:{},add:function(t){e.classList.classNames[t]=!0},remove:function(t){delete e.classList.classNames[t]},contains:function(t){return t in e.classList.classNames}}};for(var a in t)e[a]=t[a];return e},Qe=function(){if(Ce){var t=Element.prototype;return t.matches||t.matchesSelector||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector}}(),Ze=function(e,t){return(Element.prototype.closest||function(e){for(var t=this;t;){if(Qe.call(t,e))return t;t=t.parentElement}}).call(e,t)},$e=function(e,t){for(;e;){if(t(e))return e;e=e.parentElement}},Je=function(e){var t=window.scrollX||window.pageXOffset,a=window.scrollY||window.pageYOffset;e.focus(),scroll(t,a)},et=function(e){void e.offsetHeight},tt=function(e,t){return(t?e:{X:'Y',Y:'X'}[e])||''},at=function(e,t,r,p){var o=t[0],i=t[1];if(!o&&!i)return'';var n={scale:function(){return i?r?o+', '+i:i+', '+o:''+o}(),translate:function(){return i?r?p?o+'px, '+-i+'px':o+'px, '+i+'px':p?-i+'px, '+o+'px':i+'px, '+o+'px':p?-o+'px':o+'px'}()};return n[e]},rt=function(e,t){var a=e.match(new RegExp(t+'([XY])'));return a?a[1]:''},pt=function(e,t){var a=e.match(t);return a?a[1].split(',').map(parseFloat):[]},ot={translate:/translateX?Y?\(([^)]+)\)/,scale:/scaleX?Y?\(([^)]+)\)/},it=function(e,t){var a=mt(Ze(e,Oe.POPPER)),r='top'===a||'bottom'===a,p='right'===a||'bottom'===a,o={translate:{axis:rt(t,'translate'),numbers:pt(t,ot.translate)},scale:{axis:rt(t,'scale'),numbers:pt(t,ot.scale)}},i=t.replace(ot.translate,'translate'+tt(o.translate.axis,r)+'('+at('translate',o.translate.numbers,r,p)+')').replace(ot.scale,'scale'+tt(o.scale.axis,r)+'('+at('scale',o.scale.numbers,r,p)+')');e.style['undefined'==typeof document.body.style.transform?'webkitTransform':'transform']=i},nt=function(e,t){e.filter(Boolean).forEach(function(e){e.setAttribute('data-state',t)})},st=function(e,t){var a=e.popper,r=e.options,p=r.onCreate,o=r.onUpdate;r.onCreate=r.onUpdate=function(){et(a),t(),o(),r.onCreate=p,r.onUpdate=o}},lt=function(e){setTimeout(e,1)},dt=function(e,t,a,r){if(!e)return!0;var p=a.clientX,o=a.clientY,i=r.interactiveBorder,n=r.distance,s=t.top-o>('top'===e?i+n:i),l=o-t.bottom>('bottom'===e?i+n:i),d=t.left-p>('left'===e?i+n:i),c=p-t.right>('right'===e?i+n:i);return s||l||d||c},ct=function(e,t){return-(e-t)+'px'},mt=function(e){var t=e.getAttribute('x-placement');return t?t.split('-')[0]:''},ft=function(e,t){var a=oe({},t,t.performance?{}:Ke(e));return a.arrow&&(a.animateFill=!1),'function'==typeof a.appendTo&&(a.appendTo=t.appendTo(e)),'function'==typeof a.content&&(a.content=t.content(e)),a},ht=function(e,t,a){e[t+'EventListener']('transitionend',a)},bt=function(e,t){var a;return function(){var r=this,p=arguments;clearTimeout(a),a=setTimeout(function(){return e.apply(r,p)},t)}},yt=function(e,t){for(var a in e||{})if(!(a in t))throw Error('[tippy]: `'+a+'` is not a valid option')},ut=Ce?navigator:{},gt=Ce?window:{},xt=/MSIE |Trident\//.test(ut.userAgent),wt=/iPhone|iPad|iPod/.test(ut.platform)&&!gt.MSStream,vt='ontouchstart'in gt,kt=!1,Et=function(){kt||(kt=!0,wt&&document.body.classList.add('tippy-iOS'),window.performance&&document.addEventListener('mousemove',Lt))},Ot=0,Lt=function e(){var t=performance.now();20>t-Ot&&(kt=!1,document.removeEventListener('mousemove',e),!wt&&document.body.classList.remove('tippy-iOS')),Ot=t},Ct=function(e){var t=e.target;if(!(t instanceof Element))return je();var a=Ze(t,Oe.POPPER);if(!(a&&a._tippy&&a._tippy.props.interactive)){var r=$e(t,function(e){return e._tippy&&e._tippy.reference===e});if(r){var p=r._tippy,o=-1<p.props.trigger.indexOf('click');if(kt||o)return je(p);if(!0!==p.props.hideOnClick||o)return;p.clearDelayTimeouts()}je()}},Tt=function(){var e=document,t=e.activeElement;t&&t.blur&&t._tippy&&t.blur()},At=function(){Ae(document.querySelectorAll(Oe.POPPER)).forEach(function(e){var t=e._tippy;t.props.livePlacement||t.popperInstance.scheduleUpdate()})},Yt=1,St=!1,Pt=!1;$.version=pe,$.defaults=ie,$.one=function(e,t){return $(e,t,!0).instances[0]},$.setDefaults=function(e){ne(e),$.defaults=ie},$.disableAnimations=function(){$.setDefaults({duration:0,updateDuration:0,animateFill:!1})},$.hideAllPoppers=je,$.useCapture=function(){Pt=!0};return Ce&&setTimeout(function(){Ae(document.querySelectorAll('[data-tippy]')).forEach(function(e){var t=e.getAttribute('data-tippy');t&&$(e,{content:t})})}),function(e){if(Te){var t=document.createElement('style');t.type='text/css',t.textContent=e,document.head.insertBefore(t,document.head.firstChild)}}(re),$});
1403
+ //# sourceMappingURL=tippy.all.min.js.map
1404
+
1405
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(43)))
1406
+
1407
+ /***/ }),
1408
+ /* 14 */
1409
+ /***/ (function(module, exports, __webpack_require__) {
1410
+
1411
+ "use strict";
1412
+
1413
+
1414
+ Object.defineProperty(exports, "__esModule", {
1415
+ value: true
1416
+ });
1417
+
1418
+ var _evented = __webpack_require__(4);
1419
+
1420
+ var _step = __webpack_require__(7);
1421
+
1422
+ var _tour = __webpack_require__(45);
1423
+
1424
+ Object.assign(_tour.Shepherd, {
1425
+ Tour: _tour.Tour,
1426
+ Step: _step.Step,
1427
+ Evented: _evented.Evented
1428
+ });
1429
+ exports.default = _tour.Shepherd;
1430
+ module.exports = exports.default;
1431
+
1432
+ /***/ }),
1433
+ /* 15 */
1434
+ /***/ (function(module, exports, __webpack_require__) {
1435
+
1436
+ var baseSlice = __webpack_require__(16),
1437
+ toInteger = __webpack_require__(17);
1438
+
1439
+ /**
1440
+ * Creates a slice of `array` with `n` elements dropped from the beginning.
1441
+ *
1442
+ * @static
1443
+ * @memberOf _
1444
+ * @since 0.5.0
1445
+ * @category Array
1446
+ * @param {Array} array The array to query.
1447
+ * @param {number} [n=1] The number of elements to drop.
1448
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
1449
+ * @returns {Array} Returns the slice of `array`.
1450
+ * @example
1451
+ *
1452
+ * _.drop([1, 2, 3]);
1453
+ * // => [2, 3]
1454
+ *
1455
+ * _.drop([1, 2, 3], 2);
1456
+ * // => [3]
1457
+ *
1458
+ * _.drop([1, 2, 3], 5);
1459
+ * // => []
1460
+ *
1461
+ * _.drop([1, 2, 3], 0);
1462
+ * // => [1, 2, 3]
1463
+ */
1464
+ function drop(array, n, guard) {
1465
+ var length = array == null ? 0 : array.length;
1466
+ if (!length) {
1467
+ return [];
1468
+ }
1469
+ n = (guard || n === undefined) ? 1 : toInteger(n);
1470
+ return baseSlice(array, n < 0 ? 0 : n, length);
1471
+ }
172
1472
 
173
- this.options = options;
174
- this.destroy();
1473
+ module.exports = drop;
175
1474
 
176
- this.id = this.options.id || this.id || 'step-' + uniqueId();
177
1475
 
178
- var when = this.options.when;
179
- if (when) {
180
- for (var _event in when) {
181
- if (({}).hasOwnProperty.call(when, _event)) {
182
- var handler = when[_event];
183
- this.on(_event, handler, this);
184
- }
185
- }
1476
+ /***/ }),
1477
+ /* 16 */
1478
+ /***/ (function(module, exports) {
1479
+
1480
+ /**
1481
+ * The base implementation of `_.slice` without an iteratee call guard.
1482
+ *
1483
+ * @private
1484
+ * @param {Array} array The array to slice.
1485
+ * @param {number} [start=0] The start position.
1486
+ * @param {number} [end=array.length] The end position.
1487
+ * @returns {Array} Returns the slice of `array`.
1488
+ */
1489
+ function baseSlice(array, start, end) {
1490
+ var index = -1,
1491
+ length = array.length;
1492
+
1493
+ if (start < 0) {
1494
+ start = -start > length ? 0 : (length + start);
1495
+ }
1496
+ end = end > length ? length : end;
1497
+ if (end < 0) {
1498
+ end += length;
1499
+ }
1500
+ length = start > end ? 0 : ((end - start) >>> 0);
1501
+ start >>>= 0;
1502
+
1503
+ var result = Array(length);
1504
+ while (++index < length) {
1505
+ result[index] = array[index + start];
1506
+ }
1507
+ return result;
1508
+ }
1509
+
1510
+ module.exports = baseSlice;
1511
+
1512
+
1513
+ /***/ }),
1514
+ /* 17 */
1515
+ /***/ (function(module, exports) {
1516
+
1517
+ /**
1518
+ * This method returns the first argument it receives.
1519
+ *
1520
+ * @static
1521
+ * @since 0.1.0
1522
+ * @memberOf _
1523
+ * @category Util
1524
+ * @param {*} value Any value.
1525
+ * @returns {*} Returns `value`.
1526
+ * @example
1527
+ *
1528
+ * var object = { 'a': 1 };
1529
+ *
1530
+ * console.log(_.identity(object) === object);
1531
+ * // => true
1532
+ */
1533
+ function identity(value) {
1534
+ return value;
1535
+ }
1536
+
1537
+ module.exports = identity;
1538
+
1539
+
1540
+ /***/ }),
1541
+ /* 18 */
1542
+ /***/ (function(module, exports) {
1543
+
1544
+ /**
1545
+ * Checks if `value` is the
1546
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
1547
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
1548
+ *
1549
+ * @static
1550
+ * @memberOf _
1551
+ * @since 0.1.0
1552
+ * @category Lang
1553
+ * @param {*} value The value to check.
1554
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
1555
+ * @example
1556
+ *
1557
+ * _.isObject({});
1558
+ * // => true
1559
+ *
1560
+ * _.isObject([1, 2, 3]);
1561
+ * // => true
1562
+ *
1563
+ * _.isObject(_.noop);
1564
+ * // => true
1565
+ *
1566
+ * _.isObject(null);
1567
+ * // => false
1568
+ */
1569
+ function isObject(value) {
1570
+ var type = typeof value;
1571
+ return value != null && (type == 'object' || type == 'function');
1572
+ }
1573
+
1574
+ module.exports = isObject;
1575
+
1576
+
1577
+ /***/ }),
1578
+ /* 19 */
1579
+ /***/ (function(module, exports, __webpack_require__) {
1580
+
1581
+ var overArg = __webpack_require__(6);
1582
+
1583
+ /* Built-in method references for those with the same name as other `lodash` methods. */
1584
+ var nativeKeys = overArg(Object.keys, Object);
1585
+
1586
+ module.exports = nativeKeys;
1587
+
1588
+
1589
+ /***/ }),
1590
+ /* 20 */
1591
+ /***/ (function(module, exports) {
1592
+
1593
+ /** Used for built-in method references. */
1594
+ var objectProto = Object.prototype;
1595
+
1596
+ /**
1597
+ * Used to resolve the
1598
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
1599
+ * of values.
1600
+ */
1601
+ var nativeObjectToString = objectProto.toString;
1602
+
1603
+ /**
1604
+ * Converts `value` to a string using `Object.prototype.toString`.
1605
+ *
1606
+ * @private
1607
+ * @param {*} value The value to convert.
1608
+ * @returns {string} Returns the converted string.
1609
+ */
1610
+ function objectToString(value) {
1611
+ return nativeObjectToString.call(value);
1612
+ }
1613
+
1614
+ module.exports = objectToString;
1615
+
1616
+
1617
+ /***/ }),
1618
+ /* 21 */
1619
+ /***/ (function(module, exports) {
1620
+
1621
+ /**
1622
+ * This method returns `false`.
1623
+ *
1624
+ * @static
1625
+ * @memberOf _
1626
+ * @since 4.13.0
1627
+ * @category Util
1628
+ * @returns {boolean} Returns `false`.
1629
+ * @example
1630
+ *
1631
+ * _.times(2, _.stubFalse);
1632
+ * // => [false, false]
1633
+ */
1634
+ function stubFalse() {
1635
+ return false;
1636
+ }
1637
+
1638
+ module.exports = stubFalse;
1639
+
1640
+
1641
+ /***/ }),
1642
+ /* 22 */
1643
+ /***/ (function(module, exports, __webpack_require__) {
1644
+
1645
+ var isFunction = __webpack_require__(5),
1646
+ isLength = __webpack_require__(23);
1647
+
1648
+ /**
1649
+ * Checks if `value` is array-like. A value is considered array-like if it's
1650
+ * not a function and has a `value.length` that's an integer greater than or
1651
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
1652
+ *
1653
+ * @static
1654
+ * @memberOf _
1655
+ * @since 4.0.0
1656
+ * @category Lang
1657
+ * @param {*} value The value to check.
1658
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
1659
+ * @example
1660
+ *
1661
+ * _.isArrayLike([1, 2, 3]);
1662
+ * // => true
1663
+ *
1664
+ * _.isArrayLike(document.body.children);
1665
+ * // => true
1666
+ *
1667
+ * _.isArrayLike('abc');
1668
+ * // => true
1669
+ *
1670
+ * _.isArrayLike(_.noop);
1671
+ * // => false
1672
+ */
1673
+ function isArrayLike(value) {
1674
+ return value != null && isLength(value.length) && !isFunction(value);
1675
+ }
1676
+
1677
+ module.exports = isArrayLike;
1678
+
1679
+
1680
+ /***/ }),
1681
+ /* 23 */
1682
+ /***/ (function(module, exports) {
1683
+
1684
+ /** Used as references for various `Number` constants. */
1685
+ var MAX_SAFE_INTEGER = 9007199254740991;
1686
+
1687
+ /**
1688
+ * Checks if `value` is a valid array-like length.
1689
+ *
1690
+ * **Note:** This method is loosely based on
1691
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
1692
+ *
1693
+ * @static
1694
+ * @memberOf _
1695
+ * @since 4.0.0
1696
+ * @category Lang
1697
+ * @param {*} value The value to check.
1698
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
1699
+ * @example
1700
+ *
1701
+ * _.isLength(3);
1702
+ * // => true
1703
+ *
1704
+ * _.isLength(Number.MIN_VALUE);
1705
+ * // => false
1706
+ *
1707
+ * _.isLength(Infinity);
1708
+ * // => false
1709
+ *
1710
+ * _.isLength('3');
1711
+ * // => false
1712
+ */
1713
+ function isLength(value) {
1714
+ return typeof value == 'number' &&
1715
+ value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
1716
+ }
1717
+
1718
+ module.exports = isLength;
1719
+
1720
+
1721
+ /***/ }),
1722
+ /* 24 */
1723
+ /***/ (function(module, exports) {
1724
+
1725
+ /**
1726
+ * This method returns `false`.
1727
+ *
1728
+ * @static
1729
+ * @memberOf _
1730
+ * @since 4.13.0
1731
+ * @category Util
1732
+ * @returns {boolean} Returns `false`.
1733
+ * @example
1734
+ *
1735
+ * _.times(2, _.stubFalse);
1736
+ * // => [false, false]
1737
+ */
1738
+ function stubFalse() {
1739
+ return false;
1740
+ }
1741
+
1742
+ module.exports = stubFalse;
1743
+
1744
+
1745
+ /***/ }),
1746
+ /* 25 */
1747
+ /***/ (function(module, exports) {
1748
+
1749
+ /**
1750
+ * This method returns `false`.
1751
+ *
1752
+ * @static
1753
+ * @memberOf _
1754
+ * @since 4.13.0
1755
+ * @category Util
1756
+ * @returns {boolean} Returns `false`.
1757
+ * @example
1758
+ *
1759
+ * _.times(2, _.stubFalse);
1760
+ * // => [false, false]
1761
+ */
1762
+ function stubFalse() {
1763
+ return false;
1764
+ }
1765
+
1766
+ module.exports = stubFalse;
1767
+
1768
+
1769
+ /***/ }),
1770
+ /* 26 */
1771
+ /***/ (function(module, exports) {
1772
+
1773
+ /**
1774
+ * This method returns `false`.
1775
+ *
1776
+ * @static
1777
+ * @memberOf _
1778
+ * @since 4.13.0
1779
+ * @category Util
1780
+ * @returns {boolean} Returns `false`.
1781
+ * @example
1782
+ *
1783
+ * _.times(2, _.stubFalse);
1784
+ * // => [false, false]
1785
+ */
1786
+ function stubFalse() {
1787
+ return false;
1788
+ }
1789
+
1790
+ module.exports = stubFalse;
1791
+
1792
+
1793
+ /***/ }),
1794
+ /* 27 */
1795
+ /***/ (function(module, exports, __webpack_require__) {
1796
+
1797
+ var isObjectLike = __webpack_require__(1),
1798
+ isPlainObject = __webpack_require__(28);
1799
+
1800
+ /**
1801
+ * Checks if `value` is likely a DOM element.
1802
+ *
1803
+ * @static
1804
+ * @memberOf _
1805
+ * @since 0.1.0
1806
+ * @category Lang
1807
+ * @param {*} value The value to check.
1808
+ * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
1809
+ * @example
1810
+ *
1811
+ * _.isElement(document.body);
1812
+ * // => true
1813
+ *
1814
+ * _.isElement('<body>');
1815
+ * // => false
1816
+ */
1817
+ function isElement(value) {
1818
+ return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
1819
+ }
1820
+
1821
+ module.exports = isElement;
1822
+
1823
+
1824
+ /***/ }),
1825
+ /* 28 */
1826
+ /***/ (function(module, exports, __webpack_require__) {
1827
+
1828
+ var baseGetTag = __webpack_require__(3),
1829
+ getPrototype = __webpack_require__(29),
1830
+ isObjectLike = __webpack_require__(1);
1831
+
1832
+ /** `Object#toString` result references. */
1833
+ var objectTag = '[object Object]';
1834
+
1835
+ /** Used for built-in method references. */
1836
+ var funcProto = Function.prototype,
1837
+ objectProto = Object.prototype;
1838
+
1839
+ /** Used to resolve the decompiled source of functions. */
1840
+ var funcToString = funcProto.toString;
1841
+
1842
+ /** Used to check objects for own properties. */
1843
+ var hasOwnProperty = objectProto.hasOwnProperty;
1844
+
1845
+ /** Used to infer the `Object` constructor. */
1846
+ var objectCtorString = funcToString.call(Object);
1847
+
1848
+ /**
1849
+ * Checks if `value` is a plain object, that is, an object created by the
1850
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
1851
+ *
1852
+ * @static
1853
+ * @memberOf _
1854
+ * @since 0.8.0
1855
+ * @category Lang
1856
+ * @param {*} value The value to check.
1857
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
1858
+ * @example
1859
+ *
1860
+ * function Foo() {
1861
+ * this.a = 1;
1862
+ * }
1863
+ *
1864
+ * _.isPlainObject(new Foo);
1865
+ * // => false
1866
+ *
1867
+ * _.isPlainObject([1, 2, 3]);
1868
+ * // => false
1869
+ *
1870
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
1871
+ * // => true
1872
+ *
1873
+ * _.isPlainObject(Object.create(null));
1874
+ * // => true
1875
+ */
1876
+ function isPlainObject(value) {
1877
+ if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
1878
+ return false;
1879
+ }
1880
+ var proto = getPrototype(value);
1881
+ if (proto === null) {
1882
+ return true;
1883
+ }
1884
+ var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
1885
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
1886
+ funcToString.call(Ctor) == objectCtorString;
1887
+ }
1888
+
1889
+ module.exports = isPlainObject;
1890
+
1891
+
1892
+ /***/ }),
1893
+ /* 29 */
1894
+ /***/ (function(module, exports, __webpack_require__) {
1895
+
1896
+ var overArg = __webpack_require__(6);
1897
+
1898
+ /** Built-in value references. */
1899
+ var getPrototype = overArg(Object.getPrototypeOf, Object);
1900
+
1901
+ module.exports = getPrototype;
1902
+
1903
+
1904
+ /***/ }),
1905
+ /* 30 */
1906
+ /***/ (function(module, exports, __webpack_require__) {
1907
+
1908
+ var baseFor = __webpack_require__(31),
1909
+ keys = __webpack_require__(33);
1910
+
1911
+ /**
1912
+ * The base implementation of `_.forOwn` without support for iteratee shorthands.
1913
+ *
1914
+ * @private
1915
+ * @param {Object} object The object to iterate over.
1916
+ * @param {Function} iteratee The function invoked per iteration.
1917
+ * @returns {Object} Returns `object`.
1918
+ */
1919
+ function baseForOwn(object, iteratee) {
1920
+ return object && baseFor(object, iteratee, keys);
1921
+ }
1922
+
1923
+ module.exports = baseForOwn;
1924
+
1925
+
1926
+ /***/ }),
1927
+ /* 31 */
1928
+ /***/ (function(module, exports, __webpack_require__) {
1929
+
1930
+ var createBaseFor = __webpack_require__(32);
1931
+
1932
+ /**
1933
+ * The base implementation of `baseForOwn` which iterates over `object`
1934
+ * properties returned by `keysFunc` and invokes `iteratee` for each property.
1935
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
1936
+ *
1937
+ * @private
1938
+ * @param {Object} object The object to iterate over.
1939
+ * @param {Function} iteratee The function invoked per iteration.
1940
+ * @param {Function} keysFunc The function to get the keys of `object`.
1941
+ * @returns {Object} Returns `object`.
1942
+ */
1943
+ var baseFor = createBaseFor();
1944
+
1945
+ module.exports = baseFor;
1946
+
1947
+
1948
+ /***/ }),
1949
+ /* 32 */
1950
+ /***/ (function(module, exports) {
1951
+
1952
+ /**
1953
+ * Creates a base function for methods like `_.forIn` and `_.forOwn`.
1954
+ *
1955
+ * @private
1956
+ * @param {boolean} [fromRight] Specify iterating from right to left.
1957
+ * @returns {Function} Returns the new base function.
1958
+ */
1959
+ function createBaseFor(fromRight) {
1960
+ return function(object, iteratee, keysFunc) {
1961
+ var index = -1,
1962
+ iterable = Object(object),
1963
+ props = keysFunc(object),
1964
+ length = props.length;
1965
+
1966
+ while (length--) {
1967
+ var key = props[fromRight ? length : ++index];
1968
+ if (iteratee(iterable[key], key, iterable) === false) {
1969
+ break;
186
1970
  }
1971
+ }
1972
+ return object;
1973
+ };
1974
+ }
1975
+
1976
+ module.exports = createBaseFor;
1977
+
1978
+
1979
+ /***/ }),
1980
+ /* 33 */
1981
+ /***/ (function(module, exports, __webpack_require__) {
1982
+
1983
+ var overArg = __webpack_require__(6);
1984
+
1985
+ /* Built-in method references for those with the same name as other `lodash` methods. */
1986
+ var nativeKeys = overArg(Object.keys, Object);
1987
+
1988
+ module.exports = nativeKeys;
1989
+
187
1990
 
188
- // Button configuration
1991
+ /***/ }),
1992
+ /* 34 */
1993
+ /***/ (function(module, exports) {
1994
+
1995
+ /**
1996
+ * This method returns the first argument it receives.
1997
+ *
1998
+ * @static
1999
+ * @since 0.1.0
2000
+ * @memberOf _
2001
+ * @category Util
2002
+ * @param {*} value Any value.
2003
+ * @returns {*} Returns `value`.
2004
+ * @example
2005
+ *
2006
+ * var object = { 'a': 1 };
2007
+ *
2008
+ * console.log(_.identity(object) === object);
2009
+ * // => true
2010
+ */
2011
+ function identity(value) {
2012
+ return value;
2013
+ }
2014
+
2015
+ module.exports = identity;
2016
+
2017
+
2018
+ /***/ }),
2019
+ /* 35 */
2020
+ /***/ (function(module, exports) {
2021
+
2022
+ if (!Element.prototype.matches) {
2023
+ Element.prototype.matches =
2024
+ Element.prototype.matchesSelector ||
2025
+ Element.prototype.msMatchesSelector ||
2026
+ Element.prototype.webkitMatchesSelector;
2027
+ }
189
2028
 
190
- var buttonsJson = JSON.stringify(this.options.buttons);
191
- var buttonsAreDefault = isUndefined(buttonsJson) || buttonsJson === "true";
192
2029
 
193
- var buttonsAreEmpty = buttonsJson === "{}" || buttonsJson === "[]" || buttonsJson === "null" || buttonsJson === "false";
2030
+ /***/ }),
2031
+ /* 36 */
2032
+ /***/ (function(module, exports, __webpack_require__) {
2033
+
2034
+ var assignValue = __webpack_require__(37),
2035
+ baseZipObject = __webpack_require__(42);
2036
+
2037
+ /**
2038
+ * This method is like `_.fromPairs` except that it accepts two arrays,
2039
+ * one of property identifiers and one of corresponding values.
2040
+ *
2041
+ * @static
2042
+ * @memberOf _
2043
+ * @since 0.4.0
2044
+ * @category Array
2045
+ * @param {Array} [props=[]] The property identifiers.
2046
+ * @param {Array} [values=[]] The property values.
2047
+ * @returns {Object} Returns the new object.
2048
+ * @example
2049
+ *
2050
+ * _.zipObject(['a', 'b'], [1, 2]);
2051
+ * // => { 'a': 1, 'b': 2 }
2052
+ */
2053
+ function zipObject(props, values) {
2054
+ return baseZipObject(props || [], values || [], assignValue);
2055
+ }
194
2056
 
195
- var buttonsAreArray = !buttonsAreDefault && isArray(this.options.buttons);
2057
+ module.exports = zipObject;
2058
+
2059
+
2060
+ /***/ }),
2061
+ /* 37 */
2062
+ /***/ (function(module, exports, __webpack_require__) {
2063
+
2064
+ var baseAssignValue = __webpack_require__(38),
2065
+ eq = __webpack_require__(41);
2066
+
2067
+ /** Used for built-in method references. */
2068
+ var objectProto = Object.prototype;
2069
+
2070
+ /** Used to check objects for own properties. */
2071
+ var hasOwnProperty = objectProto.hasOwnProperty;
2072
+
2073
+ /**
2074
+ * Assigns `value` to `key` of `object` if the existing value is not equivalent
2075
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2076
+ * for equality comparisons.
2077
+ *
2078
+ * @private
2079
+ * @param {Object} object The object to modify.
2080
+ * @param {string} key The key of the property to assign.
2081
+ * @param {*} value The value to assign.
2082
+ */
2083
+ function assignValue(object, key, value) {
2084
+ var objValue = object[key];
2085
+ if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
2086
+ (value === undefined && !(key in object))) {
2087
+ baseAssignValue(object, key, value);
2088
+ }
2089
+ }
196
2090
 
197
- var buttonsAreObject = !buttonsAreDefault && isObject(this.options.buttons);
2091
+ module.exports = assignValue;
2092
+
2093
+
2094
+ /***/ }),
2095
+ /* 38 */
2096
+ /***/ (function(module, exports, __webpack_require__) {
2097
+
2098
+ var defineProperty = __webpack_require__(39);
2099
+
2100
+ /**
2101
+ * The base implementation of `assignValue` and `assignMergeValue` without
2102
+ * value checks.
2103
+ *
2104
+ * @private
2105
+ * @param {Object} object The object to modify.
2106
+ * @param {string} key The key of the property to assign.
2107
+ * @param {*} value The value to assign.
2108
+ */
2109
+ function baseAssignValue(object, key, value) {
2110
+ if (key == '__proto__' && defineProperty) {
2111
+ defineProperty(object, key, {
2112
+ 'configurable': true,
2113
+ 'enumerable': true,
2114
+ 'value': value,
2115
+ 'writable': true
2116
+ });
2117
+ } else {
2118
+ object[key] = value;
2119
+ }
2120
+ }
198
2121
 
199
- // Show default button if undefined or 'true'
200
- if (buttonsAreDefault) {
201
- this.options.buttons = [{
202
- text: 'Next',
203
- action: this.tour.next,
204
- classes: 'btn'
205
- }];
2122
+ module.exports = baseAssignValue;
206
2123
 
207
- // Can pass in an object which will assume asingle button
208
- } else if (!buttonsAreEmpty && buttonsAreObject) {
209
- this.options.buttons = [this.options.buttons];
210
2124
 
211
- // Falsey/empty values or non-object values prevent buttons from rendering
212
- } else if (buttonsAreEmpty || !buttonsAreArray) {
213
- this.options.buttons = false;
214
- }
215
- }
216
- }, {
217
- key: 'getTour',
218
- value: function getTour() {
219
- return this.tour;
220
- }
221
- }, {
222
- key: 'bindAdvance',
223
- value: function bindAdvance() {
224
- var _this2 = this;
2125
+ /***/ }),
2126
+ /* 39 */
2127
+ /***/ (function(module, exports, __webpack_require__) {
225
2128
 
226
- // An empty selector matches the step element
2129
+ var getNative = __webpack_require__(40);
227
2130
 
228
- var _parseShorthand = parseShorthand(this.options.advanceOn, ['selector', 'event']);
2131
+ var defineProperty = (function() {
2132
+ try {
2133
+ var func = getNative(Object, 'defineProperty');
2134
+ func({}, '', {});
2135
+ return func;
2136
+ } catch (e) {}
2137
+ }());
229
2138
 
230
- var event = _parseShorthand.event;
231
- var selector = _parseShorthand.selector;
2139
+ module.exports = defineProperty;
232
2140
 
233
- var handler = function handler(e) {
234
- if (!_this2.isOpen()) {
235
- return;
236
- }
237
2141
 
238
- if (!isUndefined(selector)) {
239
- if (matchesSelector(e.target, selector)) {
240
- _this2.tour.next();
241
- }
242
- } else {
243
- if (_this2.el && e.target === _this2.el) {
244
- _this2.tour.next();
245
- }
246
- }
247
- };
2142
+ /***/ }),
2143
+ /* 40 */
2144
+ /***/ (function(module, exports) {
248
2145
 
249
- // TODO: this should also bind/unbind on show/hide
250
- document.body.addEventListener(event, handler);
251
- this.on('destroy', function () {
252
- return document.body.removeEventListener(event, handler);
253
- });
254
- }
255
- }, {
256
- key: 'getAttachTo',
257
- value: function getAttachTo() {
258
- var opts = parsePosition(this.options.attachTo) || {};
259
- var returnOpts = extend({}, opts);
2146
+ /**
2147
+ * Gets the value at `key` of `object`.
2148
+ *
2149
+ * @private
2150
+ * @param {Object} [object] The object to query.
2151
+ * @param {string} key The key of the property to get.
2152
+ * @returns {*} Returns the property value.
2153
+ */
2154
+ function getValue(object, key) {
2155
+ return object == null ? undefined : object[key];
2156
+ }
260
2157
 
261
- if (typeof opts.element === 'string') {
262
- // Can't override the element in user opts reference because we can't
263
- // guarantee that the element will exist in the future.
264
- returnOpts.element = document.querySelector(opts.element);
265
- if (!returnOpts.element) {
266
- console.error('The element for this Shepherd step was not found ' + opts.element);
267
- }
268
- }
2158
+ module.exports = getValue;
2159
+
2160
+
2161
+ /***/ }),
2162
+ /* 41 */
2163
+ /***/ (function(module, exports) {
2164
+
2165
+ /**
2166
+ * Performs a
2167
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2168
+ * comparison between two values to determine if they are equivalent.
2169
+ *
2170
+ * @static
2171
+ * @memberOf _
2172
+ * @since 4.0.0
2173
+ * @category Lang
2174
+ * @param {*} value The value to compare.
2175
+ * @param {*} other The other value to compare.
2176
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2177
+ * @example
2178
+ *
2179
+ * var object = { 'a': 1 };
2180
+ * var other = { 'a': 1 };
2181
+ *
2182
+ * _.eq(object, object);
2183
+ * // => true
2184
+ *
2185
+ * _.eq(object, other);
2186
+ * // => false
2187
+ *
2188
+ * _.eq('a', 'a');
2189
+ * // => true
2190
+ *
2191
+ * _.eq('a', Object('a'));
2192
+ * // => false
2193
+ *
2194
+ * _.eq(NaN, NaN);
2195
+ * // => true
2196
+ */
2197
+ function eq(value, other) {
2198
+ return value === other || (value !== value && other !== other);
2199
+ }
269
2200
 
270
- return returnOpts;
271
- }
272
- }, {
273
- key: 'setupTether',
274
- value: function setupTether() {
275
- if (isUndefined(Tether)) {
276
- throw new Error("Using the attachment feature of Shepherd requires the Tether library");
277
- }
2201
+ module.exports = eq;
2202
+
2203
+
2204
+ /***/ }),
2205
+ /* 42 */
2206
+ /***/ (function(module, exports) {
2207
+
2208
+ /**
2209
+ * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
2210
+ *
2211
+ * @private
2212
+ * @param {Array} props The property identifiers.
2213
+ * @param {Array} values The property values.
2214
+ * @param {Function} assignFunc The function to assign values.
2215
+ * @returns {Object} Returns the new object.
2216
+ */
2217
+ function baseZipObject(props, values, assignFunc) {
2218
+ var index = -1,
2219
+ length = props.length,
2220
+ valsLength = values.length,
2221
+ result = {};
2222
+
2223
+ while (++index < length) {
2224
+ var value = index < valsLength ? values[index] : undefined;
2225
+ assignFunc(result, props[index], value);
2226
+ }
2227
+ return result;
2228
+ }
278
2229
 
279
- var opts = this.getAttachTo();
280
- var attachment = ATTACHMENT[opts.on] || ATTACHMENT.right;
281
- if (isUndefined(opts.element)) {
282
- opts.element = 'viewport';
283
- attachment = 'middle center';
284
- }
2230
+ module.exports = baseZipObject;
285
2231
 
286
- var tetherOpts = {
287
- classPrefix: 'shepherd',
288
- element: this.el,
289
- constraints: [{
290
- to: 'window',
291
- pin: true,
292
- attachment: 'together'
293
- }],
294
- target: opts.element,
295
- offset: opts.offset || '0 0',
296
- attachment: attachment
297
- };
298
2232
 
299
- if (this.tether) {
300
- this.tether.destroy();
301
- }
2233
+ /***/ }),
2234
+ /* 43 */
2235
+ /***/ (function(module, exports) {
302
2236
 
303
- this.tether = new Tether(extend(tetherOpts, this.options.tetherOptions));
304
- }
305
- }, {
306
- key: 'show',
307
- value: function show() {
308
- var _this3 = this;
2237
+ var g;
309
2238
 
310
- if (!isUndefined(this.options.beforeShowPromise)) {
311
- var beforeShowPromise = this.options.beforeShowPromise();
312
- if (!isUndefined(beforeShowPromise)) {
313
- return beforeShowPromise.then(function () {
314
- return _this3._show();
315
- });
316
- }
317
- }
318
- this._show();
319
- }
320
- }, {
321
- key: '_show',
322
- value: function _show() {
323
- var _this4 = this;
2239
+ // This works in non-strict mode
2240
+ g = (function() {
2241
+ return this;
2242
+ })();
324
2243
 
325
- this.trigger('before-show');
2244
+ try {
2245
+ // This works if eval is allowed (see CSP)
2246
+ g = g || Function("return this")() || (1, eval)("this");
2247
+ } catch (e) {
2248
+ // This works if the window reference is available
2249
+ if (typeof window === "object") g = window;
2250
+ }
326
2251
 
327
- if (!this.el) {
328
- this.render();
329
- }
2252
+ // g can still be undefined, but nothing to do about it...
2253
+ // We return undefined, instead of nothing here, so it's
2254
+ // easier to handle this case. if(!global) { ...}
330
2255
 
331
- addClass(this.el, 'shepherd-open');
2256
+ module.exports = g;
332
2257
 
333
- document.body.setAttribute('data-shepherd-step', this.id);
334
2258
 
335
- this.setupTether();
2259
+ /***/ }),
2260
+ /* 44 */
2261
+ /***/ (function(module, exports, __webpack_require__) {
336
2262
 
337
- if (this.options.scrollTo) {
338
- setTimeout(function () {
339
- _this4.scrollTo();
340
- });
341
- }
2263
+ "use strict";
342
2264
 
343
- this.trigger('show');
344
- }
345
- }, {
346
- key: 'hide',
347
- value: function hide() {
348
- this.trigger('before-hide');
349
2265
 
350
- removeClass(this.el, 'shepherd-open');
2266
+ Object.defineProperty(exports, "__esModule", {
2267
+ value: true
2268
+ });
2269
+ var missingTippy = exports.missingTippy = 'Using the attachment feature of Shepherd requires the Tippy.js library';
351
2270
 
352
- document.body.removeAttribute('data-shepherd-step');
2271
+ /***/ }),
2272
+ /* 45 */
2273
+ /***/ (function(module, exports, __webpack_require__) {
353
2274
 
354
- if (this.tether) {
355
- this.tether.destroy();
356
- }
357
- this.tether = null;
2275
+ "use strict";
358
2276
 
359
- this.trigger('hide');
360
- }
361
- }, {
362
- key: 'isOpen',
363
- value: function isOpen() {
364
- return this.el && hasClass(this.el, 'shepherd-open');
365
- }
366
- }, {
367
- key: 'cancel',
368
- value: function cancel() {
369
- this.tour.cancel();
370
- this.trigger('cancel');
371
- }
372
- }, {
373
- key: 'complete',
374
- value: function complete() {
375
- this.tour.complete();
376
- this.trigger('complete');
377
- }
378
- }, {
379
- key: 'scrollTo',
380
- value: function scrollTo() {
381
- var _getAttachTo = this.getAttachTo();
382
2277
 
383
- var element = _getAttachTo.element;
2278
+ Object.defineProperty(exports, "__esModule", {
2279
+ value: true
2280
+ });
2281
+ exports.Shepherd = exports.Tour = undefined;
384
2282
 
385
- if (!isUndefined(this.options.scrollToHandler)) {
386
- this.options.scrollToHandler(element);
387
- } else if (!isUndefined(element)) {
388
- element.scrollIntoView();
389
- }
390
- }
391
- }, {
392
- key: 'destroy',
393
- value: function destroy() {
394
- if (!isUndefined(this.el) && this.el.parentNode) {
395
- this.el.parentNode.removeChild(this.el);
396
- delete this.el;
397
- }
2283
+ var _isEmpty2 = __webpack_require__(9);
398
2284
 
399
- if (this.tether) {
400
- this.tether.destroy();
401
- }
402
- this.tether = null;
2285
+ var _isEmpty3 = _interopRequireDefault(_isEmpty2);
403
2286
 
404
- this.trigger('destroy');
405
- }
406
- }, {
407
- key: 'render',
408
- value: function render() {
409
- var _this5 = this;
2287
+ var _isUndefined2 = __webpack_require__(0);
410
2288
 
411
- if (!isUndefined(this.el)) {
412
- this.destroy();
413
- }
2289
+ var _isUndefined3 = _interopRequireDefault(_isUndefined2);
414
2290
 
415
- this.el = createFromHTML('<div class=\'shepherd-step ' + (this.options.classes || '') + '\' data-id=\'' + this.id + '\' ' + (this.options.idAttribute ? 'id="' + this.options.idAttribute + '"' : '') + '></div>');
2291
+ var _isString2 = __webpack_require__(2);
416
2292
 
417
- var content = document.createElement('div');
418
- content.className = 'shepherd-content';
419
- this.el.appendChild(content);
2293
+ var _isString3 = _interopRequireDefault(_isString2);
420
2294
 
421
- var header = document.createElement('header');
422
- content.appendChild(header);
2295
+ var _isNumber2 = __webpack_require__(46);
423
2296
 
424
- if (this.options.title) {
425
- header.innerHTML += '<h3 class=\'shepherd-title\'>' + this.options.title + '</h3>';
426
- this.el.className += ' shepherd-has-title';
427
- }
2297
+ var _isNumber3 = _interopRequireDefault(_isNumber2);
428
2298
 
429
- if (this.options.showCancelLink) {
430
- var link = createFromHTML("<a href class='shepherd-cancel-link'>✕</a>");
431
- header.appendChild(link);
2299
+ var _isFunction2 = __webpack_require__(5);
432
2300
 
433
- this.el.className += ' shepherd-has-cancel-link';
2301
+ var _isFunction3 = _interopRequireDefault(_isFunction2);
434
2302
 
435
- this.bindCancelLink(link);
436
- }
2303
+ var _evented = __webpack_require__(4);
437
2304
 
438
- if (!isUndefined(this.options.text)) {
439
- (function () {
440
- var text = createFromHTML("<div class='shepherd-text'></div>");
441
- var paragraphs = _this5.options.text;
2305
+ var _step = __webpack_require__(7);
442
2306
 
443
- if (typeof paragraphs === 'function') {
444
- paragraphs = paragraphs.call(_this5, text);
445
- }
2307
+ var _bind = __webpack_require__(11);
446
2308
 
447
- if (paragraphs instanceof HTMLElement) {
448
- text.appendChild(paragraphs);
449
- } else {
450
- if (typeof paragraphs === 'string') {
451
- paragraphs = [paragraphs];
452
- }
2309
+ var _tippy = __webpack_require__(13);
453
2310
 
454
- paragraphs.map(function (paragraph) {
455
- text.innerHTML += '<p>' + paragraph + '</p>';
456
- });
457
- }
2311
+ var _tippy2 = _interopRequireDefault(_tippy);
458
2312
 
459
- content.appendChild(text);
460
- })();
461
- }
2313
+ var _tooltipDefaults = __webpack_require__(47);
462
2314
 
463
- if (this.options.buttons) {
464
- (function () {
465
- var footer = document.createElement('footer');
466
- var buttons = createFromHTML("<ul class='shepherd-buttons'></ul>");
2315
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
467
2316
 
468
- _this5.options.buttons.map(function (cfg) {
469
- var button = createFromHTML('<li><a class=\'shepherd-button ' + (cfg.classes || '') + '\'>' + cfg.text + '</a>');
470
- buttons.appendChild(button);
471
- _this5.bindButtonEvents(cfg, button.querySelector('a'));
472
- });
2317
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
473
2318
 
474
- footer.appendChild(buttons);
475
- content.appendChild(footer);
476
- })();
477
- }
2319
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
478
2320
 
479
- document.body.appendChild(this.el);
2321
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
480
2322
 
481
- this.setupTether();
2323
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
482
2324
 
483
- if (this.options.advanceOn) {
484
- this.bindAdvance();
485
- }
486
- }
487
- }, {
488
- key: 'bindCancelLink',
489
- value: function bindCancelLink(link) {
490
- var _this6 = this;
2325
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
491
2326
 
492
- link.addEventListener('click', function (e) {
493
- e.preventDefault();
494
- _this6.cancel();
495
- });
496
- }
497
- }, {
498
- key: 'bindButtonEvents',
499
- value: function bindButtonEvents(cfg, el) {
500
- var _this7 = this;
2327
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
501
2328
 
502
- cfg.events = cfg.events || {};
503
- if (!isUndefined(cfg.action)) {
504
- // Including both a click event and an action is not supported
505
- cfg.events.click = cfg.action;
506
- }
2329
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
507
2330
 
508
- for (var _event2 in cfg.events) {
509
- if (({}).hasOwnProperty.call(cfg.events, _event2)) {
510
- var handler = cfg.events[_event2];
511
- if (typeof handler === 'string') {
512
- (function () {
513
- var page = handler;
514
- handler = function () {
515
- return _this7.tour.show(page);
516
- };
517
- })();
518
- }
519
- el.addEventListener(_event2, handler);
520
- }
521
- }
2331
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
522
2332
 
523
- this.on('destroy', function () {
524
- for (var _event3 in cfg.events) {
525
- if (({}).hasOwnProperty.call(cfg.events, _event3)) {
526
- var handler = cfg.events[_event3];
527
- el.removeEventListener(_event3, handler);
528
- }
529
- }
530
- });
531
- }
532
- }]);
2333
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
533
2334
 
534
- return Step;
535
- })(Evented);
2335
+ var Shepherd = new _evented.Evented();
2336
+ /**
2337
+ * Class representing the site tour
2338
+ * @extends {Evented}
2339
+ */
536
2340
 
537
- var Tour = (function (_Evented2) {
538
- _inherits(Tour, _Evented2);
2341
+ var Tour =
2342
+ /*#__PURE__*/
2343
+ exports.Tour = function (_Evented) {
2344
+ _inherits(Tour, _Evented);
539
2345
 
2346
+ /**
2347
+ *
2348
+ * @param {Object} options The options for the tour
2349
+ * @param {Object} options.defaultStepOptions Default options for Steps created through `addStep`
2350
+ * @param {Step[]} options.steps An array of Step instances to initialize the tour with
2351
+ * @returns {Tour}
2352
+ */
540
2353
  function Tour() {
541
- var _this8 = this;
2354
+ var _this;
542
2355
 
543
- var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
2356
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
544
2357
 
545
2358
  _classCallCheck(this, Tour);
546
2359
 
547
- _get(Object.getPrototypeOf(Tour.prototype), 'constructor', this).call(this, options);
548
- this.bindMethods();
549
- this.options = options;
550
- this.steps = this.options.steps || [];
2360
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(Tour).call(this, options));
2361
+
2362
+ _bind.bindMethods.call(_assertThisInitialized(_assertThisInitialized(_this)), ['back', 'cancel', 'complete', 'next']);
551
2363
 
552
- // Pass these events onto the global Shepherd object
553
- var events = ['complete', 'cancel', 'hide', 'start', 'show', 'active', 'inactive'];
2364
+ _this.options = options;
2365
+ _this.steps = _this.options.steps || []; // Pass these events onto the global Shepherd object
2366
+
2367
+ var events = ['active', 'cancel', 'complete', 'inactive', 'show', 'start'];
554
2368
  events.map(function (event) {
555
2369
  (function (e) {
556
- _this8.on(e, function (opts) {
2370
+ _this.on(e, function (opts) {
557
2371
  opts = opts || {};
558
- opts.tour = _this8;
2372
+ opts.tour = _assertThisInitialized(_assertThisInitialized(_this));
559
2373
  Shepherd.trigger(e, opts);
560
2374
  });
561
2375
  })(event);
562
2376
  });
563
2377
 
564
- return this;
2378
+ _this._setTooltipDefaults();
2379
+
2380
+ return _possibleConstructorReturn(_this, _assertThisInitialized(_assertThisInitialized(_this)));
565
2381
  }
2382
+ /**
2383
+ * Adds a new step to the tour
2384
+ * @param {Object|Number|Step|String} arg1
2385
+ * When arg2 is defined, arg1 can either be a string or number, to use for the `id` for the step
2386
+ * When arg2 is undefined, arg1 is either an object containing step options or a Step instance
2387
+ * @param {Object|Step} arg2 An object containing step options or a Step instance
2388
+ * @return {Step} The newly added step
2389
+ */
2390
+
566
2391
 
567
2392
  _createClass(Tour, [{
568
- key: 'bindMethods',
569
- value: function bindMethods() {
570
- var _this9 = this;
2393
+ key: "addStep",
2394
+ value: function addStep(arg1, arg2) {
2395
+ var name, step; // If we just have one argument, we can assume it is an object of step options, with an id
571
2396
 
572
- var methods = ['next', 'back', 'cancel', 'complete', 'hide'];
573
- methods.map(function (method) {
574
- _this9[method] = _this9[method].bind(_this9);
575
- });
576
- }
577
- }, {
578
- key: 'addStep',
579
- value: function addStep(name, step) {
580
- if (isUndefined(step)) {
581
- step = name;
2397
+ if ((0, _isUndefined3.default)(arg2)) {
2398
+ step = arg1;
2399
+ } else {
2400
+ name = arg1;
2401
+ step = arg2;
582
2402
  }
583
2403
 
584
- if (!(step instanceof Step)) {
585
- if (typeof name === 'string' || typeof name === 'number') {
586
- step.id = name.toString();
587
- }
588
- step = extend({}, this.options.defaults, step);
589
- step = new Step(this, step);
2404
+ if (!(step instanceof _step.Step)) {
2405
+ step = this.setupStep(step, name);
590
2406
  } else {
591
2407
  step.tour = this;
592
2408
  }
593
2409
 
594
2410
  this.steps.push(step);
595
- return this;
2411
+ return step;
596
2412
  }
2413
+ /**
2414
+ * Go to the previous step in the tour
2415
+ */
2416
+
597
2417
  }, {
598
- key: 'removeStep',
599
- value: function removeStep(name) {
600
- var current = this.getCurrentStep();
2418
+ key: "back",
2419
+ value: function back() {
2420
+ var index = this.steps.indexOf(this.currentStep);
2421
+ this.show(index - 1, false);
2422
+ }
2423
+ /**
2424
+ * Calls done() triggering the 'cancel' event
2425
+ * If `confirmCancel` is true, will show a window.confirm before cancelling
2426
+ */
601
2427
 
602
- for (var i = 0; i < this.steps.length; ++i) {
603
- var step = this.steps[i];
604
- if (step.id === name) {
605
- if (step.isOpen()) {
606
- step.hide();
607
- }
608
- step.destroy();
609
- this.steps.splice(i, 1);
610
- break;
2428
+ }, {
2429
+ key: "cancel",
2430
+ value: function cancel() {
2431
+ if (this.options.confirmCancel) {
2432
+ var cancelMessage = this.options.confirmCancelMessage || 'Are you sure you want to stop the tour?';
2433
+ var stopTour = window.confirm(cancelMessage);
2434
+
2435
+ if (stopTour) {
2436
+ this.done('cancel');
611
2437
  }
2438
+ } else {
2439
+ this.done('cancel');
612
2440
  }
2441
+ }
2442
+ /**
2443
+ * Calls done() triggering the `complete` event
2444
+ */
613
2445
 
614
- if (current && current.id === name) {
615
- this.currentStep = undefined;
2446
+ }, {
2447
+ key: "complete",
2448
+ value: function complete() {
2449
+ this.done('complete');
2450
+ }
2451
+ /**
2452
+ * Called whenever the tour is cancelled or completed, basically anytime we exit the tour
2453
+ * @param {String} event The event name to trigger
2454
+ */
616
2455
 
617
- if (this.steps.length) this.show(0);else this.hide();
2456
+ }, {
2457
+ key: "done",
2458
+ value: function done(event) {
2459
+ if (!(0, _isEmpty3.default)(this.steps)) {
2460
+ this.steps.forEach(function (step) {
2461
+ return step.destroy();
2462
+ });
618
2463
  }
2464
+
2465
+ this.trigger(event);
2466
+ Shepherd.activeTour = null;
2467
+ document.body.classList.remove('shepherd-active');
2468
+ this.trigger('inactive', {
2469
+ tour: this
2470
+ });
619
2471
  }
2472
+ /**
2473
+ * Gets the step from a given id
2474
+ * @param {Number|String} id The id of the step to retrieve
2475
+ * @return {Step} The step corresponding to the `id`
2476
+ */
2477
+
620
2478
  }, {
621
- key: 'getById',
2479
+ key: "getById",
622
2480
  value: function getById(id) {
623
- for (var i = 0; i < this.steps.length; ++i) {
624
- var step = this.steps[i];
625
- if (step.id === id) {
626
- return step;
627
- }
628
- }
2481
+ return this.steps.find(function (step) {
2482
+ return step.id === id;
2483
+ });
629
2484
  }
2485
+ /**
2486
+ * Gets the current step
2487
+ * @returns {Step|null}
2488
+ */
2489
+
630
2490
  }, {
631
- key: 'getCurrentStep',
2491
+ key: "getCurrentStep",
632
2492
  value: function getCurrentStep() {
633
2493
  return this.currentStep;
634
2494
  }
2495
+ /**
2496
+ * Hide the current step
2497
+ */
2498
+
635
2499
  }, {
636
- key: 'next',
637
- value: function next() {
638
- var index = this.steps.indexOf(this.currentStep);
2500
+ key: "hide",
2501
+ value: function hide() {
2502
+ var currentStep = this.getCurrentStep();
639
2503
 
640
- if (index === this.steps.length - 1) {
641
- this.hide(index);
642
- this.trigger('complete');
643
- this.done();
644
- } else {
645
- this.show(index + 1, true);
2504
+ if (currentStep) {
2505
+ return currentStep.hide();
646
2506
  }
647
2507
  }
648
2508
  }, {
649
- key: 'back',
650
- value: function back() {
651
- var index = this.steps.indexOf(this.currentStep);
652
- this.show(index - 1, false);
2509
+ key: "isActive",
2510
+ value: function isActive() {
2511
+ return Shepherd.activeTour === this;
653
2512
  }
2513
+ /**
2514
+ * Go to the next step in the tour
2515
+ * If we are at the end, call `complete`
2516
+ */
2517
+
654
2518
  }, {
655
- key: 'cancel',
656
- value: function cancel() {
657
- if (this.currentStep) {
658
- this.currentStep.hide();
2519
+ key: "next",
2520
+ value: function next() {
2521
+ var index = this.steps.indexOf(this.currentStep);
2522
+
2523
+ if (index === this.steps.length - 1) {
2524
+ this.complete();
2525
+ } else {
2526
+ this.show(index + 1, true);
659
2527
  }
660
- this.trigger('cancel');
661
- this.done();
662
2528
  }
2529
+ /**
2530
+ * Removes the step from the tour
2531
+ * @param {String} name The id for the step to remove
2532
+ */
2533
+
663
2534
  }, {
664
- key: 'complete',
665
- value: function complete() {
666
- if (this.currentStep) {
667
- this.currentStep.hide();
2535
+ key: "removeStep",
2536
+ value: function removeStep(name) {
2537
+ var _this2 = this;
2538
+
2539
+ var current = this.getCurrentStep(); // Find the step, destroy it and remove it from this.steps
2540
+
2541
+ this.steps.some(function (step, i) {
2542
+ if (step.id === name) {
2543
+ if (step.isOpen()) {
2544
+ step.hide();
2545
+ }
2546
+
2547
+ step.destroy();
2548
+
2549
+ _this2.steps.splice(i, 1);
2550
+
2551
+ return true;
2552
+ }
2553
+ });
2554
+
2555
+ if (current && current.id === name) {
2556
+ this.currentStep = undefined; // If we have steps left, show the first one, otherwise just cancel the tour
2557
+
2558
+ this.steps.length ? this.show(0) : this.cancel();
668
2559
  }
669
- this.trigger('complete');
670
- this.done();
671
2560
  }
2561
+ /**
2562
+ * Setup a new step object
2563
+ * @param {Object} stepOptions The object describing the options for the step
2564
+ * @param {String|Number} name The string or number to use as the `id` for the step
2565
+ * @return {Step} The step instance
2566
+ */
2567
+
672
2568
  }, {
673
- key: 'hide',
674
- value: function hide() {
675
- if (this.currentStep) {
676
- this.currentStep.hide();
2569
+ key: "setupStep",
2570
+ value: function setupStep(stepOptions, name) {
2571
+ if ((0, _isString3.default)(name) || (0, _isNumber3.default)(name)) {
2572
+ stepOptions.id = name.toString();
677
2573
  }
678
- this.trigger('hide');
679
- this.done();
680
- }
681
- }, {
682
- key: 'done',
683
- value: function done() {
684
- Shepherd.activeTour = null;
685
- removeClass(document.body, 'shepherd-active');
686
- this.trigger('inactive', { tour: this });
2574
+
2575
+ stepOptions = Object.assign({}, this.options.defaultStepOptions, stepOptions);
2576
+ return new _step.Step(this, stepOptions);
687
2577
  }
2578
+ /**
2579
+ * Show a specific step in the tour
2580
+ * @param {Number|String} key The key to look up the step by
2581
+ * @param {Boolean} forward True if we are going forward, false if backward
2582
+ */
2583
+
688
2584
  }, {
689
- key: 'show',
2585
+ key: "show",
690
2586
  value: function show() {
691
- var key = arguments.length <= 0 || arguments[0] === undefined ? 0 : arguments[0];
692
- var forward = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
693
-
694
- if (this.currentStep) {
695
- this.currentStep.hide();
696
- } else {
697
- addClass(document.body, 'shepherd-active');
698
- this.trigger('active', { tour: this });
699
- }
2587
+ var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
2588
+ var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2589
+ var step = (0, _isString3.default)(key) ? this.getById(key) : this.steps[key];
700
2590
 
701
- Shepherd.activeTour = this;
702
-
703
- var next = undefined;
2591
+ if (step) {
2592
+ this._updateStateBeforeShow();
704
2593
 
705
- if (typeof key === 'string') {
706
- next = this.getById(key);
707
- } else {
708
- next = this.steps[key];
709
- }
2594
+ var shouldSkipStep = (0, _isFunction3.default)(step.options.showOn) && !step.options.showOn(); // If `showOn` returns false, we want to skip the step, otherwise, show the step like normal
710
2595
 
711
- if (next) {
712
- if (!isUndefined(next.options.showOn) && !next.options.showOn()) {
713
- var index = this.steps.indexOf(next);
714
- var nextIndex = forward ? index + 1 : index - 1;
715
- this.show(nextIndex, forward);
2596
+ if (shouldSkipStep) {
2597
+ this._skipStep(step, forward);
716
2598
  } else {
717
2599
  this.trigger('show', {
718
- step: next,
2600
+ step: step,
719
2601
  previous: this.currentStep
720
2602
  });
721
-
722
- if (this.currentStep) {
723
- this.currentStep.hide();
724
- }
725
-
726
- this.currentStep = next;
727
- next.show();
2603
+ this.currentStep = step;
2604
+ step.show();
728
2605
  }
729
2606
  }
730
2607
  }
2608
+ /**
2609
+ * Start the tour
2610
+ */
2611
+
731
2612
  }, {
732
- key: 'start',
2613
+ key: "start",
733
2614
  value: function start() {
734
2615
  this.trigger('start');
735
-
736
2616
  this.currentStep = null;
2617
+
2618
+ this._setupActiveTour();
2619
+
737
2620
  this.next();
738
2621
  }
2622
+ /**
2623
+ * Make this tour "active"
2624
+ * @private
2625
+ */
2626
+
2627
+ }, {
2628
+ key: "_setupActiveTour",
2629
+ value: function _setupActiveTour() {
2630
+ document.body.classList.add('shepherd-active');
2631
+ this.trigger('active', {
2632
+ tour: this
2633
+ });
2634
+ Shepherd.activeTour = this;
2635
+ }
2636
+ /**
2637
+ * Called when `showOn` evaluates to false, to skip the step
2638
+ * @param {Step} step The step to skip
2639
+ * @param {Boolean} forward True if we are going forward, false if backward
2640
+ * @private
2641
+ */
2642
+
2643
+ }, {
2644
+ key: "_skipStep",
2645
+ value: function _skipStep(step, forward) {
2646
+ var index = this.steps.indexOf(step);
2647
+ var nextIndex = forward ? index + 1 : index - 1;
2648
+ this.show(nextIndex, forward);
2649
+ }
2650
+ }, {
2651
+ key: "_setTooltipDefaults",
2652
+ value: function _setTooltipDefaults() {
2653
+ _tippy2.default.setDefaults(_tooltipDefaults.defaults);
2654
+ }
2655
+ }, {
2656
+ key: "_updateStateBeforeShow",
2657
+ value: function _updateStateBeforeShow() {
2658
+ if (this.currentStep) {
2659
+ this.currentStep.hide();
2660
+ }
2661
+
2662
+ if (!this.isActive()) {
2663
+ this._setupActiveTour();
2664
+ }
2665
+ }
739
2666
  }]);
740
2667
 
741
2668
  return Tour;
742
- })(Evented);
2669
+ }(_evented.Evented);
2670
+
2671
+ exports.Shepherd = Shepherd;
2672
+
2673
+ /***/ }),
2674
+ /* 46 */
2675
+ /***/ (function(module, exports, __webpack_require__) {
2676
+
2677
+ var baseGetTag = __webpack_require__(3),
2678
+ isObjectLike = __webpack_require__(1);
2679
+
2680
+ /** `Object#toString` result references. */
2681
+ var numberTag = '[object Number]';
2682
+
2683
+ /**
2684
+ * Checks if `value` is classified as a `Number` primitive or object.
2685
+ *
2686
+ * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
2687
+ * classified as numbers, use the `_.isFinite` method.
2688
+ *
2689
+ * @static
2690
+ * @memberOf _
2691
+ * @since 0.1.0
2692
+ * @category Lang
2693
+ * @param {*} value The value to check.
2694
+ * @returns {boolean} Returns `true` if `value` is a number, else `false`.
2695
+ * @example
2696
+ *
2697
+ * _.isNumber(3);
2698
+ * // => true
2699
+ *
2700
+ * _.isNumber(Number.MIN_VALUE);
2701
+ * // => true
2702
+ *
2703
+ * _.isNumber(Infinity);
2704
+ * // => true
2705
+ *
2706
+ * _.isNumber('3');
2707
+ * // => false
2708
+ */
2709
+ function isNumber(value) {
2710
+ return typeof value == 'number' ||
2711
+ (isObjectLike(value) && baseGetTag(value) == numberTag);
2712
+ }
2713
+
2714
+ module.exports = isNumber;
2715
+
2716
+
2717
+ /***/ }),
2718
+ /* 47 */
2719
+ /***/ (function(module, exports, __webpack_require__) {
743
2720
 
744
- extend(Shepherd, { Tour: Tour, Step: Step, Evented: Evented });
745
- return Shepherd;
2721
+ "use strict";
2722
+
2723
+
2724
+ Object.defineProperty(exports, "__esModule", {
2725
+ value: true
2726
+ });
2727
+ var defaults = exports.defaults = {
2728
+ trigger: 'manual',
2729
+ arrow: true,
2730
+ arrowTransform: 'scale(2)',
2731
+ animation: 'fade',
2732
+ duration: 420,
2733
+ flip: true,
2734
+ animateFill: false,
2735
+ // https://atomiks.github.io/tippyjs/#animate-fill-option
2736
+ interactive: true,
2737
+ // https://atomiks.github.io/tippyjs/#interactive-option
2738
+ hideOnClick: 'toggle',
2739
+ // https://atomiks.github.io/tippyjs/#hide-on-click-option
2740
+ multiple: true // https://atomiks.github.io/tippyjs/#multiple-option
2741
+
2742
+ };
746
2743
 
747
- }));
2744
+ /***/ })
2745
+ /******/ ]);
2746
+ });
2747
+ //# sourceMappingURL=shepherd.js.map