shepherdjs_rails 1.8.1 → 2.0.0.pre.beta.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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