├── .gitignore ├── .npmrc ├── .npmignore ├── docs ├── img │ └── bg.35638fd4.png ├── index.html ├── css │ └── app.0349591b.css └── js │ ├── app.70244b16.js │ ├── app.70244b16.js.map │ └── chunk-vendors.ff04be39.js ├── rollup └── rollup.prod.js ├── rollup.config.js ├── src ├── d.ts ├── utils.ts └── smartour.ts ├── package.json ├── LICENSE ├── README.zh.md ├── README.md └── dist ├── index.esm.js └── index.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | docs/ 2 | node_modules/ 3 | src/ 4 | rollup.config.js -------------------------------------------------------------------------------- /docs/img/bg.35638fd4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrainlau/smartour/HEAD/docs/img/bg.35638fd4.png -------------------------------------------------------------------------------- /rollup/rollup.prod.js: -------------------------------------------------------------------------------- 1 | import typescript from 'rollup-plugin-typescript' 2 | 3 | export default { 4 | input: './src/smartour.ts', 5 | output: { 6 | file: './dist/index.js', 7 | name: 'Smartour', 8 | format: 'umd' 9 | }, 10 | plugins: [ 11 | typescript() 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import typescript from 'rollup-plugin-typescript' 2 | 3 | export default { 4 | input: './src/smartour.ts', 5 | output: [{ 6 | file: './dist/index.js', 7 | name: 'Smartour', 8 | format: 'umd' 9 | }, { 10 | file: './dist/index.esm.js', 11 | format: 'es' 12 | }], 13 | plugins: [ 14 | typescript() 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /src/d.ts: -------------------------------------------------------------------------------- 1 | export enum SlotPosition { 2 | TOP = 'top', 3 | BOTTOM = 'bottom', 4 | LEFT = 'left', 5 | RIGHT = 'right' 6 | } 7 | 8 | export interface Options { 9 | prefix?: string 10 | padding?: number 11 | maskColor?: string 12 | animate?: boolean 13 | slotPosition?: SlotPosition 14 | layerEvent?: EventListener 15 | } 16 | 17 | export interface HightlightElement { 18 | el: string 19 | slot: string 20 | options: Options 21 | keyNodes: Array 22 | } 23 | 24 | export interface KeyNode { 25 | el: string 26 | event: EventListener 27 | } 28 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | export const maskStyle = (maskColor: string) => ` 2 | position: absolute; 3 | border-radius: 4px; 4 | box-shadow: 0 0 0 9999px ${maskColor}; 5 | z-index: 10001 !important; 6 | transition: all .3s; 7 | ` 8 | 9 | export const slotStyle = () => ` 10 | position: absolute; 11 | z-index: 10002 !important; 12 | transition: all .3s; 13 | ` 14 | 15 | export const layerStyle = () => ` 16 | position: fixed; 17 | top: 0; 18 | left: 0; 19 | right: 0; 20 | bottom: 0; 21 | z-index: 10000 !important; 22 | ` 23 | 24 | export const noop = () => {} 25 | 26 | export const preventDefault = (e: Event) => e.preventDefault 27 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "smartour", 3 | "version": "2.0.0", 4 | "description": "Makes web page touring easier.", 5 | "main": "dist/index.js", 6 | "scripts": { 7 | "build": "rollup -c", 8 | "release": "standard-version" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/jrainlau/smartour.git" 13 | }, 14 | "keywords": [], 15 | "author": "JRAIN LAU", 16 | "license": "MIT", 17 | "bugs": { 18 | "url": "https://github.com/jrainlau/smartour/issues" 19 | }, 20 | "homepage": "https://github.com/jrainlau/smartour#readme", 21 | "devDependencies": { 22 | "rollup": "^1.16.3", 23 | "rollup-plugin-typescript": "^1.0.1", 24 | "standard-version": "^6.0.1", 25 | "tslib": "^1.10.0", 26 | "typescript": "^3.5.2" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | Smartour | DocsFork me on GitHub
-------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 JrainLau 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.zh.md: -------------------------------------------------------------------------------- 1 | 在遇到网页内容有着较大调整的时候,往往需要一个导览功能去告诉用户,某某功能已经调整到另外一个位置。比较常规的办法是添加一个蒙层,高亮显示被调整的区域,然后通过文字介绍去完成引导。我们把这个功能称为“导览”,而 **Smartour** 则把这个导览的功能抽离出来,提供了一个开箱即用的解决方案。 2 | 3 | 4 | # Install 5 | **Smartour** 被构建成了 `umd` 和 `es module` 模块,允许用户通过不同的方式引入。 6 | 7 | ``` 8 | npm install smartour 9 | ``` 10 | 11 | ``` 12 | /* ES Modules */ 13 | import Smartour from 'smartour/dist/index.esm.js' 14 | /* CommandJS */ 15 | const Smartour = require('smartour') 16 | /* 18 | ``` 19 | 20 | # 基本用法 21 | 22 | **Smartour** 提供了一个非常简单的 API `focus()`, 这是高亮一个元素最简单的方式。 23 | 24 | ```javascript 25 | let tour = new Smartour() 26 | 27 | tour.focus({ 28 | el: '#basic-usage' 29 | }) 30 | ``` 31 | 32 | # 插槽 Slot 33 | 34 | 插槽 `slot` 是用于为高亮元素提供描述的 html 字符串。 35 | 36 | ## 纯字符串: 37 | ```javascript 38 | let tour = new Smartour() 39 | 40 | tour.focus({ 41 | el: '#pure-string', 42 | slot: 'This is a pure string' 43 | }) 44 | ``` 45 | 46 | ## Html 字符串 47 | ```javascript 48 | let tour = new Smartour() 49 | 50 | tour.focus({ 51 | el: '#html-string', 52 | slot: ` 53 |
54 |

This is a html string

55 |
56 | ` 57 | }) 58 | ``` 59 | 60 | ## 插槽位置 61 | 62 | 插槽的位置可以选择4个不同的方向: `top`, `right`, `left`, `bottom`. 63 | 64 | 设置 `options.slotPosition` 属性即可覆盖默认的 `top` 位置。 65 | 66 | ```javascript 67 | let tour = new Smartour() 68 | 69 | tour.focus({ 70 | el: '#slot-positions', 71 | slot: `top`, 72 | options: { 73 | slotPosition: 'top' // 默认为 `top` 74 | } 75 | }) 76 | ```buttonslot-bottom">Bottom 77 | 78 | ## 插槽事件 79 | 插槽所定义的元素也可以绑定事件。我们通过 `keyNodes` 属性来为插槽元素绑定事件。 80 | 81 | `keyNodes` 是内容为一系列 `keyNode` 的数组。 属性 `keyNode.el` 是一个 css 选择器,而 `keyNode.event` 属性则是对应元素所绑定的事件。 82 | 83 | ```javascript 84 | let tour = new Smartour() 85 | 86 | tour.focus({ 87 | el: '.slot-events-demo', 88 | options: { 89 | slotPosition: 'right' 90 | }, 91 | slot: ` 92 | 93 | Click here to occur an alert event 94 | 95 | 96 | Click here to occur an alert event 97 | 98 | `, 99 | keyNodes: [{ 100 | el: '.occur-1', 101 | event: () => { alert('Event!!') } 102 | }, { 103 | el: '.occur-2', 104 | event: () => { alert('Another event!!') } 105 | }] 106 | }) 107 | ``` 108 | 109 | # Queue 110 | 有的时候页面需要不止一个导览。**Smartour** 允许你把一系列的导览通过 `.queue()` 放在一起,然后挨个挨个地展示它们。 111 | 112 | 举个例子: 113 | 114 | ```javascript 115 | let tour = new Smartour() 116 | 117 | tour 118 | .queue([{ 119 | el: '.li-1', 120 | options: { 121 | layerEvent: tour.next.bind(tour) 122 | }, 123 | slot: 'This is the 1st line.' 124 | }, { 125 | el: '.li-2', 126 | options: { 127 | layerEvent: tour.next.bind(tour) 128 | }, 129 | slot: 'This is the 2nd line.' 130 | }, { 131 | el: '.li-3', 132 | options: { 133 | layerEvent: tour.next.bind(tour) 134 | }, 135 | slot: 'This is the 3rd line.' 136 | }]) 137 | .run() // 别忘了调用 `run()` 方法去展示第一个导览 138 | ``` 139 | 140 | # 选项 141 | **Smartour** 是一个构建函数,它接收一个 `options` 参数去覆盖其默认选项 142 | 143 | 让我们看看它的默认选项是什么样子的: 144 | 145 | ```javascript 146 | { 147 | prefix: 'smartour', // class 前缀 148 | padding: 5, // 高亮区域内边距 149 | maskColor: 'rgba(0, 0, 0, .5)', // 带透明值的遮罩层颜色 150 | animate: true, // 是否使用动画 151 | slotPosition: 'top' // 默认的插槽位置 152 | layerEvent: smartour.over // 遮罩层点击事件,默认为结束导览 153 | } 154 | ``` 155 | 156 | # APIs 157 | 除了 `.focus()`,`.queue()` 和 `.run()` API 以外,**Smartour** 还提供了另外三个 API 专门用于控制导览的展示。 158 | 159 | - `.next()`:展示下一个导览(只能配合 `.queue()` 使用)。 160 | 161 | - `.prev()`:展示上一个导览(只能配合 `.queue()` 使用)。 162 | 163 | - `.over()`:结束全部导览。 164 | 165 | # Smartour 的原理 166 | 167 | **Smartour** 通过 `element.getBoundingClientRect()` api 来获取目标元素的宽高和位置信息,然后放置一个带着 `box-shadow` 样式的元素在其之上作为高亮区域。 168 | 169 | 由于点击事件无法再 `box-shadow` 的区域里触发,所以 **Smartour** 还放置了一个全屏透明的遮罩层用于绑定 `layerEvent` 事件。 170 | 171 | 高亮区域和插槽都被设置为 `absolute`。当页面滚动时,`document.documentElement.scrollTop` 或者 `document.documentElement.scrollLeft` 的值就会变化,然后 **Smartour** 会实时修正它的位置信息。 172 | 173 | # 证书 174 | MIT -------------------------------------------------------------------------------- /docs/css/app.0349591b.css: -------------------------------------------------------------------------------- 1 | .intro[data-v-4cefd0c2]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:url(../img/bg.35638fd4.png);background-size:100% 100%;color:#fff;text-shadow:0 0 10px #000}.intro h1[data-v-4cefd0c2]{font-size:4rem;border:none}.intro h3[data-v-4cefd0c2]{font-size:1.3rem}.intro h2[data-v-4cefd0c2]{position:absolute;left:50%;bottom:15px;-webkit-animation:jumping-data-v-4cefd0c2 .8s linear infinite alternate;animation:jumping-data-v-4cefd0c2 .8s linear infinite alternate}@-webkit-keyframes jumping-data-v-4cefd0c2{0%{-webkit-transform:translateX(-50%) translateY(-5px);transform:translateX(-50%) translateY(-5px)}to{-webkit-transform:translateX(-50%) translateY(5px);transform:translateX(-50%) translateY(5px)}}@keyframes jumping-data-v-4cefd0c2{0%{-webkit-transform:translateX(-50%) translateY(-5px);transform:translateX(-50%) translateY(-5px)}to{-webkit-transform:translateX(-50%) translateY(5px);transform:translateX(-50%) translateY(5px)}}.usage-content[data-v-190bd07d]{width:100%;max-width:960px}.footer[data-v-6091108d]{padding:10px 0;background:url(../img/bg.35638fd4.png);background-size:100% 100%}.footer p[data-v-6091108d]{color:#fff;margin:0;text-align:center;text-shadow:0 0 10px #000}.footer p a[data-v-6091108d]{color:#fff}*{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,SimSun,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,html{margin:0;padding:0;font-size:14px}.view{height:100vh;width:100vw;overflow:hidden}.usage{padding:15px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.demo-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-block;border:1px solid #8e24aa;padding:5px 10px;outline:none;color:#8e24aa;-webkit-transition:.1s;transition:.1s;background:#fff;min-width:60px;margin-right:15px}.demo-btn:hover{background:#8e24aa;border-color:#8e24aa;color:#fff}.demo-btn:active{background:#5c007a;border-color:#5c007a;color:#fff}.hljs{font-family:monospace}.smartour-slot{position:relative;background:#fff;padding:5px;border-radius:4px;font-size:1rem}.smartour-slot_top{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.smartour-slot_top:after{content:"";position:absolute;bottom:-5px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #fff}.smartour-slot_bottom{-webkit-transform:translateY(10px);transform:translateY(10px)}.smartour-slot_bottom:after{content:"";position:absolute;top:-5px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #fff}.smartour-slot_right{-webkit-transform:translateX(10px);transform:translateX(10px)}.smartour-slot_right:after{content:"";position:absolute;left:-5px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);border-bottom:5px solid transparent;border-right:5px solid #fff;border-top:5px solid transparent}.smartour-slot_left{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.smartour-slot_left:after{content:"";position:absolute;right:-5px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);border-bottom:5px solid transparent;border-left:5px solid #fff;border-top:5px solid transparent}table{border-right:1px solid #ccc;border-bottom:1px solid #ccc;margin:10px}table td,table th{padding:5px 10px;border-left:1px solid #ccc;border-top:1px solid #ccc}h1{margin:0;padding:10px 0;font-size:2rem;border:none;border-bottom:1px solid #ccc}h1,h2{font-weight:400}h2{font-size:1.5rem}code{padding:2px 4px;font-size:90%;font-family:monospace;color:#c7254e;background-color:#f9f2f4;border-radius:4px}pre{display:block;margin:0 0 10px;font-size:13px;font-family:inherit;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #ccc}blockquote p{margin:0}a{color:#009688}li{margin-bottom:10px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #ccc}ul{padding-left:15px} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Smartour 2 | 3 | ![Jul-04-2019 18-07-06](https://user-images.githubusercontent.com/12172868/60658829-9985cd80-9e86-11e9-9fa1-b05d89fc1849.gif) 4 | 5 | Once a website has changed its UI, usually they would set a list of tour guide to tell the visitors, that some modules were moved to the other places. We named it as "tour guide", and Smartour is a solution for making tour guide much easier. 6 | 7 | See live demo here: https://jrainlau.github.io/smartour 8 | 9 | [中文文档](https://github.com/jrainlau/smartour/blob/master/README.zh.md) 10 | 11 | # Install 12 | **Smartour** was built to an `umd` and `es modules` package. 13 | 14 | ``` 15 | npm install smartour 16 | ``` 17 | 18 | ``` 19 | /* ES Modules */ 20 | import Smartour from 'smartour/dist/index.esm.js' 21 | /* CommandJS */ 22 | const Smartour = require('smartour') 23 | /* 25 | ``` 26 | 27 | # Basic usage 28 | 29 | **Smartour** provides a very simple API `focus()`, it's the easist way to highlight an element. 30 | 31 | ```javascript 32 | let tour = new Smartour() 33 | 34 | tour.focus({ 35 | el: '#basic-usage' 36 | }) 37 | ``` 38 | 39 | # Slot 40 | 41 | `slot` is a html string that allows you to add a description to the highlighted element. 42 | 43 | ## Pure string: 44 | ```javascript 45 | let tour = new Smartour() 46 | 47 | tour.focus({ 48 | el: '#pure-string', 49 | slot: 'This is a pure string' 50 | }) 51 | ``` 52 | 53 | ## Html string 54 | ```javascript 55 | let tour = new Smartour() 56 | 57 | tour.focus({ 58 | el: '#html-string', 59 | slot: ` 60 |
61 |

This is a html string

62 |
63 | ` 64 | }) 65 | ``` 66 | 67 | ## Slot positions 68 | 69 | There are 4 positions to place a slot: `top`, `right`, `left`, `bottom`. 70 | 71 | Set the `options.slotPosition` attribute to overwrite the default `top`. 72 | 73 | ```javascript 74 | let tour = new Smartour() 75 | 76 | tour.focus({ 77 | el: '#slot-positions', 78 | slot: `top`, 79 | options: { 80 | slotPosition: 'top' // default is `top` 81 | } 82 | }) 83 | ``` 84 | 85 | ## Slot events 86 | The slot element could bind events, too. We can use the `keyNodes` attribute to bind events to them. 87 | 88 | `keyNodes` is an array contains with `keyNode`. The attribute `keyNode.el` is a css selector, and the other `keyNode.event` is the binding event. 89 | 90 | ```javascript 91 | let tour = new Smartour() 92 | 93 | tour.focus({ 94 | el: '.slot-events-demo', 95 | options: { 96 | slotPosition: 'right' 97 | }, 98 | slot: ` 99 | 102 | 105 | `, 106 | keyNodes: [{ 107 | el: '.occur-1', 108 | event: () => { alert('Event!!') } 109 | }, { 110 | el: '.occur-2', 111 | event: () => { alert('Another event!!') } 112 | }] 113 | }) 114 | ``` 115 | 116 | # Queue 117 | Sometimes there are more than one tour guide to show. **Smartour** allows you to put the tour guides together as a queue and show them one by one. 118 | 119 | ```javascript 120 | let tour = new Smartour() 121 | 122 | tour 123 | .queue([{ 124 | el: '.li-1', 125 | options: { 126 | layerEvent: tour.next.bind(tour) 127 | }, 128 | slot: 'This is the 1st line.' 129 | }, { 130 | el: '.li-2', 131 | options: { 132 | layerEvent: tour.next.bind(tour) 133 | }, 134 | slot: 'This is the 2nd line.' 135 | }, { 136 | el: '.li-3', 137 | options: { 138 | layerEvent: tour.next.bind(tour) 139 | }, 140 | slot: 'This is the 3rd line.' 141 | }]) 142 | .run() // don't forget to trigger api `run()` to show the first tour guide 143 | ``` 144 | 145 | # Options 146 | **Smartour** is a constructor and receives an `options` parameter to overwrite the default. 147 | 148 | Let's take a look at the default options: 149 | 150 | ```javascript 151 | { 152 | prefix: 'smartour', // class prefix 153 | padding: 5, // padding of the highlight area 154 | maskColor: 'rgba(0, 0, 0, .5)', // maskColor with alpha 155 | animate: true, // use animate while changing tour guides 156 | slotPosition: 'top' // default slot position 157 | layerEvent: smartour.over // events while clicking the layer 158 | } 159 | ``` 160 | 161 | # APIs 162 | Besides `.focus()`, `.queue()` and `.run()`, **Smartour** alse privides two apis to handle the tour guide playing. 163 | 164 | - `.next()`: Show the next tour guide. (Only work with `.queue()`) 165 | 166 | - `.prev()`: Show the previous tour guide. (Only work with `.queue()`) 167 | 168 | # Principles of Smartour 169 | 170 | **Smartour** uses api `element.getBoundingClientRect()` to detect the size and position of the target element, than place a rect element with `box-shadow` over it as the highlight area. 171 | 172 | Because click events could not be triigered from the `box-shadow` area, **Smartour** place another transparent layer over the page, and bind `layerEvent()` to it to solve this problem. 173 | 174 | The position of the highlight area and slot are `absolute`. Every time the page scrolled, the value of `document.documentElement.scrollTop` or `document.documentElement.scrollLeft` would be changed, and **Smartour** will use these values to correct the position. 175 | 176 | # License 177 | MIT 178 | -------------------------------------------------------------------------------- /src/smartour.ts: -------------------------------------------------------------------------------- 1 | import { 2 | SlotPosition, 3 | Options, 4 | HightlightElement, 5 | KeyNode 6 | } from './d' 7 | 8 | import { 9 | maskStyle, 10 | slotStyle, 11 | layerStyle 12 | } from './utils' 13 | 14 | const defaultOptions: Options = { 15 | prefix: 'smartour', 16 | padding: 5, 17 | maskColor: 'rgba(0, 0, 0, .5)', 18 | animate: true, 19 | slotPosition: SlotPosition.TOP 20 | } 21 | 22 | export default class Smartour { 23 | options: Options 24 | mask: HTMLElement 25 | slot: HTMLElement 26 | layer: HTMLElement 27 | tourList: Array 28 | tourListLength: number 29 | tourIndex: number 30 | 31 | constructor (options: Options = {}) { 32 | this.options = { 33 | ...defaultOptions, 34 | layerEvent: this.over.bind(this), 35 | ...options 36 | } 37 | 38 | this.mask = null 39 | this.slot = null 40 | this.layer = null 41 | } 42 | 43 | private _createMask () { 44 | if (!this.mask) { 45 | this.mask = document.createElement('div') 46 | this.mask.setAttribute('class', this.options.prefix + '-mask') 47 | this.mask.setAttribute('style', maskStyle(this.options.maskColor)) 48 | document.body.appendChild(this.mask) 49 | } 50 | } 51 | 52 | private _createSlot (html: string) { 53 | if (!this.slot) { 54 | this.slot = document.createElement('div') 55 | this.slot.setAttribute('style', slotStyle()) 56 | document.body.appendChild(this.slot) 57 | } 58 | this.slot.setAttribute('class', `${this.options.prefix}-slot ${this.options.prefix}-slot_${this.options.slotPosition}`) 59 | this.slot.innerHTML = html 60 | } 61 | 62 | private _createLayer () { 63 | if (!this.layer) { 64 | this.layer = document.createElement('div') 65 | this.layer.setAttribute('class', this.options.prefix + '-layer') 66 | this.layer.setAttribute('style', layerStyle()) 67 | this.layer.addEventListener('click', this.options.layerEvent) 68 | document.body.appendChild(this.layer) 69 | } 70 | } 71 | 72 | private _setPosition (el: HTMLElement, attrs: Array) { 73 | ;['top', 'left', 'width', 'height'].forEach((attr, index) => { 74 | if (attrs[index]) { 75 | if (attr === 'top' || attr === 'left') { 76 | const scrollDirection = `scroll${attr.charAt(0).toUpperCase() + attr.slice(1)}` 77 | let scrollDistance = 0 78 | if (document.documentElement && document.documentElement[scrollDirection]) { 79 | scrollDistance = document.documentElement[scrollDirection] 80 | } else { 81 | scrollDistance = document.body[scrollDirection] 82 | } 83 | el.style[attr] = attrs[index] + scrollDistance + 'px' 84 | } else { 85 | el.style[attr] = attrs[index] + 'px' 86 | } 87 | } 88 | }) 89 | } 90 | 91 | private _show (targetSelector: string, slotHtml: string = '', keyNodes: Array = []) { 92 | this._createMask() 93 | this._createSlot(slotHtml) 94 | this._createLayer() 95 | 96 | if (!this.options.animate) { 97 | this.mask.style.transition = null 98 | this.slot.style.transition = null 99 | } 100 | 101 | const target = document.querySelector(targetSelector) 102 | const { top, left, width, height } = target.getBoundingClientRect() 103 | const [maskTop, maskLeft, maskWidth, maskHeight] = [top - this.options.padding, left - this.options.padding, width + 2 * this.options.padding, height + 2 * this.options.padding] 104 | 105 | this._setPosition(this.mask, [maskTop, maskLeft, maskWidth, maskHeight]) 106 | 107 | const { width: slotWidth, height: slotHeight } = this.slot.getBoundingClientRect() 108 | const { slotPosition } = this.options 109 | let [slotTop, slotLeft] = [0, 0] 110 | 111 | if (slotPosition === SlotPosition.TOP) { 112 | [slotTop, slotLeft] = [maskTop - slotHeight, maskLeft + maskWidth / 2 - slotWidth / 2] 113 | } else if (slotPosition === SlotPosition.BOTTOM) { 114 | [slotTop, slotLeft] = [maskTop + maskHeight, maskLeft + maskWidth / 2 - slotWidth / 2] 115 | } else if (slotPosition === SlotPosition.LEFT) { 116 | [slotTop, slotLeft] = [maskTop - (slotHeight - maskHeight) / 2, maskLeft - slotWidth] 117 | } else if (slotPosition === SlotPosition.RIGHT) { 118 | [slotTop, slotLeft] = [maskTop - (slotHeight - maskHeight) / 2, maskLeft + maskWidth] 119 | } 120 | 121 | this._setPosition(this.slot, [slotTop, slotLeft]) 122 | if (!slotHtml) { 123 | document.body.removeChild(this.slot) 124 | this.slot = null 125 | } 126 | 127 | if (keyNodes.length) { 128 | keyNodes.forEach(({ el, event }) => { 129 | document.querySelector(el).addEventListener('click', event) 130 | }) 131 | } 132 | } 133 | 134 | focus (highlightElement: HightlightElement = { el: '', slot: '', keyNodes: [], options: {} }) { 135 | if (highlightElement.options && Object.keys(highlightElement.options).length) { 136 | this.options = { ...this.options, ...highlightElement.options } 137 | } 138 | this._show(highlightElement.el, highlightElement.slot, highlightElement.keyNodes) 139 | } 140 | 141 | queue (tourList: Array) { 142 | this.tourList = tourList 143 | this.tourListLength = tourList.length 144 | this.tourIndex = -1 145 | 146 | return this 147 | } 148 | 149 | run (isNext: boolean = true) { 150 | if (this.tourListLength && this.tourIndex < this.tourListLength - 1) { 151 | isNext ? this.tourIndex++ : this.tourIndex-- 152 | const tour = this.tourList[this.tourIndex] 153 | if (tour.options) { 154 | this.options = { ...this.options, ...tour.options } 155 | } 156 | this._show(tour.el, tour.slot, tour.keyNodes) 157 | } else { 158 | this.over() 159 | } 160 | } 161 | 162 | next () { 163 | this.run(true) 164 | } 165 | 166 | prev () { 167 | this.run(false) 168 | } 169 | 170 | over () { 171 | this.mask && document.body.removeChild(this.mask) 172 | this.slot && document.body.removeChild(this.slot) 173 | this.layer && document.body.removeChild(this.layer) 174 | 175 | ;['mask', 'slot', 'layer'].forEach(attr => { 176 | this[attr] = null 177 | }) 178 | } 179 | } 180 | -------------------------------------------------------------------------------- /dist/index.esm.js: -------------------------------------------------------------------------------- 1 | /*! ***************************************************************************** 2 | Copyright (c) Microsoft Corporation. All rights reserved. 3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use 4 | this file except in compliance with the License. You may obtain a copy of the 5 | License at http://www.apache.org/licenses/LICENSE-2.0 6 | 7 | THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED 9 | WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, 10 | MERCHANTABLITY OR NON-INFRINGEMENT. 11 | 12 | See the Apache Version 2.0 License for specific language governing permissions 13 | and limitations under the License. 14 | ***************************************************************************** */ 15 | 16 | var __assign = function() { 17 | __assign = Object.assign || function __assign(t) { 18 | for (var s, i = 1, n = arguments.length; i < n; i++) { 19 | s = arguments[i]; 20 | for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 21 | } 22 | return t; 23 | }; 24 | return __assign.apply(this, arguments); 25 | }; 26 | 27 | var SlotPosition; 28 | (function (SlotPosition) { 29 | SlotPosition["TOP"] = "top"; 30 | SlotPosition["BOTTOM"] = "bottom"; 31 | SlotPosition["LEFT"] = "left"; 32 | SlotPosition["RIGHT"] = "right"; 33 | })(SlotPosition || (SlotPosition = {})); 34 | 35 | var maskStyle = function (maskColor) { return "\nposition: absolute;\nborder-radius: 4px;\nbox-shadow: 0 0 0 9999px " + maskColor + ";\nz-index: 10001 !important;\ntransition: all .3s;\n"; }; 36 | var slotStyle = function () { return "\nposition: absolute;\nz-index: 10002 !important;\ntransition: all .3s;\n"; }; 37 | var layerStyle = function () { return "\nposition: fixed;\ntop: 0;\nleft: 0;\nright: 0;\nbottom: 0;\nz-index: 10000 !important;\n"; }; 38 | 39 | var defaultOptions = { 40 | prefix: 'smartour', 41 | padding: 5, 42 | maskColor: 'rgba(0, 0, 0, .5)', 43 | animate: true, 44 | slotPosition: SlotPosition.TOP 45 | }; 46 | var Smartour = /** @class */ (function () { 47 | function Smartour(options) { 48 | if (options === void 0) { options = {}; } 49 | this.options = __assign({}, defaultOptions, { layerEvent: this.over.bind(this) }, options); 50 | this.mask = null; 51 | this.slot = null; 52 | this.layer = null; 53 | } 54 | Smartour.prototype._createMask = function () { 55 | if (!this.mask) { 56 | this.mask = document.createElement('div'); 57 | this.mask.setAttribute('class', this.options.prefix + '-mask'); 58 | this.mask.setAttribute('style', maskStyle(this.options.maskColor)); 59 | document.body.appendChild(this.mask); 60 | } 61 | }; 62 | Smartour.prototype._createSlot = function (html) { 63 | if (!this.slot) { 64 | this.slot = document.createElement('div'); 65 | this.slot.setAttribute('style', slotStyle()); 66 | document.body.appendChild(this.slot); 67 | } 68 | this.slot.setAttribute('class', this.options.prefix + "-slot " + this.options.prefix + "-slot_" + this.options.slotPosition); 69 | this.slot.innerHTML = html; 70 | }; 71 | Smartour.prototype._createLayer = function () { 72 | if (!this.layer) { 73 | this.layer = document.createElement('div'); 74 | this.layer.setAttribute('class', this.options.prefix + '-layer'); 75 | this.layer.setAttribute('style', layerStyle()); 76 | this.layer.addEventListener('click', this.options.layerEvent); 77 | document.body.appendChild(this.layer); 78 | } 79 | }; 80 | Smartour.prototype._setPosition = function (el, attrs) { 81 | ['top', 'left', 'width', 'height'].forEach(function (attr, index) { 82 | if (attrs[index]) { 83 | if (attr === 'top' || attr === 'left') { 84 | var scrollDirection = "scroll" + (attr.charAt(0).toUpperCase() + attr.slice(1)); 85 | var scrollDistance = 0; 86 | if (document.documentElement && document.documentElement[scrollDirection]) { 87 | scrollDistance = document.documentElement[scrollDirection]; 88 | } 89 | else { 90 | scrollDistance = document.body[scrollDirection]; 91 | } 92 | el.style[attr] = attrs[index] + scrollDistance + 'px'; 93 | } 94 | else { 95 | el.style[attr] = attrs[index] + 'px'; 96 | } 97 | } 98 | }); 99 | }; 100 | Smartour.prototype._show = function (targetSelector, slotHtml, keyNodes) { 101 | var _a, _b, _c, _d; 102 | if (slotHtml === void 0) { slotHtml = ''; } 103 | if (keyNodes === void 0) { keyNodes = []; } 104 | this._createMask(); 105 | this._createSlot(slotHtml); 106 | this._createLayer(); 107 | if (!this.options.animate) { 108 | this.mask.style.transition = null; 109 | this.slot.style.transition = null; 110 | } 111 | var target = document.querySelector(targetSelector); 112 | var _e = target.getBoundingClientRect(), top = _e.top, left = _e.left, width = _e.width, height = _e.height; 113 | var _f = [top - this.options.padding, left - this.options.padding, width + 2 * this.options.padding, height + 2 * this.options.padding], maskTop = _f[0], maskLeft = _f[1], maskWidth = _f[2], maskHeight = _f[3]; 114 | this._setPosition(this.mask, [maskTop, maskLeft, maskWidth, maskHeight]); 115 | var _g = this.slot.getBoundingClientRect(), slotWidth = _g.width, slotHeight = _g.height; 116 | var slotPosition = this.options.slotPosition; 117 | var _h = [0, 0], slotTop = _h[0], slotLeft = _h[1]; 118 | if (slotPosition === SlotPosition.TOP) { 119 | _a = [maskTop - slotHeight, maskLeft + maskWidth / 2 - slotWidth / 2], slotTop = _a[0], slotLeft = _a[1]; 120 | } 121 | else if (slotPosition === SlotPosition.BOTTOM) { 122 | _b = [maskTop + maskHeight, maskLeft + maskWidth / 2 - slotWidth / 2], slotTop = _b[0], slotLeft = _b[1]; 123 | } 124 | else if (slotPosition === SlotPosition.LEFT) { 125 | _c = [maskTop - (slotHeight - maskHeight) / 2, maskLeft - slotWidth], slotTop = _c[0], slotLeft = _c[1]; 126 | } 127 | else if (slotPosition === SlotPosition.RIGHT) { 128 | _d = [maskTop - (slotHeight - maskHeight) / 2, maskLeft + maskWidth], slotTop = _d[0], slotLeft = _d[1]; 129 | } 130 | this._setPosition(this.slot, [slotTop, slotLeft]); 131 | if (!slotHtml) { 132 | document.body.removeChild(this.slot); 133 | this.slot = null; 134 | } 135 | if (keyNodes.length) { 136 | keyNodes.forEach(function (_a) { 137 | var el = _a.el, event = _a.event; 138 | document.querySelector(el).addEventListener('click', event); 139 | }); 140 | } 141 | }; 142 | Smartour.prototype.focus = function (highlightElement) { 143 | if (highlightElement === void 0) { highlightElement = { el: '', slot: '', keyNodes: [], options: {} }; } 144 | if (highlightElement.options && Object.keys(highlightElement.options).length) { 145 | this.options = __assign({}, this.options, highlightElement.options); 146 | } 147 | this._show(highlightElement.el, highlightElement.slot, highlightElement.keyNodes); 148 | }; 149 | Smartour.prototype.queue = function (tourList) { 150 | this.tourList = tourList; 151 | this.tourListLength = tourList.length; 152 | this.tourIndex = -1; 153 | return this; 154 | }; 155 | Smartour.prototype.run = function (isNext) { 156 | if (isNext === void 0) { isNext = true; } 157 | if (this.tourListLength && this.tourIndex < this.tourListLength - 1) { 158 | isNext ? this.tourIndex++ : this.tourIndex--; 159 | var tour = this.tourList[this.tourIndex]; 160 | if (tour.options) { 161 | this.options = __assign({}, this.options, tour.options); 162 | } 163 | this._show(tour.el, tour.slot, tour.keyNodes); 164 | } 165 | else { 166 | this.over(); 167 | } 168 | }; 169 | Smartour.prototype.next = function () { 170 | this.run(true); 171 | }; 172 | Smartour.prototype.prev = function () { 173 | this.run(false); 174 | }; 175 | Smartour.prototype.over = function () { 176 | var _this = this; 177 | this.mask && document.body.removeChild(this.mask); 178 | this.slot && document.body.removeChild(this.slot); 179 | this.layer && document.body.removeChild(this.layer); 180 | ['mask', 'slot', 'layer'].forEach(function (attr) { 181 | _this[attr] = null; 182 | }); 183 | }; 184 | return Smartour; 185 | }()); 186 | 187 | export default Smartour; 188 | -------------------------------------------------------------------------------- /dist/index.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 3 | typeof define === 'function' && define.amd ? define(factory) : 4 | (global = global || self, global.Smartour = factory()); 5 | }(this, function () { 'use strict'; 6 | 7 | /*! ***************************************************************************** 8 | Copyright (c) Microsoft Corporation. All rights reserved. 9 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use 10 | this file except in compliance with the License. You may obtain a copy of the 11 | License at http://www.apache.org/licenses/LICENSE-2.0 12 | 13 | THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED 15 | WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, 16 | MERCHANTABLITY OR NON-INFRINGEMENT. 17 | 18 | See the Apache Version 2.0 License for specific language governing permissions 19 | and limitations under the License. 20 | ***************************************************************************** */ 21 | 22 | var __assign = function() { 23 | __assign = Object.assign || function __assign(t) { 24 | for (var s, i = 1, n = arguments.length; i < n; i++) { 25 | s = arguments[i]; 26 | for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 27 | } 28 | return t; 29 | }; 30 | return __assign.apply(this, arguments); 31 | }; 32 | 33 | var SlotPosition; 34 | (function (SlotPosition) { 35 | SlotPosition["TOP"] = "top"; 36 | SlotPosition["BOTTOM"] = "bottom"; 37 | SlotPosition["LEFT"] = "left"; 38 | SlotPosition["RIGHT"] = "right"; 39 | })(SlotPosition || (SlotPosition = {})); 40 | 41 | var maskStyle = function (maskColor) { return "\nposition: absolute;\nborder-radius: 4px;\nbox-shadow: 0 0 0 9999px " + maskColor + ";\nz-index: 10001 !important;\ntransition: all .3s;\n"; }; 42 | var slotStyle = function () { return "\nposition: absolute;\nz-index: 10002 !important;\ntransition: all .3s;\n"; }; 43 | var layerStyle = function () { return "\nposition: fixed;\ntop: 0;\nleft: 0;\nright: 0;\nbottom: 0;\nz-index: 10000 !important;\n"; }; 44 | 45 | var defaultOptions = { 46 | prefix: 'smartour', 47 | padding: 5, 48 | maskColor: 'rgba(0, 0, 0, .5)', 49 | animate: true, 50 | slotPosition: SlotPosition.TOP 51 | }; 52 | var Smartour = /** @class */ (function () { 53 | function Smartour(options) { 54 | if (options === void 0) { options = {}; } 55 | this.options = __assign({}, defaultOptions, { layerEvent: this.over.bind(this) }, options); 56 | this.mask = null; 57 | this.slot = null; 58 | this.layer = null; 59 | } 60 | Smartour.prototype._createMask = function () { 61 | if (!this.mask) { 62 | this.mask = document.createElement('div'); 63 | this.mask.setAttribute('class', this.options.prefix + '-mask'); 64 | this.mask.setAttribute('style', maskStyle(this.options.maskColor)); 65 | document.body.appendChild(this.mask); 66 | } 67 | }; 68 | Smartour.prototype._createSlot = function (html) { 69 | if (!this.slot) { 70 | this.slot = document.createElement('div'); 71 | this.slot.setAttribute('style', slotStyle()); 72 | document.body.appendChild(this.slot); 73 | } 74 | this.slot.setAttribute('class', this.options.prefix + "-slot " + this.options.prefix + "-slot_" + this.options.slotPosition); 75 | this.slot.innerHTML = html; 76 | }; 77 | Smartour.prototype._createLayer = function () { 78 | if (!this.layer) { 79 | this.layer = document.createElement('div'); 80 | this.layer.setAttribute('class', this.options.prefix + '-layer'); 81 | this.layer.setAttribute('style', layerStyle()); 82 | this.layer.addEventListener('click', this.options.layerEvent); 83 | document.body.appendChild(this.layer); 84 | } 85 | }; 86 | Smartour.prototype._setPosition = function (el, attrs) { 87 | ['top', 'left', 'width', 'height'].forEach(function (attr, index) { 88 | if (attrs[index]) { 89 | if (attr === 'top' || attr === 'left') { 90 | var scrollDirection = "scroll" + (attr.charAt(0).toUpperCase() + attr.slice(1)); 91 | var scrollDistance = 0; 92 | if (document.documentElement && document.documentElement[scrollDirection]) { 93 | scrollDistance = document.documentElement[scrollDirection]; 94 | } 95 | else { 96 | scrollDistance = document.body[scrollDirection]; 97 | } 98 | el.style[attr] = attrs[index] + scrollDistance + 'px'; 99 | } 100 | else { 101 | el.style[attr] = attrs[index] + 'px'; 102 | } 103 | } 104 | }); 105 | }; 106 | Smartour.prototype._show = function (targetSelector, slotHtml, keyNodes) { 107 | var _a, _b, _c, _d; 108 | if (slotHtml === void 0) { slotHtml = ''; } 109 | if (keyNodes === void 0) { keyNodes = []; } 110 | this._createMask(); 111 | this._createSlot(slotHtml); 112 | this._createLayer(); 113 | if (!this.options.animate) { 114 | this.mask.style.transition = null; 115 | this.slot.style.transition = null; 116 | } 117 | var target = document.querySelector(targetSelector); 118 | var _e = target.getBoundingClientRect(), top = _e.top, left = _e.left, width = _e.width, height = _e.height; 119 | var _f = [top - this.options.padding, left - this.options.padding, width + 2 * this.options.padding, height + 2 * this.options.padding], maskTop = _f[0], maskLeft = _f[1], maskWidth = _f[2], maskHeight = _f[3]; 120 | this._setPosition(this.mask, [maskTop, maskLeft, maskWidth, maskHeight]); 121 | var _g = this.slot.getBoundingClientRect(), slotWidth = _g.width, slotHeight = _g.height; 122 | var slotPosition = this.options.slotPosition; 123 | var _h = [0, 0], slotTop = _h[0], slotLeft = _h[1]; 124 | if (slotPosition === SlotPosition.TOP) { 125 | _a = [maskTop - slotHeight, maskLeft + maskWidth / 2 - slotWidth / 2], slotTop = _a[0], slotLeft = _a[1]; 126 | } 127 | else if (slotPosition === SlotPosition.BOTTOM) { 128 | _b = [maskTop + maskHeight, maskLeft + maskWidth / 2 - slotWidth / 2], slotTop = _b[0], slotLeft = _b[1]; 129 | } 130 | else if (slotPosition === SlotPosition.LEFT) { 131 | _c = [maskTop - (slotHeight - maskHeight) / 2, maskLeft - slotWidth], slotTop = _c[0], slotLeft = _c[1]; 132 | } 133 | else if (slotPosition === SlotPosition.RIGHT) { 134 | _d = [maskTop - (slotHeight - maskHeight) / 2, maskLeft + maskWidth], slotTop = _d[0], slotLeft = _d[1]; 135 | } 136 | this._setPosition(this.slot, [slotTop, slotLeft]); 137 | if (!slotHtml) { 138 | document.body.removeChild(this.slot); 139 | this.slot = null; 140 | } 141 | if (keyNodes.length) { 142 | keyNodes.forEach(function (_a) { 143 | var el = _a.el, event = _a.event; 144 | document.querySelector(el).addEventListener('click', event); 145 | }); 146 | } 147 | }; 148 | Smartour.prototype.focus = function (highlightElement) { 149 | if (highlightElement === void 0) { highlightElement = { el: '', slot: '', keyNodes: [], options: {} }; } 150 | if (highlightElement.options && Object.keys(highlightElement.options).length) { 151 | this.options = __assign({}, this.options, highlightElement.options); 152 | } 153 | this._show(highlightElement.el, highlightElement.slot, highlightElement.keyNodes); 154 | }; 155 | Smartour.prototype.queue = function (tourList) { 156 | this.tourList = tourList; 157 | this.tourListLength = tourList.length; 158 | this.tourIndex = -1; 159 | return this; 160 | }; 161 | Smartour.prototype.run = function (isNext) { 162 | if (isNext === void 0) { isNext = true; } 163 | if (this.tourListLength && this.tourIndex < this.tourListLength - 1) { 164 | isNext ? this.tourIndex++ : this.tourIndex--; 165 | var tour = this.tourList[this.tourIndex]; 166 | if (tour.options) { 167 | this.options = __assign({}, this.options, tour.options); 168 | } 169 | this._show(tour.el, tour.slot, tour.keyNodes); 170 | } 171 | else { 172 | this.over(); 173 | } 174 | }; 175 | Smartour.prototype.next = function () { 176 | this.run(true); 177 | }; 178 | Smartour.prototype.prev = function () { 179 | this.run(false); 180 | }; 181 | Smartour.prototype.over = function () { 182 | var _this = this; 183 | this.mask && document.body.removeChild(this.mask); 184 | this.slot && document.body.removeChild(this.slot); 185 | this.layer && document.body.removeChild(this.layer); 186 | ['mask', 'slot', 'layer'].forEach(function (attr) { 187 | _this[attr] = null; 188 | }); 189 | }; 190 | return Smartour; 191 | }()); 192 | 193 | return Smartour; 194 | 195 | })); 196 | -------------------------------------------------------------------------------- /docs/js/app.70244b16.js: -------------------------------------------------------------------------------- 1 | (function(t){function e(e){for(var n,r,l=e[0],a=e[1],u=e[2],d=0,h=[];d div > h1",slot:"

This is it's name

",options:{slotPosition:"top",layerEvent:tour.next.bind(tour)}},{el:"#app > div > h3",slot:"

This is what it does.

",options:{slotPosition:"bottom",layerEvent:tour.next.bind(tour)}},{el:"#app > div > h2",slot:"

Scoll up to see the document

",options:{slotPosition:"top",layerEvent:tour.next.bind(tour)}}]),tour.run()}},u=a,c=(o("9346"),o("2877")),d=Object(c["a"])(u,r,l,!1,null,"4cefd0c2",null),h=d.exports,p=function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("div",{staticClass:"usage basic"},[o("div",{staticClass:"usage-content"},[o("div",{staticClass:"usage-content-doc",domProps:{innerHTML:t._s(t.doc1)}})])])},m=[],f=(o("ac6a"),o("f068")),g=o.n(f),v={data:function(){return{doc1:g.a}},mounted:function(){var t=this;["basic-usage","pure-string","html-string","slot-events","queue"].forEach(function(e,o){document.querySelector(".".concat(e,"-demo")).addEventListener("click",t["demo"+o])}),["top","right","bottom","left"].forEach(function(e){document.querySelector(".slot-".concat(e)).addEventListener("click",function(){t.demoPos(e)})})},methods:{demo0:function(){tour.focus({el:"#basic-usage"})},demo1:function(){tour.focus({el:"#pure-string",slot:"This is a pure string"})},demo2:function(){tour.focus({el:"#html-string",slot:"\n
\n

This is a html string

\n
\n "})},demoPos:function(t){var e=new Smartour;e.focus({el:".slot-".concat(t),slot:t,options:{slotPosition:t}})},demo3:function(){tour.focus({el:".slot-events-demo",options:{slotPosition:"right"},slot:'\n \n \n ',keyNodes:[{el:".occur-1",event:function(){alert("Event!!")}},{el:".occur-2",event:function(){alert("Another event!!")}}]})},demo4:function(){var t=new Smartour;t.queue([{el:".li-1",options:{layerEvent:t.next.bind(t)},slot:"This is the 1st line."},{el:".li-2",options:{layerEvent:t.next.bind(t)},slot:"This is the 2nd line."},{el:".li-3",options:{layerEvent:t.next.bind(t)},slot:"This is the 3rd line."}]).run()}}},b=v,y=(o("619e"),Object(c["a"])(b,p,m,!1,null,"190bd07d",null)),w=y.exports,k=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},x=[function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("div",{staticClass:"footer"},[o("p",[t._v("Smartour concerns about the global climate problem.")]),o("p",[t._v("\n The background image was download from "),o("a",{attrs:{href:"https://showyourstripes.info/"}},[t._v("#ShowYourStripes")])])])}],S=(o("a0f1"),{}),E=Object(c["a"])(S,k,x,!1,null,"6091108d",null),_=E.exports,T={name:"app",components:{Intro:h,Doc:w,Footer:_},mounted:function(){hljs.initHighlightingOnLoad()}},j=T,P=Object(c["a"])(j,s,i,!1,null,null,null),C=P.exports,q=(o("a606"),o("5ed6"),o("456d"),o("cebc")),O=o("d225"),L=o("b0b4"),A=function(t,e){return"\nposition: absolute;\nborder-radius: 4px;\nbox-shadow: 0 0 0 9999px ".concat(t,";\nz-index: 10001 !important;\ntransition: all .3s;\n")},I=function(t){return"\nposition: absolute;\nz-index: 10002 !important;\ntransition: all .3s;\n"},M=function(){return"\nposition: fixed;\ntop: 0;\nleft: 0;\nright: 0;\nbottom: 0;\nz-index: 10000 !important;\n"},N={prefix:"smartour",padding:5,maskColor:"rgba(0, 0, 0, .5)",animate:!0,slotPosition:"top"},B=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object(O["a"])(this,t),this.options=Object(q["a"])({},N,{layerEvent:this.over.bind(this)},e),this.mask=null,this.slot=null,this.layer=null}return Object(L["a"])(t,[{key:"_createMask",value:function(){this.mask||(this.mask=document.createElement("div"),this.mask.setAttribute("class",this.options.prefix+"-mask"),this.mask.setAttribute("style",A(this.options.maskColor)),document.body.appendChild(this.mask))}},{key:"_createSlot",value:function(t){this.slot||(this.slot=document.createElement("div"),this.slot.setAttribute("style",I()),document.body.appendChild(this.slot)),this.slot.setAttribute("class","".concat(this.options.prefix,"-slot ").concat(this.options.prefix,"-slot_").concat(this.options.slotPosition)),this.slot.innerHTML=t}},{key:"_createLayer",value:function(){this.layer||(this.layer=document.createElement("div"),this.layer.setAttribute("class",this.options.prefix+"-layer"),this.layer.setAttribute("style",M()),this.layer.addEventListener("click",this.options.layerEvent),document.body.appendChild(this.layer))}},{key:"_setPosition",value:function(t,e){["top","left","width","height"].forEach(function(o,n){if(e[n])if("top"===o||"left"===o){var s="scroll".concat(o.charAt(0).toUpperCase()+o.slice(1)),i=0;i=document.documentElement&&document.documentElement[s]?document.documentElement[s]:document.body[s],t.style[o]=e[n]+i+"px"}else t.style[o]=e[n]+"px"})}},{key:"_show",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];this._createMask(),this._createSlot(e),this._createLayer(),this.options.animate||(this.mask.style.transition=null,this.slot.style.transition=null);var n=document.querySelector(t),s=n.getBoundingClientRect(),i=s.top,r=s.left,l=s.width,a=s.height,u=i-this.options.padding,c=r-this.options.padding,d=l+2*this.options.padding,h=a+2*this.options.padding;this._setPosition(this.mask,[u,c,d,h]);var p=this.slot.getBoundingClientRect(),m=p.width,f=p.height,g=this.options.slotPosition,v=0,b=0;"top"===g?(v=u-f,b=c+d/2-m/2):"bottom"===g?(v=u+h,b=c+d/2-m/2):"left"===g?(v=u-(f-h)/2,b=c-m):"right"===g&&(v=u-(f-h)/2,b=c+d),this._setPosition(this.slot,[v,b]),e||(document.body.removeChild(this.slot),this.slot=null),o.length&&o.forEach(function(t){var e=t.el,o=t.event;document.querySelector(e).addEventListener("click",o)})}},{key:"focus",value:function(t){var e=t.el,o=void 0===e?"":e,n=t.slot,s=void 0===n?"":n,i=t.keyNodes,r=void 0===i?[]:i,l=t.options,a=void 0===l?{}:l;Object.keys(a).length&&(this.options=Object(q["a"])({},this.options,a)),this._show(o,s,r)}},{key:"queue",value:function(t){return this.tourList=t,this.tourListLength=t.length,this.tourIndex=-1,this}},{key:"run",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(this.tourListLength&&this.tourIndexOnce a website has changed its UI, usually they would set a list of tour guide to tell the visitors, that some modules were moved to the other places. We named it as "tour guide", and Smartour is a solution for making tour guide much easier.

\n

Install

\n

Smartour was built to an umd and es modules package.

\n
npm install smartour
/* ES Modules */\nimport Smartour from 'smartour/dist/index.esm.js'\n/* CommandJS */\nconst Smartour = require('smartour')\n/* <script> */\n<script src="smartour/dist/index.js"></script>

Basic usage

\n

Smartour provides a very simple API focus(), it's the easist way to highlight an element.

\n
let tour = new Smartour()\n\ntour.focus({\n  el: '#basic-usage'\n})
\n

\n

Slot

\n

slot is a html string that allows you to add a description to the highlighted element.

\n

Pure string:

\n
let tour = new Smartour()\n\ntour.focus({\n  el: '#pure-string',\n  slot: 'This is a pure string'\n})
\n

\n

Html string

\n
let tour = new Smartour()\n\ntour.focus({\n  el: '#html-string',\n  slot: `\n    <div>\n      <p>This is a html string</p>\n    </div>\n  `\n})
\n

\n

Slot positions

\n

There are 4 positions to place a slot: top, right, left, bottom.

\n

Set the options.slotPosition attribute to overwrite the default top.

\n
let tour = new Smartour()\n\ntour.focus({\n  el: '#slot-positions',\n  slot: `top`,\n  options: {\n    slotPosition: 'top' // default is `top`\n  }\n})
\n

\n\n\n

\n

Slot events

\n

The slot element could bind events, too. We can use the keyNodes attribute to bind events to them.

\n

keyNodes is an array contains with keyNode. The attribute keyNode.el is a css selector, and the other keyNode.event is the binding event.

\n
let tour = new Smartour()\n\ntour.focus({\n  el: '.slot-events-demo',\n  options: {\n    slotPosition: 'right'\n  },\n  slot: `\n    <button class="demo-btn occur-1">\n      Click here to occur an alert event\n    </button>\n    <button class="demo-btn occur-2">\n      Click here to occur an alert event\n    </button>\n  `,\n  keyNodes: [{\n    el: '.occur-1',\n    event: () => { alert('Event!!') }\n  }, {\n    el: '.occur-2',\n    event: () => { alert('Another event!!') }\n  }]\n})
\n

\n

Queue

\n

Sometimes there are more than one tour guide to show. Smartour allows you to put the tour guides together as a queue and show them one by one.

\n

Example:

\n
    \n
  • This is the first line.
  • \n
  • This is the second line.
  • \n
  • This is the thired line.
  • \n
\n\n
let tour = new Smartour()\n\ntour\n  .queue([{\n    el: '.li-1',\n    options: {\n      layerEvent: tour.next.bind(tour)\n    },\n    slot: 'This is the 1st line.'\n  }, {\n    el: '.li-2',\n    options: {\n      layerEvent: tour.next.bind(tour)\n    },\n    slot: 'This is the 2nd line.'\n  }, {\n    el: '.li-3',\n    options: {\n      layerEvent: tour.next.bind(tour)\n    },\n    slot: 'This is the 3rd line.'\n  }])\n  .run() // don't forget to trigger api `run()` to show the first tour guide
\n

\n

Options

\n

Smartour is a constructor and receives an options parameter to overwrite the default.

\n

Let's take a look at the default options:

\n
{\n  prefix: 'smartour', // class prefix\n  padding: 5, // padding of the highlight area\n  maskColor: 'rgba(0, 0, 0, .5)', // maskColor with alpha\n  animate: true, // use animate while changing tour guides\n  slotPosition: 'top' // default slot position\n  layerEvent: smartour.over // events while clicking the layer\n}
\n

APIs

\n

Besides .focus(), .queue() and .run(), Smartour alse privides two apis to handle the tour guide playing.

\n
    \n
  • .next(): Show the next tour guide. (Only work with .queue())

    \n
  • \n
  • .prev(): Show the previous tour guide. (Only work with .queue())

    \n
  • \n
\n

Principles of Smartour

\n

Smartour uses api element.getBoundingClientRect() to detect the size and position of the target element, than place a rect element with box-shadow over it as the highlight area.

\n

Because click events could not be triigered from the box-shadow area, Smartour place another transparent layer over the page, and bind layerEvent() to it to solve this problem.

\n

The position of the highlight area and slot are absolute. Every time the page scrolled, the value of document.documentElement.scrollTop or document.documentElement.scrollLeft would be changed, and Smartour will use these values to correct the position.

\n'}}); 2 | //# sourceMappingURL=app.70244b16.js.map -------------------------------------------------------------------------------- /docs/js/app.70244b16.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?d403","webpack:///./src/components/Intro.vue?c391","webpack:///src/components/Intro.vue","webpack:///./src/components/Intro.vue?2a05","webpack:///./src/components/Intro.vue","webpack:///./src/components/Doc.vue?82e2","webpack:///src/components/Doc.vue","webpack:///./src/components/Doc.vue?66d4","webpack:///./src/components/Doc.vue","webpack:///./src/components/Footer.vue?cdbf","webpack:///./src/components/Footer.vue","webpack:///src/App.vue","webpack:///./src/App.vue?a7d1","webpack:///./src/App.vue","webpack:///./src/js/smartour.esm.js","webpack:///./src/main.js","webpack:///./src/components/Doc.vue?d7cf","webpack:///./src/components/Intro.vue?ed60","webpack:///./src/components/Footer.vue?8260","webpack:///./src/docs/basic.md"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","app","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","Appvue_type_template_id_08741730_render","_vm","this","_h","$createElement","_c","_self","attrs","id","staticRenderFns","Introvue_type_template_id_4cefd0c2_scoped_true_render","_m","Introvue_type_template_id_4cefd0c2_scoped_true_staticRenderFns","staticClass","_v","Introvue_type_script_lang_js_","mounted","tour","queue","el","slot","options","slotPosition","layerEvent","next","run","components_Introvue_type_script_lang_js_","component","componentNormalizer","Intro","Docvue_type_template_id_190bd07d_scoped_true_render","domProps","innerHTML","_s","doc1","Docvue_type_template_id_190bd07d_scoped_true_staticRenderFns","Docvue_type_script_lang_js_","basic_default","a","_this","forEach","index","document","querySelector","concat","addEventListener","pos","demoPos","methods","demo0","focus","demo1","demo2","demo3Tour","Smartour","demo3","keyNodes","event","alert","demo4","components_Docvue_type_script_lang_js_","Doc_component","Doc","Footervue_type_template_id_6091108d_scoped_true_render","Footervue_type_template_id_6091108d_scoped_true_staticRenderFns","href","script","Footer_component","Footer","Appvue_type_script_lang_js_","components","hljs","initHighlightingOnLoad","src_Appvue_type_script_lang_js_","App_component","App","maskStyle","maskColor","animate","slotStyle","layerStyle","defaultOptions","prefix","padding","arguments","undefined","classCallCheck","objectSpread","over","mask","layer","createElement","setAttribute","body","appendChild","html","attr","scrollDirection","charAt","toUpperCase","scrollDistance","documentElement","style","targetSelector","slotHtml","_createMask","_createSlot","_createLayer","transition","target","_target$getBoundingCl","getBoundingClientRect","top","left","width","height","maskTop","maskLeft","maskWidth","maskHeight","_setPosition","_this$slot$getBoundin","slotWidth","slotHeight","slotTop","slotLeft","removeChild","_ref","_ref2$el","_ref2","_ref2$slot","_ref2$keyNodes","_ref2$options","keys","_show","tourList","tourListLength","tourIndex","isNext","Vue","config","productionTip","render","h","$mount","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_node_modules_css_loader_index_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Doc_vue_vue_type_style_index_0_id_190bd07d_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_node_modules_css_loader_index_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Doc_vue_vue_type_style_index_0_id_190bd07d_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_node_modules_css_loader_index_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Intro_vue_vue_type_style_index_0_id_4cefd0c2_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_node_modules_css_loader_index_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Intro_vue_vue_type_style_index_0_id_4cefd0c2_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_node_modules_css_loader_index_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Footer_vue_vue_type_style_index_0_id_6091108d_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_node_modules_css_loader_index_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Footer_vue_vue_type_style_index_0_id_6091108d_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0___default"],"mappings":"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","file":"js/app.70244b16.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/smartour/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('Intro'),_c('Doc'),_c('Footer')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"view intro\"},[_c('h1',[_vm._v(\"Smartour\")]),_c('h3',[_vm._v(\"Makes website tour guide much easier\")]),_c('h2',[_vm._v(\"⬇︎\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Intro.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Intro.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Intro.vue?vue&type=template&id=4cefd0c2&scoped=true&\"\nimport script from \"./Intro.vue?vue&type=script&lang=js&\"\nexport * from \"./Intro.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Intro.vue?vue&type=style&index=0&id=4cefd0c2&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4cefd0c2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"usage basic\"},[_c('div',{staticClass:\"usage-content\"},[_c('div',{staticClass:\"usage-content-doc\",domProps:{\"innerHTML\":_vm._s(_vm.doc1)}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Doc.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Doc.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Doc.vue?vue&type=template&id=190bd07d&scoped=true&\"\nimport script from \"./Doc.vue?vue&type=script&lang=js&\"\nexport * from \"./Doc.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Doc.vue?vue&type=style&index=0&id=190bd07d&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"190bd07d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"footer\"},[_c('p',[_vm._v(\"Smartour concerns about the global climate problem.\")]),_c('p',[_vm._v(\"\\n The background image was download from \"),_c('a',{attrs:{\"href\":\"https://showyourstripes.info/\"}},[_vm._v(\"#ShowYourStripes\")])])])}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=6091108d&scoped=true&\"\nvar script = {}\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=6091108d&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6091108d\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=08741730&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","const maskStyle = (maskColor, animate) => `\nposition: absolute;\nborder-radius: 4px;\nbox-shadow: 0 0 0 9999px ${maskColor};\nz-index: 10001 !important;\ntransition: all .3s;\n`;\n\nconst slotStyle = (animate) => `\nposition: absolute;\nz-index: 10002 !important;\ntransition: all .3s;\n`;\n\nconst layerStyle = () => `\nposition: fixed;\ntop: 0;\nleft: 0;\nright: 0;\nbottom: 0;\nz-index: 10000 !important;\n`;\n\nconst defaultOptions = {\n prefix: 'smartour',\n padding: 5,\n maskColor: 'rgba(0, 0, 0, .5)',\n animate: true,\n slotPosition: 'top'\n};\n\nclass Smartour {\n constructor (options = {}) {\n this.options = {\n ...defaultOptions,\n layerEvent: this.over.bind(this),\n ...options\n };\n\n this.mask = null;\n this.slot = null;\n this.layer = null;\n }\n\n _createMask () {\n if (!this.mask) {\n this.mask = document.createElement('div');\n this.mask.setAttribute('class', this.options.prefix + '-mask');\n this.mask.setAttribute('style', maskStyle(this.options.maskColor));\n document.body.appendChild(this.mask);\n }\n }\n\n _createSlot (html) {\n if (!this.slot) {\n this.slot = document.createElement('div');\n this.slot.setAttribute('style', slotStyle());\n document.body.appendChild(this.slot);\n }\n this.slot.setAttribute('class', `${this.options.prefix}-slot ${this.options.prefix}-slot_${this.options.slotPosition}`);\n this.slot.innerHTML = html;\n }\n\n _createLayer () {\n if (!this.layer) {\n this.layer = document.createElement('div');\n this.layer.setAttribute('class', this.options.prefix + '-layer');\n this.layer.setAttribute('style', layerStyle());\n this.layer.addEventListener('click', this.options.layerEvent);\n document.body.appendChild(this.layer);\n }\n }\n\n _setPosition (el, attrs) {\n['top', 'left', 'width', 'height'].forEach((attr, index) => {\n if (attrs[index]) {\n if (attr === 'top' || attr === 'left') {\n const scrollDirection = `scroll${attr.charAt(0).toUpperCase() + attr.slice(1)}`;\n let scrollDistance = 0;\n if (document.documentElement && document.documentElement[scrollDirection]) {\n scrollDistance = document.documentElement[scrollDirection];\n } else {\n scrollDistance = document.body[scrollDirection];\n }\n el.style[attr] = attrs[index] + scrollDistance + 'px';\n } else {\n el.style[attr] = attrs[index] + 'px';\n }\n }\n });\n }\n\n _show (targetSelector, slotHtml = '', keyNodes = []) {\n this._createMask();\n this._createSlot(slotHtml);\n this._createLayer();\n\n if (!this.options.animate) {\n this.mask.style.transition = null;\n this.slot.style.transition = null;\n }\n\n const target = document.querySelector(targetSelector);\n const { top, left, width, height } = target.getBoundingClientRect();\n const [maskTop, maskLeft, maskWidth, maskHeight] = [top - this.options.padding, left - this.options.padding, width + 2 * this.options.padding, height + 2 * this.options.padding];\n\n this._setPosition(this.mask, [maskTop, maskLeft, maskWidth, maskHeight]);\n\n const { width: slotWidth, height: slotHeight } = this.slot.getBoundingClientRect();\n const { slotPosition } = this.options;\n let [slotTop, slotLeft] = [0, 0];\n\n if (slotPosition === 'top') {\n [slotTop, slotLeft] = [maskTop - slotHeight, maskLeft + maskWidth / 2 - slotWidth / 2];\n } else if (slotPosition === 'bottom') {\n [slotTop, slotLeft] = [maskTop + maskHeight, maskLeft + maskWidth / 2 - slotWidth / 2];\n } else if (slotPosition === 'left') {\n [slotTop, slotLeft] = [maskTop - (slotHeight - maskHeight) / 2, maskLeft - slotWidth];\n } else if (slotPosition === 'right') {\n [slotTop, slotLeft] = [maskTop - (slotHeight - maskHeight) / 2, maskLeft + maskWidth];\n }\n\n this._setPosition(this.slot, [slotTop, slotLeft]);\n if (!slotHtml) {\n document.body.removeChild(this.slot);\n this.slot = null;\n }\n\n if (keyNodes.length) {\n keyNodes.forEach(({ el, event }) => {\n document.querySelector(el).addEventListener('click', event);\n });\n }\n }\n\n focus ({ el = '', slot = '', keyNodes = [], options = {}}) {\n if (Object.keys(options).length) {\n this.options = { ...this.options, ...options };\n }\n this._show(el, slot, keyNodes);\n }\n\n queue (tourList) {\n this.tourList = tourList;\n this.tourListLength = tourList.length;\n this.tourIndex = -1;\n\n return this\n }\n\n run (isNext = true) {\n if (this.tourListLength && this.tourIndex < this.tourListLength - 1) {\n isNext ? this.tourIndex++ : this.tourIndex--;\n const tour = this.tourList[this.tourIndex];\n if (tour.options) {\n this.options = { ...this.options, ...tour.options };\n }\n this._show(tour.el, tour.slot, tour.keyNodes);\n } else {\n this.over();\n }\n }\n\n next () {\n this.run(true);\n }\n\n prev () {\n this.run(false);\n }\n\n over () {\n this.mask && document.body.removeChild(this.mask);\n this.slot && document.body.removeChild(this.slot);\n this.layer && document.body.removeChild(this.layer)\n\n ;['mask', 'slot', 'layer'].forEach(attr => {\n this[attr] = null;\n });\n }\n}\n\nexport default Smartour;\n","import Vue from 'vue'\nimport App from './App.vue'\nimport './style/basic.less'\nimport './style/markdown.less'\nimport Smartour from './js/smartour.esm'\n\nwindow.Smartour = Smartour\nwindow.tour = new Smartour()\n\nVue.config.productionTip = false\n\nnew Vue({\n render: h => h(App),\n}).$mount('#app')\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Doc.vue?vue&type=style&index=0&id=190bd07d&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Doc.vue?vue&type=style&index=0&id=190bd07d&lang=less&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Intro.vue?vue&type=style&index=0&id=4cefd0c2&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Intro.vue?vue&type=style&index=0&id=4cefd0c2&lang=less&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=6091108d&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=6091108d&lang=less&scoped=true&\"","module.exports = \"

Once a website has changed its UI, usually they would set a list of tour guide to tell the visitors, that some modules were moved to the other places. We named it as "tour guide", and Smartour is a solution for making tour guide much easier.

\\n

Install

\\n

Smartour was built to an umd and es modules package.

\\n
npm install smartour
/* ES Modules */\\nimport Smartour from 'smartour/dist/index.esm.js'\\n/* CommandJS */\\nconst Smartour = require('smartour')\\n/* <script> */\\n<script src="smartour/dist/index.js"></script>

Basic usage

\\n

Smartour provides a very simple API focus(), it's the easist way to highlight an element.

\\n
let tour = new Smartour()\\n\\ntour.focus({\\n  el: '#basic-usage'\\n})
\\n

\\n

Slot

\\n

slot is a html string that allows you to add a description to the highlighted element.

\\n

Pure string:

\\n
let tour = new Smartour()\\n\\ntour.focus({\\n  el: '#pure-string',\\n  slot: 'This is a pure string'\\n})
\\n

\\n

Html string

\\n
let tour = new Smartour()\\n\\ntour.focus({\\n  el: '#html-string',\\n  slot: `\\n    <div>\\n      <p>This is a html string</p>\\n    </div>\\n  `\\n})
\\n

\\n

Slot positions

\\n

There are 4 positions to place a slot: top, right, left, bottom.

\\n

Set the options.slotPosition attribute to overwrite the default top.

\\n
let tour = new Smartour()\\n\\ntour.focus({\\n  el: '#slot-positions',\\n  slot: `top`,\\n  options: {\\n    slotPosition: 'top' // default is `top`\\n  }\\n})
\\n

\\n\\n\\n

\\n

Slot events

\\n

The slot element could bind events, too. We can use the keyNodes attribute to bind events to them.

\\n

keyNodes is an array contains with keyNode. The attribute keyNode.el is a css selector, and the other keyNode.event is the binding event.

\\n
let tour = new Smartour()\\n\\ntour.focus({\\n  el: '.slot-events-demo',\\n  options: {\\n    slotPosition: 'right'\\n  },\\n  slot: `\\n    <button class="demo-btn occur-1">\\n      Click here to occur an alert event\\n    </button>\\n    <button class="demo-btn occur-2">\\n      Click here to occur an alert event\\n    </button>\\n  `,\\n  keyNodes: [{\\n    el: '.occur-1',\\n    event: () => { alert('Event!!') }\\n  }, {\\n    el: '.occur-2',\\n    event: () => { alert('Another event!!') }\\n  }]\\n})
\\n

\\n

Queue

\\n

Sometimes there are more than one tour guide to show. Smartour allows you to put the tour guides together as a queue and show them one by one.

\\n

Example:

\\n
    \\n
  • This is the first line.
  • \\n
  • This is the second line.
  • \\n
  • This is the thired line.
  • \\n
\\n\\n
let tour = new Smartour()\\n\\ntour\\n  .queue([{\\n    el: '.li-1',\\n    options: {\\n      layerEvent: tour.next.bind(tour)\\n    },\\n    slot: 'This is the 1st line.'\\n  }, {\\n    el: '.li-2',\\n    options: {\\n      layerEvent: tour.next.bind(tour)\\n    },\\n    slot: 'This is the 2nd line.'\\n  }, {\\n    el: '.li-3',\\n    options: {\\n      layerEvent: tour.next.bind(tour)\\n    },\\n    slot: 'This is the 3rd line.'\\n  }])\\n  .run() // don't forget to trigger api `run()` to show the first tour guide
\\n

\\n

Options

\\n

Smartour is a constructor and receives an options parameter to overwrite the default.

\\n

Let's take a look at the default options:

\\n
{\\n  prefix: 'smartour', // class prefix\\n  padding: 5, // padding of the highlight area\\n  maskColor: 'rgba(0, 0, 0, .5)', // maskColor with alpha\\n  animate: true, // use animate while changing tour guides\\n  slotPosition: 'top' // default slot position\\n  layerEvent: smartour.over // events while clicking the layer\\n}
\\n

APIs

\\n

Besides .focus(), .queue() and .run(), Smartour alse privides two apis to handle the tour guide playing.

\\n
    \\n
  • .next(): Show the next tour guide. (Only work with .queue())

    \\n
  • \\n
  • .prev(): Show the previous tour guide. (Only work with .queue())

    \\n
  • \\n
\\n

Principles of Smartour

\\n

Smartour uses api element.getBoundingClientRect() to detect the size and position of the target element, than place a rect element with box-shadow over it as the highlight area.

\\n

Because click events could not be triigered from the box-shadow area, Smartour place another transparent layer over the page, and bind layerEvent() to it to solve this problem.

\\n

The position of the highlight area and slot are absolute. Every time the page scrolled, the value of document.documentElement.scrollTop or document.documentElement.scrollLeft would be changed, and Smartour will use these values to correct the position.

\\n\";"],"sourceRoot":""} -------------------------------------------------------------------------------- /docs/js/chunk-vendors.ff04be39.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"014b":function(t,e,n){"use strict";var r=n("e53d"),o=n("07e3"),i=n("8e60"),a=n("63b6"),c=n("9138"),s=n("ebfd").KEY,u=n("294c"),f=n("dbdb"),l=n("45f2"),p=n("62a0"),d=n("5168"),v=n("ccb9"),h=n("6718"),y=n("47ee"),m=n("9003"),b=n("e4ae"),g=n("f772"),_=n("241e"),w=n("36c3"),x=n("1bc3"),O=n("aebd"),C=n("a159"),S=n("0395"),A=n("bf0b"),$=n("9aa9"),k=n("d9f6"),j=n("c3a1"),E=A.f,T=k.f,P=S.f,I=r.Symbol,M=r.JSON,L=M&&M.stringify,F="prototype",D=d("_hidden"),N=d("toPrimitive"),R={}.propertyIsEnumerable,U=f("symbol-registry"),V=f("symbols"),B=f("op-symbols"),H=Object[F],z="function"==typeof I&&!!$.f,W=r.QObject,G=!W||!W[F]||!W[F].findChild,K=i&&u(function(){return 7!=C(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=E(H,e);r&&delete H[e],T(t,e,n),r&&t!==H&&T(H,e,r)}:T,q=function(t){var e=V[t]=C(I[F]);return e._k=t,e},J=z&&"symbol"==typeof I.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof I},X=function(t,e,n){return t===H&&X(B,e,n),b(t),e=x(e,!0),b(n),o(V,e)?(n.enumerable?(o(t,D)&&t[D][e]&&(t[D][e]=!1),n=C(n,{enumerable:O(0,!1)})):(o(t,D)||T(t,D,O(1,{})),t[D][e]=!0),K(t,e,n)):T(t,e,n)},Y=function(t,e){b(t);var n,r=y(e=w(e)),o=0,i=r.length;while(i>o)X(t,n=r[o++],e[n]);return t},Z=function(t,e){return void 0===e?C(t):Y(C(t),e)},Q=function(t){var e=R.call(this,t=x(t,!0));return!(this===H&&o(V,t)&&!o(B,t))&&(!(e||!o(this,t)||!o(V,t)||o(this,D)&&this[D][t])||e)},tt=function(t,e){if(t=w(t),e=x(e,!0),t!==H||!o(V,e)||o(B,e)){var n=E(t,e);return!n||!o(V,e)||o(t,D)&&t[D][e]||(n.enumerable=!0),n}},et=function(t){var e,n=P(w(t)),r=[],i=0;while(n.length>i)o(V,e=n[i++])||e==D||e==s||r.push(e);return r},nt=function(t){var e,n=t===H,r=P(n?B:w(t)),i=[],a=0;while(r.length>a)!o(V,e=r[a++])||n&&!o(H,e)||i.push(V[e]);return i};z||(I=function(){if(this instanceof I)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===H&&e.call(B,n),o(this,D)&&o(this[D],t)&&(this[D][t]=!1),K(this,t,O(1,n))};return i&&G&&K(H,t,{configurable:!0,set:e}),q(t)},c(I[F],"toString",function(){return this._k}),A.f=tt,k.f=X,n("6abf").f=S.f=et,n("355d").f=Q,$.f=nt,i&&!n("b8e3")&&c(H,"propertyIsEnumerable",Q,!0),v.f=function(t){return q(d(t))}),a(a.G+a.W+a.F*!z,{Symbol:I});for(var rt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ot=0;rt.length>ot;)d(rt[ot++]);for(var it=j(d.store),at=0;it.length>at;)h(it[at++]);a(a.S+a.F*!z,"Symbol",{for:function(t){return o(U,t+="")?U[t]:U[t]=I(t)},keyFor:function(t){if(!J(t))throw TypeError(t+" is not a symbol!");for(var e in U)if(U[e]===t)return e},useSetter:function(){G=!0},useSimple:function(){G=!1}}),a(a.S+a.F*!z,"Object",{create:Z,defineProperty:X,defineProperties:Y,getOwnPropertyDescriptor:tt,getOwnPropertyNames:et,getOwnPropertySymbols:nt});var ct=u(function(){$.f(1)});a(a.S+a.F*ct,"Object",{getOwnPropertySymbols:function(t){return $.f(_(t))}}),M&&a(a.S+a.F*(!z||u(function(){var t=I();return"[null]"!=L([t])||"{}"!=L({a:t})||"{}"!=L(Object(t))})),"JSON",{stringify:function(t){var e,n,r=[t],o=1;while(arguments.length>o)r.push(arguments[o++]);if(n=e=r[1],(g(e)||void 0!==t)&&!J(t))return m(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!J(e))return e}),r[1]=e,L.apply(M,r)}}),I[F][N]||n("35e8")(I[F],N,I[F].valueOf),l(I,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},"01f9":function(t,e,n){"use strict";var r=n("2d00"),o=n("5ca1"),i=n("2aba"),a=n("32e9"),c=n("84f2"),s=n("41a0"),u=n("7f20"),f=n("38fd"),l=n("2b4c")("iterator"),p=!([].keys&&"next"in[].keys()),d="@@iterator",v="keys",h="values",y=function(){return this};t.exports=function(t,e,n,m,b,g,_){s(n,e,m);var w,x,O,C=function(t){if(!p&&t in k)return k[t];switch(t){case v:return function(){return new n(this,t)};case h:return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",A=b==h,$=!1,k=t.prototype,j=k[l]||k[d]||b&&k[b],E=j||C(b),T=b?A?C("entries"):E:void 0,P="Array"==e&&k.entries||j;if(P&&(O=f(P.call(new t)),O!==Object.prototype&&O.next&&(u(O,S,!0),r||"function"==typeof O[l]||a(O,l,y))),A&&j&&j.name!==h&&($=!0,E=function(){return j.call(this)}),r&&!_||!p&&!$&&k[l]||a(k,l,E),c[e]=E,c[S]=y,b)if(w={values:A?E:C(h),keys:g?E:C(v),entries:T},_)for(x in w)x in k||i(k,x,w[x]);else o(o.P+o.F*(p||$),e,w);return w}},"0395":function(t,e,n){var r=n("36c3"),o=n("6abf").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(e){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?c(t):o(r(t))}},"07e3":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"097d":function(t,e,n){"use strict";var r=n("5ca1"),o=n("8378"),i=n("7726"),a=n("ebd6"),c=n("bcaa");r(r.P+r.R,"Promise",{finally:function(t){var e=a(this,o.Promise||i.Promise),n="function"==typeof t;return this.then(n?function(n){return c(e,t()).then(function(){return n})}:t,n?function(n){return c(e,t()).then(function(){throw n})}:t)}})},"0d58":function(t,e,n){var r=n("ce10"),o=n("e11e");t.exports=Object.keys||function(t){return r(t,o)}},"0fc9":function(t,e,n){var r=n("3a38"),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},1495:function(t,e,n){var r=n("86cc"),o=n("cb7c"),i=n("0d58");t.exports=n("9e1e")?Object.defineProperties:function(t,e){o(t);var n,a=i(e),c=a.length,s=0;while(c>s)r.f(t,n=a[s++],e[n]);return t}},1691:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},1991:function(t,e,n){var r,o,i,a=n("9b43"),c=n("31f4"),s=n("fab2"),u=n("230e"),f=n("7726"),l=f.process,p=f.setImmediate,d=f.clearImmediate,v=f.MessageChannel,h=f.Dispatch,y=0,m={},b="onreadystatechange",g=function(){var t=+this;if(m.hasOwnProperty(t)){var e=m[t];delete m[t],e()}},_=function(t){g.call(t.data)};p&&d||(p=function(t){var e=[],n=1;while(arguments.length>n)e.push(arguments[n++]);return m[++y]=function(){c("function"==typeof t?t:Function(t),e)},r(y),y},d=function(t){delete m[t]},"process"==n("2d95")(l)?r=function(t){l.nextTick(a(g,t,1))}:h&&h.now?r=function(t){h.now(a(g,t,1))}:v?(o=new v,i=o.port2,o.port1.onmessage=_,r=a(i.postMessage,i,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(r=function(t){f.postMessage(t+"","*")},f.addEventListener("message",_,!1)):r=b in u("script")?function(t){s.appendChild(u("script"))[b]=function(){s.removeChild(this),g.call(t)}}:function(t){setTimeout(a(g,t,1),0)}),t.exports={set:p,clear:d}},"1bc3":function(t,e,n){var r=n("f772");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},"1ec9":function(t,e,n){var r=n("f772"),o=n("e53d").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},"1fa8":function(t,e,n){var r=n("cb7c");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t["return"];throw void 0!==i&&r(i.call(t)),a}}},"230e":function(t,e,n){var r=n("d3f4"),o=n("7726").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},"23c6":function(t,e,n){var r=n("2d95"),o=n("2b4c")("toStringTag"),i="Arguments"==r(function(){return arguments}()),a=function(t,e){try{return t[e]}catch(n){}};t.exports=function(t){var e,n,c;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=a(e=Object(t),o))?n:i?r(e):"Object"==(c=r(e))&&"function"==typeof e.callee?"Arguments":c}},"241e":function(t,e,n){var r=n("25eb");t.exports=function(t){return Object(r(t))}},"25eb":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},2621:function(t,e){e.f=Object.getOwnPropertySymbols},"268f":function(t,e,n){t.exports=n("fde4")},"27ee":function(t,e,n){var r=n("23c6"),o=n("2b4c")("iterator"),i=n("84f2");t.exports=n("8378").getIteratorMethod=function(t){if(void 0!=t)return t[o]||t["@@iterator"]||i[r(t)]}},2877:function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,c){var s,u="function"===typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(s=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=s):o&&(s=c?function(){o.call(this,this.$root.$options.shadowRoot)}:o),s)if(u.functional){u._injectStyles=s;var f=u.render;u.render=function(t,e){return s.call(e),f(t,e)}}else{var l=u.beforeCreate;u.beforeCreate=l?[].concat(l,s):[s]}return{exports:t,options:u}}n.d(e,"a",function(){return r})},"294c":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"2aba":function(t,e,n){var r=n("7726"),o=n("32e9"),i=n("69a8"),a=n("ca5a")("src"),c=n("fa5b"),s="toString",u=(""+c).split(s);n("8378").inspectSource=function(t){return c.call(t)},(t.exports=function(t,e,n,c){var s="function"==typeof n;s&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(s&&(i(n,a)||o(n,a,t[e]?""+t[e]:u.join(String(e)))),t===r?t[e]=n:c?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,s,function(){return"function"==typeof this&&this[a]||c.call(this)})},"2aeb":function(t,e,n){var r=n("cb7c"),o=n("1495"),i=n("e11e"),a=n("613b")("IE_PROTO"),c=function(){},s="prototype",u=function(){var t,e=n("230e")("iframe"),r=i.length,o="<",a=">";e.style.display="none",n("fab2").appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(o+"script"+a+"document.F=Object"+o+"/script"+a),t.close(),u=t.F;while(r--)delete u[s][i[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(c[s]=r(t),n=new c,c[s]=null,n[a]=t):n=u(),void 0===e?n:o(n,e)}},"2b0e":function(t,e,n){"use strict";(function(t){ 2 | /*! 3 | * Vue.js v2.6.10 4 | * (c) 2014-2019 Evan You 5 | * Released under the MIT License. 6 | */ 7 | var n=Object.freeze({});function r(t){return void 0===t||null===t}function o(t){return void 0!==t&&null!==t}function i(t){return!0===t}function a(t){return!1===t}function c(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function s(t){return null!==t&&"object"===typeof t}var u=Object.prototype.toString;function f(t){return"[object Object]"===u.call(t)}function l(t){return"[object RegExp]"===u.call(t)}function p(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return o(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function v(t){return null==t?"":Array.isArray(t)||f(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function h(t){var e=parseFloat(t);return isNaN(e)?t:e}function y(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var g=Object.prototype.hasOwnProperty;function _(t,e){return g.call(t,e)}function w(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var x=/-(\w)/g,O=w(function(t){return t.replace(x,function(t,e){return e?e.toUpperCase():""})}),C=w(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),S=/\B([A-Z])/g,A=w(function(t){return t.replace(S,"-$1").toLowerCase()});function $(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function k(t,e){return t.bind(e)}var j=Function.prototype.bind?k:$;function E(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function T(t,e){for(var n in e)t[n]=e[n];return t}function P(t){for(var e={},n=0;n0,nt=Q&&Q.indexOf("edge/")>0,rt=(Q&&Q.indexOf("android"),Q&&/iphone|ipad|ipod|ios/.test(Q)||"ios"===Z),ot=(Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q),Q&&Q.match(/firefox\/(\d+)/)),it={}.watch,at=!1;if(X)try{var ct={};Object.defineProperty(ct,"passive",{get:function(){at=!0}}),window.addEventListener("test-passive",null,ct)}catch(Oa){}var st=function(){return void 0===q&&(q=!X&&!Y&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),q},ut=X&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ft(t){return"function"===typeof t&&/native code/.test(t.toString())}var lt,pt="undefined"!==typeof Symbol&&ft(Symbol)&&"undefined"!==typeof Reflect&&ft(Reflect.ownKeys);lt="undefined"!==typeof Set&&ft(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var dt=I,vt=0,ht=function(){this.id=vt++,this.subs=[]};ht.prototype.addSub=function(t){this.subs.push(t)},ht.prototype.removeSub=function(t){b(this.subs,t)},ht.prototype.depend=function(){ht.target&&ht.target.addDep(this)},ht.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!_(o,"default"))a=!1;else if(""===a||a===A(t)){var s=te(String,o.type);(s<0||c0&&(a=$e(a,(e||"")+"_"+n),Ae(a[0])&&Ae(u)&&(f[s]=xt(u.text+a[0].text),a.shift()),f.push.apply(f,a)):c(a)?Ae(u)?f[s]=xt(u.text+a):""!==a&&f.push(xt(a)):Ae(a)&&Ae(u)?f[s]=xt(u.text+a.text):(i(t._isVList)&&o(a.tag)&&r(a.key)&&o(e)&&(a.key="__vlist"+e+"_"+n+"__"),f.push(a)));return f}function ke(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function je(t){var e=Ee(t.$options.inject,t);e&&(jt(!1),Object.keys(e).forEach(function(n){Mt(t,n,e[n])}),jt(!0))}function Ee(t,e){if(t){for(var n=Object.create(null),r=pt?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!i,c=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==n&&c===r.$key&&!i&&!r.$hasNormal)return r;for(var s in o={},t)t[s]&&"$"!==s[0]&&(o[s]=Me(e,s,t[s]))}else o={};for(var u in e)u in o||(o[u]=Le(e,u));return t&&Object.isExtensible(t)&&(t._normalized=o),W(o,"$stable",a),W(o,"$key",c),W(o,"$hasNormal",i),o}function Me(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return t=t&&"object"===typeof t&&!Array.isArray(t)?[t]:Se(t),t&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function Le(t,e){return function(){return t[e]}}function Fe(t,e){var n,r,i,a,c;if(Array.isArray(t)||"string"===typeof t)for(n=new Array(t.length),r=0,i=t.length;r1?E(n):n;for(var r=E(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;idocument.createEvent("Event").timeStamp&&(qn=function(){return Jn.now()})}function Xn(){var t,e;for(Kn=qn(),zn=!0,Un.sort(function(t,e){return t.id-e.id}),Wn=0;WnWn&&Un[n].id>t.id)n--;Un.splice(n+1,0,t)}else Un.push(t);Hn||(Hn=!0,ve(Xn))}}var er=0,nr=function(t,e,n,r,o){this.vm=t,o&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++er,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new lt,this.newDepIds=new lt,this.expression="","function"===typeof e?this.getter=e:(this.getter=K(e),this.getter||(this.getter=I)),this.value=this.lazy?void 0:this.get()};nr.prototype.get=function(){var t;mt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(Oa){if(!this.user)throw Oa;ee(Oa,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&ye(t),bt(),this.cleanupDeps()}return t},nr.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},nr.prototype.cleanupDeps=function(){var t=this.deps.length;while(t--){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},nr.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():tr(this)},nr.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(Oa){ee(Oa,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},nr.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},nr.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},nr.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||b(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var rr={enumerable:!0,configurable:!0,get:I,set:I};function or(t,e,n){rr.get=function(){return this[e][n]},rr.set=function(t){this[e][n]=t},Object.defineProperty(t,n,rr)}function ir(t){t._watchers=[];var e=t.$options;e.props&&ar(t,e.props),e.methods&&vr(t,e.methods),e.data?cr(t):It(t._data={},!0),e.computed&&fr(t,e.computed),e.watch&&e.watch!==it&&hr(t,e.watch)}function ar(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[],i=!t.$parent;i||jt(!1);var a=function(i){o.push(i);var a=Xt(i,e,n,t);Mt(r,i,a),i in t||or(t,"_props",i)};for(var c in e)a(c);jt(!0)}function cr(t){var e=t.$options.data;e=t._data="function"===typeof e?sr(e,t):e||{},f(e)||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);while(o--){var i=n[o];0,r&&_(r,i)||z(i)||or(t,"_data",i)}It(e,!0)}function sr(t,e){mt();try{return t.call(e,e)}catch(Oa){return ee(Oa,e,"data()"),{}}finally{bt()}}var ur={lazy:!0};function fr(t,e){var n=t._computedWatchers=Object.create(null),r=st();for(var o in e){var i=e[o],a="function"===typeof i?i:i.get;0,r||(n[o]=new nr(t,a||I,I,ur)),o in t||lr(t,o,i)}}function lr(t,e,n){var r=!st();"function"===typeof n?(rr.get=r?pr(e):dr(n),rr.set=I):(rr.get=n.get?r&&!1!==n.cache?pr(e):dr(n.get):I,rr.set=n.set||I),Object.defineProperty(t,e,rr)}function pr(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),ht.target&&e.depend(),e.value}}function dr(t){return function(){return t.call(this,this)}}function vr(t,e){t.$options.props;for(var n in e)t[n]="function"!==typeof e[n]?I:j(e[n],t)}function hr(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1)return this;var n=E(arguments,1);return n.unshift(this),"function"===typeof t.install?t.install.apply(t,n):"function"===typeof t&&t.apply(null,n),e.push(t),this}}function Sr(t){t.mixin=function(t){return this.options=qt(this.options,t),this}}function Ar(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name;var a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=qt(n.options,t),a["super"]=n,a.options.props&&$r(a),a.options.computed&&kr(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,U.forEach(function(t){a[t]=n[t]}),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=T({},a.options),o[r]=a,a}}function $r(t){var e=t.options.props;for(var n in e)or(t.prototype,"_props",n)}function kr(t){var e=t.options.computed;for(var n in e)lr(t.prototype,n,e[n])}function jr(t){U.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&f(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"===typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}function Er(t){return t&&(t.Ctor.options.name||t.tag)}function Tr(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!l(t)&&t.test(e)}function Pr(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var c=Er(a.componentOptions);c&&!e(c)&&Ir(n,i,r,o)}}}function Ir(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,b(n,e)}gr(Or),mr(Or),jn(Or),In(Or),bn(Or);var Mr=[String,RegExp,Array],Lr={name:"keep-alive",abstract:!0,props:{include:Mr,exclude:Mr,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Ir(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",function(e){Pr(t,function(t){return Tr(e,t)})}),this.$watch("exclude",function(e){Pr(t,function(t){return!Tr(e,t)})})},render:function(){var t=this.$slots.default,e=On(t),n=e&&e.componentOptions;if(n){var r=Er(n),o=this,i=o.include,a=o.exclude;if(i&&(!r||!Tr(i,r))||a&&r&&Tr(a,r))return e;var c=this,s=c.cache,u=c.keys,f=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;s[f]?(e.componentInstance=s[f].componentInstance,b(u,f),u.push(f)):(s[f]=e,u.push(f),this.max&&u.length>parseInt(this.max)&&Ir(s,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}},Fr={KeepAlive:Lr};function Dr(t){var e={get:function(){return B}};Object.defineProperty(t,"config",e),t.util={warn:dt,extend:T,mergeOptions:qt,defineReactive:Mt},t.set=Lt,t.delete=Ft,t.nextTick=ve,t.observable=function(t){return It(t),t},t.options=Object.create(null),U.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,T(t.options.components,Fr),Cr(t),Sr(t),Ar(t),jr(t)}Dr(Or),Object.defineProperty(Or.prototype,"$isServer",{get:st}),Object.defineProperty(Or.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Or,"FunctionalRenderContext",{value:Ye}),Or.version="2.6.10";var Nr=y("style,class"),Rr=y("input,textarea,option,select,progress"),Ur=function(t,e,n){return"value"===n&&Rr(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Vr=y("contenteditable,draggable,spellcheck"),Br=y("events,caret,typing,plaintext-only"),Hr=function(t,e){return qr(e)||"false"===e?"false":"contenteditable"===t&&Br(e)?e:"true"},zr=y("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Wr="http://www.w3.org/1999/xlink",Gr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Kr=function(t){return Gr(t)?t.slice(6,t.length):""},qr=function(t){return null==t||!1===t};function Jr(t){var e=t.data,n=t,r=t;while(o(r.componentInstance))r=r.componentInstance._vnode,r&&r.data&&(e=Xr(r.data,e));while(o(n=n.parent))n&&n.data&&(e=Xr(e,n.data));return Yr(e.staticClass,e.class)}function Xr(t,e){return{staticClass:Zr(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Yr(t,e){return o(t)||o(e)?Zr(t,Qr(e)):""}function Zr(t,e){return t?e?t+" "+e:t:e||""}function Qr(t){return Array.isArray(t)?to(t):s(t)?eo(t):"string"===typeof t?t:""}function to(t){for(var e,n="",r=0,i=t.length;r-1?co[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:co[t]=/HTMLUnknownElement/.test(e.toString())}var uo=y("text,number,password,search,email,tel,url");function fo(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function lo(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function po(t,e){return document.createElementNS(no[t],e)}function vo(t){return document.createTextNode(t)}function ho(t){return document.createComment(t)}function yo(t,e,n){t.insertBefore(e,n)}function mo(t,e){t.removeChild(e)}function bo(t,e){t.appendChild(e)}function go(t){return t.parentNode}function _o(t){return t.nextSibling}function wo(t){return t.tagName}function xo(t,e){t.textContent=e}function Oo(t,e){t.setAttribute(e,"")}var Co=Object.freeze({createElement:lo,createElementNS:po,createTextNode:vo,createComment:ho,insertBefore:yo,removeChild:mo,appendChild:bo,parentNode:go,nextSibling:_o,tagName:wo,setTextContent:xo,setStyleScope:Oo}),So={create:function(t,e){Ao(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Ao(t,!0),Ao(e))},destroy:function(t){Ao(t,!0)}};function Ao(t,e){var n=t.data.ref;if(o(n)){var r=t.context,i=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?b(a[n],i):a[n]===i&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}var $o=new gt("",{},[]),ko=["create","activate","update","remove","destroy"];function jo(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&Eo(t,e)||i(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function Eo(t,e){if("input"!==t.tag)return!0;var n,r=o(n=t.data)&&o(n=n.attrs)&&n.type,i=o(n=e.data)&&o(n=n.attrs)&&n.type;return r===i||uo(r)&&uo(i)}function To(t,e,n){var r,i,a={};for(r=e;r<=n;++r)i=t[r].key,o(i)&&(a[i]=r);return a}function Po(t){var e,n,a={},s=t.modules,u=t.nodeOps;for(e=0;eh?(l=r(n[b+1])?null:n[b+1].elm,O(t,l,n,v,b,i)):v>b&&S(t,e,p,h)}function k(t,e,n,r){for(var i=n;i-1?Ho(t,e,n):zr(e)?qr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Vr(e)?t.setAttribute(e,Hr(e,n)):Gr(e)?qr(n)?t.removeAttributeNS(Wr,Kr(e)):t.setAttributeNS(Wr,e,n):Ho(t,e,n)}function Ho(t,e,n){if(qr(n))t.removeAttribute(e);else{if(tt&&!et&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var zo={create:Vo,update:Vo};function Wo(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var c=Jr(e),s=n._transitionClasses;o(s)&&(c=Zr(c,Qr(s))),c!==n._prevClass&&(n.setAttribute("class",c),n._prevClass=c)}}var Go,Ko={create:Wo,update:Wo},qo="__r",Jo="__c";function Xo(t){if(o(t[qo])){var e=tt?"change":"input";t[e]=[].concat(t[qo],t[e]||[]),delete t[qo]}o(t[Jo])&&(t.change=[].concat(t[Jo],t.change||[]),delete t[Jo])}function Yo(t,e,n){var r=Go;return function o(){var i=e.apply(null,arguments);null!==i&&ti(t,o,n,r)}}var Zo=ae&&!(ot&&Number(ot[1])<=53);function Qo(t,e,n,r){if(Zo){var o=Kn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Go.addEventListener(t,e,at?{capture:n,passive:r}:n)}function ti(t,e,n,r){(r||Go).removeEventListener(t,e._wrapper||e,n)}function ei(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},o=t.data.on||{};Go=e.elm,Xo(n),_e(n,o,Qo,ti,Yo,e.context),Go=void 0}}var ni,ri={create:ei,update:ei};function oi(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,c=t.data.domProps||{},s=e.data.domProps||{};for(n in o(s.__ob__)&&(s=e.data.domProps=T({},s)),c)n in s||(a[n]="");for(n in s){if(i=s[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===c[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=i;var u=r(i)?"":String(i);ii(a,u)&&(a.value=u)}else if("innerHTML"===n&&oo(a.tagName)&&r(a.innerHTML)){ni=ni||document.createElement("div"),ni.innerHTML=""+i+"";var f=ni.firstChild;while(a.firstChild)a.removeChild(a.firstChild);while(f.firstChild)a.appendChild(f.firstChild)}else if(i!==c[n])try{a[n]=i}catch(Oa){}}}}function ii(t,e){return!t.composing&&("OPTION"===t.tagName||ai(t,e)||ci(t,e))}function ai(t,e){var n=!0;try{n=document.activeElement!==t}catch(Oa){}return n&&t.value!==e}function ci(t,e){var n=t.value,r=t._vModifiers;if(o(r)){if(r.number)return h(n)!==h(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}var si={create:oi,update:oi},ui=w(function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach(function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e});function fi(t){var e=li(t.style);return t.staticStyle?T(t.staticStyle,e):e}function li(t){return Array.isArray(t)?P(t):"string"===typeof t?ui(t):t}function pi(t,e){var n,r={};if(e){var o=t;while(o.componentInstance)o=o.componentInstance._vnode,o&&o.data&&(n=fi(o.data))&&T(r,n)}(n=fi(t.data))&&T(r,n);var i=t;while(i=i.parent)i.data&&(n=fi(i.data))&&T(r,n);return r}var di,vi=/^--/,hi=/\s*!important$/,yi=function(t,e,n){if(vi.test(e))t.style.setProperty(e,n);else if(hi.test(n))t.style.setProperty(A(e),n.replace(hi,""),"important");else{var r=bi(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(wi).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Oi(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(wi).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";while(n.indexOf(r)>=0)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function Ci(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&T(e,Si(t.name||"v")),T(e,t),e}return"string"===typeof t?Si(t):void 0}}var Si=w(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),Ai=X&&!et,$i="transition",ki="animation",ji="transition",Ei="transitionend",Ti="animation",Pi="animationend";Ai&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ji="WebkitTransition",Ei="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ti="WebkitAnimation",Pi="webkitAnimationEnd"));var Ii=X?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Mi(t){Ii(function(){Ii(t)})}function Li(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),xi(t,e))}function Fi(t,e){t._transitionClasses&&b(t._transitionClasses,e),Oi(t,e)}function Di(t,e,n){var r=Ri(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var c=o===$i?Ei:Pi,s=0,u=function(){t.removeEventListener(c,f),n()},f=function(e){e.target===t&&++s>=a&&u()};setTimeout(function(){s0&&(n=$i,f=a,l=i.length):e===ki?u>0&&(n=ki,f=u,l=s.length):(f=Math.max(a,u),n=f>0?a>u?$i:ki:null,l=n?n===$i?i.length:s.length:0);var p=n===$i&&Ni.test(r[ji+"Property"]);return{type:n,timeout:f,propCount:l,hasTransform:p}}function Ui(t,e){while(t.length1}function Gi(t,e){!0!==e.data.show&&Bi(e)}var Ki=X?{create:Gi,activate:Gi,remove:function(t,e){!0!==t.data.show?Hi(t,e):e()}}:{},qi=[zo,Ko,ri,si,_i,Ki],Ji=qi.concat(Uo),Xi=Po({nodeOps:Co,modules:Ji});et&&document.addEventListener("selectionchange",function(){var t=document.activeElement;t&&t.vmodel&&oa(t,"input")});var Yi={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?we(n,"postpatch",function(){Yi.componentUpdated(t,e,n)}):Zi(t,e,n.context),t._vOptions=[].map.call(t.options,ea)):("textarea"===n.tag||uo(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",na),t.addEventListener("compositionend",ra),t.addEventListener("change",ra),et&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Zi(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,ea);if(o.some(function(t,e){return!F(t,r[e])})){var i=t.multiple?e.value.some(function(t){return ta(t,o)}):e.value!==e.oldValue&&ta(e.value,o);i&&oa(t,"change")}}}};function Zi(t,e,n){Qi(t,e,n),(tt||nt)&&setTimeout(function(){Qi(t,e,n)},0)}function Qi(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,c=0,s=t.options.length;c-1,a.selected!==i&&(a.selected=i);else if(F(ea(a),r))return void(t.selectedIndex!==c&&(t.selectedIndex=c));o||(t.selectedIndex=-1)}}function ta(t,e){return e.every(function(e){return!F(e,t)})}function ea(t){return"_value"in t?t._value:t.value}function na(t){t.target.composing=!0}function ra(t){t.target.composing&&(t.target.composing=!1,oa(t.target,"input"))}function oa(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function ia(t){return!t.componentInstance||t.data&&t.data.transition?t:ia(t.componentInstance._vnode)}var aa={bind:function(t,e,n){var r=e.value;n=ia(n);var o=n.data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Bi(n,function(){t.style.display=i})):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value,o=e.oldValue;if(!r!==!o){n=ia(n);var i=n.data&&n.data.transition;i?(n.data.show=!0,r?Bi(n,function(){t.style.display=t.__vOriginalDisplay}):Hi(n,function(){t.style.display="none"})):t.style.display=r?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},ca={model:Yi,show:aa},sa={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function ua(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?ua(On(e.children)):t}function fa(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[O(i)]=o[i];return e}function la(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function pa(t){while(t=t.parent)if(t.data.transition)return!0}function da(t,e){return e.key===t.key&&e.tag===t.tag}var va=function(t){return t.tag||xn(t)},ha=function(t){return"show"===t.name},ya={name:"transition",props:sa,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(va),n.length)){0;var r=this.mode;0;var o=n[0];if(pa(this.$vnode))return o;var i=ua(o);if(!i)return o;if(this._leaving)return la(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:c(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=fa(this),u=this._vnode,f=ua(u);if(i.data.directives&&i.data.directives.some(ha)&&(i.data.show=!0),f&&f.data&&!da(i,f)&&!xn(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=T({},s);if("out-in"===r)return this._leaving=!0,we(l,"afterLeave",function(){e._leaving=!1,e.$forceUpdate()}),la(t,o);if("in-out"===r){if(xn(i))return u;var p,d=function(){p()};we(s,"afterEnter",d),we(s,"enterCancelled",d),we(l,"delayLeave",function(t){p=t})}}return o}}},ma=T({tag:String,moveClass:String},sa);delete ma.mode;var ba={props:ma,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Tn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=fa(this),c=0;c0?r:n)(t)}},"41a0":function(t,e,n){"use strict";var r=n("2aeb"),o=n("4630"),i=n("7f20"),a={};n("32e9")(a,n("2b4c")("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},"454f":function(t,e,n){n("46a7");var r=n("584a").Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},"456d":function(t,e,n){var r=n("4bf8"),o=n("0d58");n("5eda")("keys",function(){return function(t){return o(r(t))}})},4588:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},"45f2":function(t,e,n){var r=n("d9f6").f,o=n("07e3"),i=n("5168")("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},4630:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"46a7":function(t,e,n){var r=n("63b6");r(r.S+r.F*!n("8e60"),"Object",{defineProperty:n("d9f6").f})},"47ee":function(t,e,n){var r=n("c3a1"),o=n("9aa9"),i=n("355d");t.exports=function(t){var e=r(t),n=o.f;if(n){var a,c=n(t),s=i.f,u=0;while(c.length>u)s.call(t,a=c[u++])&&e.push(a)}return e}},"4a59":function(t,e,n){var r=n("9b43"),o=n("1fa8"),i=n("33a4"),a=n("cb7c"),c=n("9def"),s=n("27ee"),u={},f={};e=t.exports=function(t,e,n,l,p){var d,v,h,y,m=p?function(){return t}:s(t),b=r(n,l,e?2:1),g=0;if("function"!=typeof m)throw TypeError(t+" is not iterable!");if(i(m)){for(d=c(t.length);d>g;g++)if(y=e?b(a(v=t[g])[0],v[1]):b(t[g]),y===u||y===f)return y}else for(h=m.call(t);!(v=h.next()).done;)if(y=o(h,b,v.value,e),y===u||y===f)return y};e.BREAK=u,e.RETURN=f},"4bf8":function(t,e,n){var r=n("be13");t.exports=function(t){return Object(r(t))}},5168:function(t,e,n){var r=n("dbdb")("wks"),o=n("62a0"),i=n("e53d").Symbol,a="function"==typeof i,c=t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))};c.store=r},"52a7":function(t,e){e.f={}.propertyIsEnumerable},"551c":function(t,e,n){"use strict";var r,o,i,a,c=n("2d00"),s=n("7726"),u=n("9b43"),f=n("23c6"),l=n("5ca1"),p=n("d3f4"),d=n("d8e8"),v=n("f605"),h=n("4a59"),y=n("ebd6"),m=n("1991").set,b=n("8079")(),g=n("a5b8"),_=n("9c80"),w=n("a25f"),x=n("bcaa"),O="Promise",C=s.TypeError,S=s.process,A=S&&S.versions,$=A&&A.v8||"",k=s[O],j="process"==f(S),E=function(){},T=o=g.f,P=!!function(){try{var t=k.resolve(1),e=(t.constructor={})[n("2b4c")("species")]=function(t){t(E,E)};return(j||"function"==typeof PromiseRejectionEvent)&&t.then(E)instanceof e&&0!==$.indexOf("6.6")&&-1===w.indexOf("Chrome/66")}catch(r){}}(),I=function(t){var e;return!(!p(t)||"function"!=typeof(e=t.then))&&e},M=function(t,e){if(!t._n){t._n=!0;var n=t._c;b(function(){var r=t._v,o=1==t._s,i=0,a=function(e){var n,i,a,c=o?e.ok:e.fail,s=e.resolve,u=e.reject,f=e.domain;try{c?(o||(2==t._h&&D(t),t._h=1),!0===c?n=r:(f&&f.enter(),n=c(r),f&&(f.exit(),a=!0)),n===e.promise?u(C("Promise-chain cycle")):(i=I(n))?i.call(n,s,u):s(n)):u(r)}catch(l){f&&!a&&f.exit(),u(l)}};while(n.length>i)a(n[i++]);t._c=[],t._n=!1,e&&!t._h&&L(t)})}},L=function(t){m.call(s,function(){var e,n,r,o=t._v,i=F(t);if(i&&(e=_(function(){j?S.emit("unhandledRejection",o,t):(n=s.onunhandledrejection)?n({promise:t,reason:o}):(r=s.console)&&r.error&&r.error("Unhandled promise rejection",o)}),t._h=j||F(t)?2:1),t._a=void 0,i&&e.e)throw e.v})},F=function(t){return 1!==t._h&&0===(t._a||t._c).length},D=function(t){m.call(s,function(){var e;j?S.emit("rejectionHandled",t):(e=s.onrejectionhandled)&&e({promise:t,reason:t._v})})},N=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),M(e,!0))},R=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw C("Promise can't be resolved itself");(e=I(t))?b(function(){var r={_w:n,_d:!1};try{e.call(t,u(R,r,1),u(N,r,1))}catch(o){N.call(r,o)}}):(n._v=t,n._s=1,M(n,!1))}catch(r){N.call({_w:n,_d:!1},r)}}};P||(k=function(t){v(this,k,O,"_h"),d(t),r.call(this);try{t(u(R,this,1),u(N,this,1))}catch(e){N.call(this,e)}},r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},r.prototype=n("dcbc")(k.prototype,{then:function(t,e){var n=T(y(this,k));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=j?S.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&M(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new r;this.promise=t,this.resolve=u(R,t,1),this.reject=u(N,t,1)},g.f=T=function(t){return t===k||t===a?new i(t):o(t)}),l(l.G+l.W+l.F*!P,{Promise:k}),n("7f20")(k,O),n("7a56")(O),a=n("8378")[O],l(l.S+l.F*!P,O,{reject:function(t){var e=T(this),n=e.reject;return n(t),e.promise}}),l(l.S+l.F*(c||!P),O,{resolve:function(t){return x(c&&this===a?k:this,t)}}),l(l.S+l.F*!(P&&n("5cc5")(function(t){k.all(t)["catch"](E)})),O,{all:function(t){var e=this,n=T(e),r=n.resolve,o=n.reject,i=_(function(){var n=[],i=0,a=1;h(t,!1,function(t){var c=i++,s=!1;n.push(void 0),a++,e.resolve(t).then(function(t){s||(s=!0,n[c]=t,--a||r(n))},o)}),--a||r(n)});return i.e&&o(i.v),n.promise},race:function(t){var e=this,n=T(e),r=n.reject,o=_(function(){h(t,!1,function(t){e.resolve(t).then(n.resolve,r)})});return o.e&&r(o.v),n.promise}})},5537:function(t,e,n){var r=n("8378"),o=n("7726"),i="__core-js_shared__",a=o[i]||(o[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n("2d00")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},5559:function(t,e,n){var r=n("dbdb")("keys"),o=n("62a0");t.exports=function(t){return r[t]||(r[t]=o(t))}},"584a":function(t,e){var n=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=n)},"5b4e":function(t,e,n){var r=n("36c3"),o=n("b447"),i=n("0fc9");t.exports=function(t){return function(e,n,a){var c,s=r(e),u=o(s.length),f=i(a,u);if(t&&n!=n){while(u>f)if(c=s[f++],c!=c)return!0}else for(;u>f;f++)if((t||f in s)&&s[f]===n)return t||f||0;return!t&&-1}}},"5ca1":function(t,e,n){var r=n("7726"),o=n("8378"),i=n("32e9"),a=n("2aba"),c=n("9b43"),s="prototype",u=function(t,e,n){var f,l,p,d,v=t&u.F,h=t&u.G,y=t&u.S,m=t&u.P,b=t&u.B,g=h?r:y?r[e]||(r[e]={}):(r[e]||{})[s],_=h?o:o[e]||(o[e]={}),w=_[s]||(_[s]={});for(f in h&&(n=e),n)l=!v&&g&&void 0!==g[f],p=(l?g:n)[f],d=b&&l?c(p,r):m&&"function"==typeof p?c(Function.call,p):p,g&&a(g,f,p,t&u.U),_[f]!=p&&i(_,f,d),m&&w[f]!=p&&(w[f]=p)};r.core=o,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},"5cc5":function(t,e,n){var r=n("2b4c")("iterator"),o=!1;try{var i=[7][r]();i["return"]=function(){o=!0},Array.from(i,function(){throw 2})}catch(a){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],c=i[r]();c.next=function(){return{done:n=!0}},i[r]=function(){return c},t(i)}catch(a){}return n}},"5eda":function(t,e,n){var r=n("5ca1"),o=n("8378"),i=n("79e5");t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},"613b":function(t,e,n){var r=n("5537")("keys"),o=n("ca5a");t.exports=function(t){return r[t]||(r[t]=o(t))}},"626a":function(t,e,n){var r=n("2d95");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},"62a0":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},"63b6":function(t,e,n){var r=n("e53d"),o=n("584a"),i=n("d864"),a=n("35e8"),c=n("07e3"),s="prototype",u=function(t,e,n){var f,l,p,d=t&u.F,v=t&u.G,h=t&u.S,y=t&u.P,m=t&u.B,b=t&u.W,g=v?o:o[e]||(o[e]={}),_=g[s],w=v?r:h?r[e]:(r[e]||{})[s];for(f in v&&(n=e),n)l=!d&&w&&void 0!==w[f],l&&c(g,f)||(p=l?w[f]:n[f],g[f]=v&&"function"!=typeof w[f]?n[f]:m&&l?i(p,r):b&&w[f]==p?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[s]=t[s],e}(p):y&&"function"==typeof p?i(Function.call,p):p,y&&((g.virtual||(g.virtual={}))[f]=p,t&u.R&&_&&!_[f]&&a(_,f,p)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},6718:function(t,e,n){var r=n("e53d"),o=n("584a"),i=n("b8e3"),a=n("ccb9"),c=n("d9f6").f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||c(e,t,{value:a.f(t)})}},6821:function(t,e,n){var r=n("626a"),o=n("be13");t.exports=function(t){return r(o(t))}},"69a8":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"6a99":function(t,e,n){var r=n("d3f4");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},"6abf":function(t,e,n){var r=n("e6f3"),o=n("1691").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},"6b4c":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},7333:function(t,e,n){"use strict";var r=n("9e1e"),o=n("0d58"),i=n("2621"),a=n("52a7"),c=n("4bf8"),s=n("626a"),u=Object.assign;t.exports=!u||n("79e5")(function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach(function(t){e[t]=t}),7!=u({},t)[n]||Object.keys(u({},e)).join("")!=r})?function(t,e){var n=c(t),u=arguments.length,f=1,l=i.f,p=a.f;while(u>f){var d,v=s(arguments[f++]),h=l?o(v).concat(l(v)):o(v),y=h.length,m=0;while(y>m)d=h[m++],r&&!p.call(v,d)||(n[d]=v[d])}return n}:u},7726:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"77f1":function(t,e,n){var r=n("4588"),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},"794b":function(t,e,n){t.exports=!n("8e60")&&!n("294c")(function(){return 7!=Object.defineProperty(n("1ec9")("div"),"a",{get:function(){return 7}}).a})},"79aa":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},"79e5":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"7a56":function(t,e,n){"use strict";var r=n("7726"),o=n("86cc"),i=n("9e1e"),a=n("2b4c")("species");t.exports=function(t){var e=r[t];i&&e&&!e[a]&&o.f(e,a,{configurable:!0,get:function(){return this}})}},"7e90":function(t,e,n){var r=n("d9f6"),o=n("e4ae"),i=n("c3a1");t.exports=n("8e60")?Object.defineProperties:function(t,e){o(t);var n,a=i(e),c=a.length,s=0;while(c>s)r.f(t,n=a[s++],e[n]);return t}},"7f20":function(t,e,n){var r=n("86cc").f,o=n("69a8"),i=n("2b4c")("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},8079:function(t,e,n){var r=n("7726"),o=n("1991").set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,c=r.Promise,s="process"==n("2d95")(a);t.exports=function(){var t,e,n,u=function(){var r,o;s&&(r=a.domain)&&r.exit();while(t){o=t.fn,t=t.next;try{o()}catch(i){throw t?n():e=void 0,i}}e=void 0,r&&r.enter()};if(s)n=function(){a.nextTick(u)};else if(!i||r.navigator&&r.navigator.standalone)if(c&&c.resolve){var f=c.resolve(void 0);n=function(){f.then(u)}}else n=function(){o.call(r,u)};else{var l=!0,p=document.createTextNode("");new i(u).observe(p,{characterData:!0}),n=function(){p.data=l=!l}}return function(r){var o={fn:r,next:void 0};e&&(e.next=o),t||(t=o,n()),e=o}}},8378:function(t,e){var n=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=n)},"84f2":function(t,e){t.exports={}},"85f2":function(t,e,n){t.exports=n("454f")},"86cc":function(t,e,n){var r=n("cb7c"),o=n("c69a"),i=n("6a99"),a=Object.defineProperty;e.f=n("9e1e")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(c){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},"8aae":function(t,e,n){n("32a6"),t.exports=n("584a").Object.keys},"8e60":function(t,e,n){t.exports=!n("294c")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},9003:function(t,e,n){var r=n("6b4c");t.exports=Array.isArray||function(t){return"Array"==r(t)}},9138:function(t,e,n){t.exports=n("35e8")},"9aa9":function(t,e){e.f=Object.getOwnPropertySymbols},"9b43":function(t,e,n){var r=n("d8e8");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},"9c6c":function(t,e,n){var r=n("2b4c")("unscopables"),o=Array.prototype;void 0==o[r]&&n("32e9")(o,r,{}),t.exports=function(t){o[r][t]=!0}},"9c80":function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(e){return{e:!0,v:e}}}},"9def":function(t,e,n){var r=n("4588"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},"9e1e":function(t,e,n){t.exports=!n("79e5")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},a159:function(t,e,n){var r=n("e4ae"),o=n("7e90"),i=n("1691"),a=n("5559")("IE_PROTO"),c=function(){},s="prototype",u=function(){var t,e=n("1ec9")("iframe"),r=i.length,o="<",a=">";e.style.display="none",n("32fc").appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(o+"script"+a+"document.F=Object"+o+"/script"+a),t.close(),u=t.F;while(r--)delete u[s][i[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(c[s]=r(t),n=new c,c[s]=null,n[a]=t):n=u(),void 0===e?n:o(n,e)}},a25f:function(t,e,n){var r=n("7726"),o=r.navigator;t.exports=o&&o.userAgent||""},a4bb:function(t,e,n){t.exports=n("8aae")},a5b8:function(t,e,n){"use strict";var r=n("d8e8");function o(t){var e,n;this.promise=new t(function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r}),this.resolve=r(e),this.reject=r(n)}t.exports.f=function(t){return new o(t)}},ac6a:function(t,e,n){for(var r=n("cadf"),o=n("0d58"),i=n("2aba"),a=n("7726"),c=n("32e9"),s=n("84f2"),u=n("2b4c"),f=u("iterator"),l=u("toStringTag"),p=s.Array,d={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=o(d),h=0;h0?o(r(t),9007199254740991):0}},b8e3:function(t,e){t.exports=!0},bcaa:function(t,e,n){var r=n("cb7c"),o=n("d3f4"),i=n("a5b8");t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t),a=n.resolve;return a(e),n.promise}},be13:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},bf0b:function(t,e,n){var r=n("355d"),o=n("aebd"),i=n("36c3"),a=n("1bc3"),c=n("07e3"),s=n("794b"),u=Object.getOwnPropertyDescriptor;e.f=n("8e60")?u:function(t,e){if(t=i(t),e=a(e,!0),s)try{return u(t,e)}catch(n){}if(c(t,e))return o(!r.f.call(t,e),t[e])}},bf90:function(t,e,n){var r=n("36c3"),o=n("bf0b").f;n("ce7e")("getOwnPropertyDescriptor",function(){return function(t,e){return o(r(t),e)}})},c366:function(t,e,n){var r=n("6821"),o=n("9def"),i=n("77f1");t.exports=function(t){return function(e,n,a){var c,s=r(e),u=o(s.length),f=i(a,u);if(t&&n!=n){while(u>f)if(c=s[f++],c!=c)return!0}else for(;u>f;f++)if((t||f in s)&&s[f]===n)return t||f||0;return!t&&-1}}},c3a1:function(t,e,n){var r=n("e6f3"),o=n("1691");t.exports=Object.keys||function(t){return r(t,o)}},c69a:function(t,e,n){t.exports=!n("9e1e")&&!n("79e5")(function(){return 7!=Object.defineProperty(n("230e")("div"),"a",{get:function(){return 7}}).a})},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},ca5a:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},cadf:function(t,e,n){"use strict";var r=n("9c6c"),o=n("d53b"),i=n("84f2"),a=n("6821");t.exports=n("01f9")(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},cb7c:function(t,e,n){var r=n("d3f4");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},ccb9:function(t,e,n){e.f=n("5168")},ce10:function(t,e,n){var r=n("69a8"),o=n("6821"),i=n("c366")(!1),a=n("613b")("IE_PROTO");t.exports=function(t,e){var n,c=o(t),s=0,u=[];for(n in c)n!=a&&r(c,n)&&u.push(n);while(e.length>s)r(c,n=e[s++])&&(~i(u,n)||u.push(n));return u}},ce7e:function(t,e,n){var r=n("63b6"),o=n("584a"),i=n("294c");t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},cebc:function(t,e,n){"use strict";var r=n("268f"),o=n.n(r),i=n("e265"),a=n.n(i),c=n("a4bb"),s=n.n(c),u=n("85f2"),f=n.n(u);function l(t,e,n){return e in t?f()(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function p(t){for(var e=1;es)r(c,n=e[s++])&&(~i(u,n)||u.push(n));return u}},ebd6:function(t,e,n){var r=n("cb7c"),o=n("d8e8"),i=n("2b4c")("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||void 0==(n=r(a)[i])?e:o(n)}},ebfd:function(t,e,n){var r=n("62a0")("meta"),o=n("f772"),i=n("07e3"),a=n("d9f6").f,c=0,s=Object.isExtensible||function(){return!0},u=!n("294c")(function(){return s(Object.preventExtensions({}))}),f=function(t){a(t,r,{value:{i:"O"+ ++c,w:{}}})},l=function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!s(t))return"F";if(!e)return"E";f(t)}return t[r].i},p=function(t,e){if(!i(t,r)){if(!s(t))return!0;if(!e)return!1;f(t)}return t[r].w},d=function(t){return u&&v.NEED&&s(t)&&!i(t,r)&&f(t),t},v=t.exports={KEY:r,NEED:!1,fastKey:l,getWeak:p,onFreeze:d}},ed33:function(t,e,n){n("014b"),t.exports=n("584a").Object.getOwnPropertySymbols},f605:function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},f751:function(t,e,n){var r=n("5ca1");r(r.S+r.F,"Object",{assign:n("7333")})},f772:function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},fa5b:function(t,e,n){t.exports=n("5537")("native-function-to-string",Function.toString)},fab2:function(t,e,n){var r=n("7726").document;t.exports=r&&r.documentElement},fde4:function(t,e,n){n("bf90");var r=n("584a").Object;t.exports=function(t,e){return r.getOwnPropertyDescriptor(t,e)}}}]); 8 | //# sourceMappingURL=chunk-vendors.ff04be39.js.map --------------------------------------------------------------------------------