Showing preview only (213K chars total). Download the full file or copy to clipboard to get everything.
Repository: Liwengbin/vue-task-node
Branch: master
Commit: 5308561573f1
Files: 85
Total size: 190.5 KB
Directory structure:
gitextract_ct1001j5/
├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .postcssrc.js
├── README.md
├── build/
│ ├── build.js
│ ├── check-versions.js
│ ├── dist/
│ │ ├── css/
│ │ │ └── vnode.css
│ │ └── vue-task-node.js
│ ├── utils.js
│ ├── vue-loader.conf.js
│ ├── webpack.base.conf.js
│ ├── webpack.dev.conf.js
│ └── webpack.prod.conf.js
├── config/
│ ├── dev.env.js
│ ├── index.js
│ ├── prod.env.js
│ └── test.env.js
├── index.html
├── package.json
├── src/
│ ├── App.vue
│ ├── lib/
│ │ ├── components/
│ │ │ ├── depend/
│ │ │ │ ├── ModelTree.vue
│ │ │ │ ├── TreeNode.vue
│ │ │ │ └── index.js
│ │ │ ├── node/
│ │ │ │ ├── README.md
│ │ │ │ ├── common/
│ │ │ │ │ ├── common.vue
│ │ │ │ │ ├── incommonls.vue
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── outcommonls.vue
│ │ │ │ ├── index.js
│ │ │ │ ├── initial/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── initial.vue
│ │ │ │ └── node.vue
│ │ │ ├── nodemodel/
│ │ │ │ ├── index.js
│ │ │ │ └── nodemodel.vue
│ │ │ ├── path/
│ │ │ │ ├── README.md
│ │ │ │ ├── curvepath.vue
│ │ │ │ ├── index.js
│ │ │ │ └── tline.vue
│ │ │ ├── port/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.js
│ │ │ │ ├── inport.vue
│ │ │ │ └── outport.vue
│ │ │ └── workarea/
│ │ │ ├── index.js
│ │ │ └── workarea.vue
│ │ ├── index.js
│ │ ├── mixins/
│ │ │ ├── README.md
│ │ │ ├── node.js
│ │ │ └── tool.js
│ │ ├── store/
│ │ │ └── index.js
│ │ ├── styles/
│ │ │ ├── common/
│ │ │ │ ├── base.less
│ │ │ │ ├── iconfont/
│ │ │ │ │ ├── ionicons-font.less
│ │ │ │ │ ├── ionicons-icons.less
│ │ │ │ │ ├── ionicons-variables.less
│ │ │ │ │ └── ionicons.less
│ │ │ │ └── index.less
│ │ │ ├── components/
│ │ │ │ ├── index.less
│ │ │ │ ├── modeltree.less
│ │ │ │ ├── node/
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── common.less
│ │ │ │ │ │ ├── incommonls.less
│ │ │ │ │ │ ├── index.less
│ │ │ │ │ │ └── outcommonls.less
│ │ │ │ │ ├── initial/
│ │ │ │ │ │ └── initial.less
│ │ │ │ │ └── node.less
│ │ │ │ ├── nodemodel.less
│ │ │ │ ├── port.less
│ │ │ │ ├── tline.less
│ │ │ │ └── workarea.less
│ │ │ ├── custom.less
│ │ │ └── index.less
│ │ └── utils/
│ │ ├── firefoxCompatible.js
│ │ ├── line.js
│ │ └── tools.js
│ └── main.js
├── static/
│ └── .gitkeep
└── test/
├── e2e/
│ ├── custom-assertions/
│ │ └── elementCount.js
│ ├── nightwatch.conf.js
│ ├── runner.js
│ └── specs/
│ └── test.js
└── unit/
├── .eslintrc
├── jest.conf.js
├── setup.js
└── specs/
└── HelloWorld.spec.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .babelrc
================================================
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": ["transform-vue-jsx", "transform-runtime"],
"env": {
"test": {
"presets": ["env", "stage-2"],
"plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"]
}
}
}
================================================
FILE: .editorconfig
================================================
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
================================================
FILE: .eslintignore
================================================
/build/
/config/
/dist/
/*.js
/test/unit/coverage/
================================================
FILE: .eslintrc.js
================================================
// https://eslint.org/docs/user-guide/configuring
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint'
},
env: {
browser: true,
},
extends: [
// https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
// consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
'plugin:vue/essential',
// https://github.com/standard/standard/blob/master/docs/RULES-en.md
'standard'
],
// required to lint *.vue files
plugins: [
'vue'
],
// add your custom rules here
rules: {
// allow async-await
'generator-star-spacing': 'off',
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
}
}
================================================
FILE: .gitignore
================================================
.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
/test/unit/coverage/
/test/e2e/reports/
selenium-debug.log
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
================================================
FILE: .postcssrc.js
================================================
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
"plugins": {
"postcss-import": {},
"postcss-url": {},
// to edit target browsers: use "browserslist" field in package.json
"autoprefixer": {}
}
}
================================================
FILE: README.md
================================================
# vue-task-node
>vue-task-node 是一个基于Vue的任务节点图绘制插件(vue-task-node is a Vue based task node mapping plug-in)
>在线Demo <br>
[https://codesandbox.io/embed/5vvpyj792x?fontsize=14](https://codesandbox.io/embed/5vvpyj792x?fontsize=14)
>如有问题欢迎邮箱✉:liwenbingmsc@qq.com
## 一、安装
```js
npm install vue-task-node -S
```
## 二、引入
```js
import Vue from 'vue'
import App from './App'
import Vuex from 'vuex'
import {TaskNode, TaskNodeStore} from 'vue-task-node'
import 'vue-task-node/dist/css/vnode.css'
Vue.config.productionTip = false
Vue.use(TaskNode)
Vue.use(Vuex)
const store = new Vuex.Store({
modules: {
TaskNodeStore
}
})
new Vue({
el: '#app',
store,
components: { App },
template: '<App/>'
})
```
## 三、教程
起源:mml机器学习平台http://vidanao.com/ml/#/
> http://vidanao.com/
## 四、版本
版本 | 说明 | 更新时间 |是否支持拖拽 | 是否支持节点连线
---|---|---|---|---
1.0.0 | 开端,根据数据绘制任务节点 | 2019年1月16日 | 否 | 否
1.0.1 | 修改代码规范Eslin | 2019年1月17日 | 否 | 否
1.0.2 | 调试入口文件 | 2019年1月17日 | 否 | 否
1.0.3 | npm下载包错误修改 | 2019年1月17日 | 否 | 否
1.0.4 | 添加鼠标右击后返回右击的node数据 | 2019年1月18日 | 否 | 否
1.0.x | 优化配置文件 | 2019年1月x日 | 否 | 否
1.1.0 | 代码结构调整,组件重新封装,样式使用less写 | 2019年2月28日 | 是 | 否
1.1.1 | 解决dist文件无法上传问题 | 2019年2月28日 | 是 | 否
1.1.2 | 解决dist文件无法上传问题 | 2019年2月28日 | 是 | 否
1.1.3 | 解决index.js找不到组件问题 | 2019年2月28日 | 是 | 否
1.1.4 | 解决index.js找不到组件问题 | 2019年2月28日 | 是 | 否
1.1.5 | 调整工作区样式问题 | 2019年3月1日 | 是 | 否
1.1.6 | 调整节点的事件传递 | 2019年3月1日 | 是 | 否
1.1.x | 优化样式,及配置文件 | 2019年3月x日 | 是 | 否
1.2.0 | 新增节点连线 | 2019年5月12日 | 是 | 是
1.2.1 | 新增路径鼠标事件 | 2019年5月23日 | 是 | 是
1.2.2 | 修改混入方式 | 2019年5月23日 | 是 | 是
1.3.0 | 工作区外拖拽节点到工作区内 | 2019年6月23日 | 是 | 是
1.3.3 | 添加全局参数设置 | 2019年6月28日 | 是 | 是
1.3.4 | 工作区缩放 | 2019年7月8日 | 是 | 是
1.3.5 | 新增ModelTree组件 | 2019年7月19日 | 是 | 是
1.3.6 | 调整1.3.5样式 | 2019年7月19日 | 是 | 是
1.3.7 | 节点拖拽出工作区问题,以及拖拽偏离问题 | 2019年7月23日 | 是 | 是
1.3.8 | 修复1.3.7bug | 2019年7月23日 | 是 | 是
1.3.9 | 修复计算工作区高宽bug | 2019年7月24日 | 是 | 是
1.4.0 | 修复ModeTree中的bug | 2019年7月24日 | 是 | 是
## 五、开发环境
系统:`Windows 10`<br>
屏幕分辨率:`1920*1080`<br>
浏览器:<br>
①谷歌极速浏览器 版本 `3.0.12.8` 浏览器缩放比例 `100%`<br>
②谷歌浏览器 版本 `75.0.3770.142`(正式版本) (64 位) 浏览器缩放比例 `100%`<br>
③`Microsoft Edge` 版本 `42.17134.1.0` 浏览器缩放比例 `100%`<br>
## 六、出现路径错位问题分析
1. 目前兼容性还待解决,请使用谷歌浏览器浏览
2. 浏览器的缩放比例调整为100%,比例大或小都会是路径错位
3. `1.3.7`版本之前,节点拖拽连线,会被父级相对布局影响
4. 高分辨率问题,目前没有验证,我的1920*1080正常
================================================
FILE: build/build.js
================================================
'use strict'
require('./check-versions')()
process.env.NODE_ENV = 'production'
const ora = require('ora')
const rm = require('rimraf')
const path = require('path')
const chalk = require('chalk')
const webpack = require('webpack')
const config = require('../config')
const webpackConfig = require('./webpack.prod.conf')
const spinner = ora('building for production...')
spinner.start()
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, (err, stats) => {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
chunks: false,
chunkModules: false
}) + '\n\n')
if (stats.hasErrors()) {
console.log(chalk.red(' Build failed with errors.\n'))
process.exit(1)
}
console.log(chalk.cyan(' Build complete.\n'))
console.log(chalk.yellow(
' Tip: built files are meant to be served over an HTTP server.\n' +
' Opening index.html over file:// won\'t work.\n'
))
})
})
================================================
FILE: build/check-versions.js
================================================
'use strict'
const chalk = require('chalk')
const semver = require('semver')
const packageConfig = require('../package.json')
const shell = require('shelljs')
function exec (cmd) {
return require('child_process').execSync(cmd).toString().trim()
}
const versionRequirements = [
{
name: 'node',
currentVersion: semver.clean(process.version),
versionRequirement: packageConfig.engines.node
}
]
if (shell.which('npm')) {
versionRequirements.push({
name: 'npm',
currentVersion: exec('npm --version'),
versionRequirement: packageConfig.engines.npm
})
}
module.exports = function () {
const warnings = []
for (let i = 0; i < versionRequirements.length; i++) {
const mod = versionRequirements[i]
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
warnings.push(mod.name + ': ' +
chalk.red(mod.currentVersion) + ' should be ' +
chalk.green(mod.versionRequirement)
)
}
}
if (warnings.length) {
console.log('')
console.log(chalk.yellow('To use this template, you must update following to modules:'))
console.log()
for (let i = 0; i < warnings.length; i++) {
const warning = warnings[i]
console.log(' ' + warning)
}
console.log()
process.exit(1)
}
}
================================================
FILE: build/dist/css/vnode.css
================================================
*{-webkit-tap-highlight-color:rgba(0,0,0,0)}*,:after,:before{box-sizing:border-box}body{font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,\\5FAE\8F6F\96C5\9ED1,Arial,sans-serif;font-size:12px;line-height:1.5;color:#515a6e;background-color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article,aside,blockquote,body,button,dd,details,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,input,legend,li,menu,nav,ol,p,section,td,textarea,th,ul{margin:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}input::-ms-clear,input::-ms-reveal{display:none}a{color:#2d8cf0;background:transparent;text-decoration:none;outline:none;cursor:pointer;transition:color .2s ease}a:hover{color:#57a3f3}a:active{color:#2b85e4}a:active,a:hover{outline:0;text-decoration:none}a[disabled]{color:#ccc;cursor:not-allowed;pointer-events:none}code,kbd,pre,samp{font-family:Consolas,Menlo,Courier,monospace}[class*=-icon-ok],[class*=-icon-run]{color:#2ecc71}[class*=-icon-wait]{color:#289de9}[class*=-icon-error]{color:#f15e5e}@font-face{font-family:Ionicons;src:url(/dist/fonts/ionicons.2ea87cd.ttf) format("truetype"),url(/dist/fonts/ionicons.e4536d4.woff) format("woff"),url(/dist/img/ionicons.9e11f71.svg#Ionicons) format("svg");font-weight:400;font-style:normal}[class*=" task-icon"],[class^=task-icon]{display:inline-block;font-family:Ionicons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:middle}.task-icon-58:before{content:"\E601"}.task-icon-9:before{content:"\E643"}.task-icon-57:before{content:"\E61F"}.task-icon-56:before{content:"\E671"}.task-icon-55:before{content:"\E745"}.task-icon-54:before{content:"\E661"}.task-icon-53:before{content:"\E6C3"}.task-icon-52:before{content:"\E660"}.task-icon-8:before{content:"\E670"}.task-icon-7:before{content:"\E693"}.task-icon-6:before{content:"\E646"}.task-icon-51:before{content:"\E6C4"}.task-icon-run:before{content:"\E614"}.task-icon-error:before{content:"\E67A"}.task-icon-48:before{content:"\E605"}.task-icon-47:before{content:"\E6C8"}.task-icon-46:before{content:"\E607"}.task-icon-45:before{content:"\E61A"}.task-icon-ok:before{content:"\E844"}.task-icon-wait:before{content:"\E6B5"}.task-icon-42:before{content:"\E664"}.task-icon-41:before{content:"\E6AB"}.task-icon-40:before{content:"\E6E5"}.task-icon-39:before{content:"\E600"}.task-icon-38:before{content:"\E61B"}.task-icon-37:before{content:"\E680"}.task-icon-36:before{content:"\E65F"}.task-icon-35:before{content:"\E642"}.task-icon-34:before{content:"\E75C"}.task-icon-30:before{content:"\E656"}.task-icon-5:before{content:"\E60D"}.task-icon-33:before{content:"\E60A"}.task-icon-32:before{content:"\E633"}.task-icon-31:before{content:"\E6C6"}.task-icon-29:before{content:"\EB64"}.task-icon-28:before{content:"\EB65"}.task-icon-27:before{content:"\EB66"}.task-icon-26:before{content:"\EB6A"}.task-icon-25:before{content:"\EB6B"}.task-icon-24:before{content:"\EBB8"}.task-icon-23:before{content:"\EBDA"}.task-icon-4:before{content:"\E602"}.task-icon-22:before{content:"\EC08"}.task-icon-21:before{content:"\EC13"}.task-icon-20:before{content:"\EC14"}.task-icon-19:before{content:"\EC20"}.task-icon-18:before{content:"\EC22"}.task-icon-17:before{content:"\EC23"}.task-icon-16:before{content:"\EC2A"}.task-icon-3:before{content:"\E603"}.task-icon-15:before{content:"\EC36"}.task-icon-14:before{content:"\EC37"}.task-icon-13:before{content:"\EC5B"}.task-icon-12:before{content:"\EC5C"}.task-icon-11:before{content:"\EC5D"}.task-icon-10:before{content:"\EC6A"}.task-icon-2:before{content:"\E61C"}.task-icon-1:before{content:"\E604"}.task-node body,.task-node foreignObject{background-color:transparent;overflow:visible}.task-node:hover{cursor:grab}.task-node-selected,.task-node:hover{background-color:rgba(227,244,255,.9)}.task-common-node{width:180px;height:30px;background-color:hsla(0,0%,100%,.9);border:1px solid #289de9;border-radius:15px;font-size:12px;transition:background-color .2s}.task-common-node-icon{float:left;color:#fff;font-size:16px;background-color:#289de9;width:26px;height:26px;margin:1px;border-radius:100%}.task-common-node-icon:before{float:left;margin:4px}.task-common-node-name{float:left;margin-left:2px;width:120px;height:28px;line-height:28px;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-common-node-status{width:26px;height:26px;margin:1px;border-radius:100%;float:right;font-size:18px}.task-common-node-status:before{float:left;margin:4px}.task-common-node:hover{background-color:rgba(227,244,255,.9)}.task-in-common-ls{display:-ms-flexbox;display:flex;clear:both;margin-top:-34px;float:left;width:180px}.task-in-common-ls-wrap{height:1px;float:left;-ms-flex:1;flex:1}.task-out-common-ls{display:-ms-flexbox;display:flex;margin-top:-5px;clear:both;float:left;width:180px}.task-out-common-ls-wrap{height:1px;float:left;-ms-flex:1;flex:1}.task-initial-node{width:30px;height:30px;border:1px solid #ccc;border-radius:50%}.task-initial-node-in-wrap{clear:both;margin-top:-34px;float:left;width:30px}.task-initial-node-out-wrap{clear:both;margin-top:-5px;float:left;width:30px}.task-initial-node-name{float:left;width:30px;height:28px;line-height:28px;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-initial-node-icon{float:left;color:#000;font-size:16px;width:26px;height:26px;margin:1px;border-radius:100%}.task-initial-node-icon:before{float:left;margin:4px}.task-initial-node:hover{background-color:rgba(227,244,255,.9)}.task-work-area{background-color:#fff;position:relative;overflow:auto}.task-work-area::-webkit-scrollbar{width:6px;height:6px}.task-work-area::-webkit-scrollbar-thumb{background-color:#aeaeae;min-height:50px;min-width:50px;border-radius:10px;transition:background-color .2s}.task-work-area::-webkit-scrollbar-track-piece{background-color:#eee}.task-port{width:10px;height:10px;float:right;margin-right:-5px;border:1px solid gray;border-radius:50%;background-color:#fff}.task-port-magnet{float:left;width:20px;height:20px;margin-top:-6px;margin-left:-6px;background-color:transparent;border-radius:50%}.task-port-in{cursor:default}.is-connected{width:0;height:0;border-style:solid;border-width:5px 4px 0;border-color:gray transparent transparent;background-color:transparent;border-radius:0;margin-top:6px}.task-port-out{cursor:crosshair}.task-tline{cursor:default}.task-tline-con{fill:none;stroke:hsla(0,0%,100%,0);stroke-width:15px}.task-tline-con-wrap{fill:none;stroke:gray;stroke-width:1px}.task-tline-dotted{stroke:rgba(57,202,116,.8);stroke-width:2px;stroke-dasharray:5;animation:ant-line 30s infinite linear}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;padding:50px;background-color:#ccc}
/*# sourceMappingURL=vnode.css.map */
================================================
FILE: build/dist/vue-task-node.js
================================================
webpackJsonpvue_task_node([0],{"+E39":function(e,t,n){e.exports=!n("S82l")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},"+ZMJ":function(e,t,n){var r=n("lOnJ");e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},"3Eo+":function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},"52gC":function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},"7+uW":function(e,t,n){"use strict";(function(e){
/*!
* Vue.js v2.6.7
* (c) 2014-2019 Evan You
* Released under the MIT License.
*/
var n=Object.freeze({});function r(e){return void 0===e||null===e}function i(e){return void 0!==e&&null!==e}function o(e){return!0===e}function a(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function s(e){return null!==e&&"object"==typeof e}var c=Object.prototype.toString;function u(e){return"[object Object]"===c.call(e)}function l(e){return"[object RegExp]"===c.call(e)}function f(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function p(e){return i(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function d(e){return null==e?"":Array.isArray(e)||u(e)&&e.toString===c?JSON.stringify(e,null,2):String(e)}function v(e){var t=parseFloat(e);return isNaN(t)?e:t}function h(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return t?function(e){return n[e.toLowerCase()]}:function(e){return n[e]}}var m=h("slot,component",!0),y=h("key,ref,slot,slot-scope,is");function g(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(n,1)}}var _=Object.prototype.hasOwnProperty;function b(e,t){return _.call(e,t)}function $(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var x=/-(\w)/g,w=$(function(e){return e.replace(x,function(e,t){return t?t.toUpperCase():""})}),C=$(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),k=/\B([A-Z])/g,A=$(function(e){return e.replace(k,"-$1").toLowerCase()});var O=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function S(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function T(e,t){for(var n in t)e[n]=t[n];return e}function j(e){for(var t={},n=0;n<e.length;n++)e[n]&&T(t,e[n]);return t}function E(e,t,n){}var M=function(e,t,n){return!1},N=function(e){return e};function D(e,t){if(e===t)return!0;var n=s(e),r=s(t);if(!n||!r)return!n&&!r&&String(e)===String(t);try{var i=Array.isArray(e),o=Array.isArray(t);if(i&&o)return e.length===t.length&&e.every(function(e,n){return D(e,t[n])});if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(i||o)return!1;var a=Object.keys(e),c=Object.keys(t);return a.length===c.length&&a.every(function(n){return D(e[n],t[n])})}catch(e){return!1}}function I(e,t){for(var n=0;n<e.length;n++)if(D(e[n],t))return n;return-1}function L(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments))}}var P="data-server-rendered",F=["component","directive","filter"],R=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch"],B={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:M,isReservedAttr:M,isUnknownElement:M,getTagNamespace:E,parsePlatformTagName:N,mustUseProp:M,async:!0,_lifecycleHooks:R},U="a-zA-Z·À-ÖØ-öø-ͽͿ--‿-⁀⁰-Ⰰ-、-豈-﷏ﷰ-�";function H(e){var t=(e+"").charCodeAt(0);return 36===t||95===t}function z(e,t,n,r){Object.defineProperty(e,t,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var V=new RegExp("[^"+U+".$_\\d]");var J,K="__proto__"in{},q="undefined"!=typeof window,W="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,G=W&&WXEnvironment.platform.toLowerCase(),Z=q&&window.navigator.userAgent.toLowerCase(),X=Z&&/msie|trident/.test(Z),Q=Z&&Z.indexOf("msie 9.0")>0,Y=Z&&Z.indexOf("edge/")>0,ee=(Z&&Z.indexOf("android"),Z&&/iphone|ipad|ipod|ios/.test(Z)||"ios"===G),te=(Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z),Z&&Z.match(/firefox\/(\d+)/)),ne={}.watch,re=!1;if(q)try{var ie={};Object.defineProperty(ie,"passive",{get:function(){re=!0}}),window.addEventListener("test-passive",null,ie)}catch(e){}var oe=function(){return void 0===J&&(J=!q&&!W&&void 0!==e&&(e.process&&"server"===e.process.env.VUE_ENV)),J},ae=q&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function se(e){return"function"==typeof e&&/native code/.test(e.toString())}var ce,ue="undefined"!=typeof Symbol&&se(Symbol)&&"undefined"!=typeof Reflect&&se(Reflect.ownKeys);ce="undefined"!=typeof Set&&se(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var le=E,fe=0,pe=function(){this.id=fe++,this.subs=[]};pe.prototype.addSub=function(e){this.subs.push(e)},pe.prototype.removeSub=function(e){g(this.subs,e)},pe.prototype.depend=function(){pe.target&&pe.target.addDep(this)},pe.prototype.notify=function(){var e=this.subs.slice();for(var t=0,n=e.length;t<n;t++)e[t].update()},pe.target=null;var de=[];function ve(e){de.push(e),pe.target=e}function he(){de.pop(),pe.target=de[de.length-1]}var me=function(e,t,n,r,i,o,a,s){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=i,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},ye={child:{configurable:!0}};ye.child.get=function(){return this.componentInstance},Object.defineProperties(me.prototype,ye);var ge=function(e){void 0===e&&(e="");var t=new me;return t.text=e,t.isComment=!0,t};function _e(e){return new me(void 0,void 0,void 0,String(e))}function be(e){var t=new me(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}var $e=Array.prototype,xe=Object.create($e);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(e){var t=$e[e];z(xe,e,function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];var i,o=t.apply(this,n),a=this.__ob__;switch(e){case"push":case"unshift":i=n;break;case"splice":i=n.slice(2)}return i&&a.observeArray(i),a.dep.notify(),o})});var we=Object.getOwnPropertyNames(xe),Ce=!0;function ke(e){Ce=e}var Ae=function(e){var t;this.value=e,this.dep=new pe,this.vmCount=0,z(e,"__ob__",this),Array.isArray(e)?(K?(t=xe,e.__proto__=t):function(e,t,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];z(e,o,t[o])}}(e,xe,we),this.observeArray(e)):this.walk(e)};function Oe(e,t){var n;if(s(e)&&!(e instanceof me))return b(e,"__ob__")&&e.__ob__ instanceof Ae?n=e.__ob__:Ce&&!oe()&&(Array.isArray(e)||u(e))&&Object.isExtensible(e)&&!e._isVue&&(n=new Ae(e)),t&&n&&n.vmCount++,n}function Se(e,t,n,r,i){var o=new pe,a=Object.getOwnPropertyDescriptor(e,t);if(!a||!1!==a.configurable){var s=a&&a.get,c=a&&a.set;s&&!c||2!==arguments.length||(n=e[t]);var u=!i&&Oe(n);Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){var t=s?s.call(e):n;return pe.target&&(o.depend(),u&&(u.dep.depend(),Array.isArray(t)&&function e(t){for(var n=void 0,r=0,i=t.length;r<i;r++)(n=t[r])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&e(n)}(t))),t},set:function(t){var r=s?s.call(e):n;t===r||t!=t&&r!=r||s&&!c||(c?c.call(e,t):n=t,u=!i&&Oe(t),o.notify())}})}}function Te(e,t,n){if(Array.isArray(e)&&f(t))return e.length=Math.max(e.length,t),e.splice(t,1,n),n;if(t in e&&!(t in Object.prototype))return e[t]=n,n;var r=e.__ob__;return e._isVue||r&&r.vmCount?n:r?(Se(r.value,t,n),r.dep.notify(),n):(e[t]=n,n)}function je(e,t){if(Array.isArray(e)&&f(t))e.splice(t,1);else{var n=e.__ob__;e._isVue||n&&n.vmCount||b(e,t)&&(delete e[t],n&&n.dep.notify())}}Ae.prototype.walk=function(e){for(var t=Object.keys(e),n=0;n<t.length;n++)Se(e,t[n])},Ae.prototype.observeArray=function(e){for(var t=0,n=e.length;t<n;t++)Oe(e[t])};var Ee=B.optionMergeStrategies;function Me(e,t){if(!t)return e;for(var n,r,i,o=ue?Reflect.ownKeys(t):Object.keys(t),a=0;a<o.length;a++)"__ob__"!==(n=o[a])&&(r=e[n],i=t[n],b(e,n)?r!==i&&u(r)&&u(i)&&Me(r,i):Te(e,n,i));return e}function Ne(e,t,n){return n?function(){var r="function"==typeof t?t.call(n,n):t,i="function"==typeof e?e.call(n,n):e;return r?Me(r,i):i}:t?e?function(){return Me("function"==typeof t?t.call(this,this):t,"function"==typeof e?e.call(this,this):e)}:t:e}function De(e,t){var n=t?e?e.concat(t):Array.isArray(t)?t:[t]:e;return n?function(e){for(var t=[],n=0;n<e.length;n++)-1===t.indexOf(e[n])&&t.push(e[n]);return t}(n):n}function Ie(e,t,n,r){var i=Object.create(e||null);return t?T(i,t):i}Ee.data=function(e,t,n){return n?Ne(e,t,n):t&&"function"!=typeof t?e:Ne(e,t)},R.forEach(function(e){Ee[e]=De}),F.forEach(function(e){Ee[e+"s"]=Ie}),Ee.watch=function(e,t,n,r){if(e===ne&&(e=void 0),t===ne&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;var i={};for(var o in T(i,e),t){var a=i[o],s=t[o];a&&!Array.isArray(a)&&(a=[a]),i[o]=a?a.concat(s):Array.isArray(s)?s:[s]}return i},Ee.props=Ee.methods=Ee.inject=Ee.computed=function(e,t,n,r){if(!e)return t;var i=Object.create(null);return T(i,e),t&&T(i,t),i},Ee.provide=Ne;var Le=function(e,t){return void 0===t?e:t};function Pe(e,t,n){if("function"==typeof t&&(t=t.options),function(e,t){var n=e.props;if(n){var r,i,o={};if(Array.isArray(n))for(r=n.length;r--;)"string"==typeof(i=n[r])&&(o[w(i)]={type:null});else if(u(n))for(var a in n)i=n[a],o[w(a)]=u(i)?i:{type:i};e.props=o}}(t),function(e,t){var n=e.inject;if(n){var r=e.inject={};if(Array.isArray(n))for(var i=0;i<n.length;i++)r[n[i]]={from:n[i]};else if(u(n))for(var o in n){var a=n[o];r[o]=u(a)?T({from:o},a):{from:a}}}}(t),function(e){var t=e.directives;if(t)for(var n in t){var r=t[n];"function"==typeof r&&(t[n]={bind:r,update:r})}}(t),!t._base&&(t.extends&&(e=Pe(e,t.extends,n)),t.mixins))for(var r=0,i=t.mixins.length;r<i;r++)e=Pe(e,t.mixins[r],n);var o,a={};for(o in e)s(o);for(o in t)b(e,o)||s(o);function s(r){var i=Ee[r]||Le;a[r]=i(e[r],t[r],n,r)}return a}function Fe(e,t,n,r){if("string"==typeof n){var i=e[t];if(b(i,n))return i[n];var o=w(n);if(b(i,o))return i[o];var a=C(o);return b(i,a)?i[a]:i[n]||i[o]||i[a]}}function Re(e,t,n,r){var i=t[e],o=!b(n,e),a=n[e],s=He(Boolean,i.type);if(s>-1)if(o&&!b(i,"default"))a=!1;else if(""===a||a===A(e)){var c=He(String,i.type);(c<0||s<c)&&(a=!0)}if(void 0===a){a=function(e,t,n){if(!b(t,"default"))return;var r=t.default;0;if(e&&e.$options.propsData&&void 0===e.$options.propsData[n]&&void 0!==e._props[n])return e._props[n];return"function"==typeof r&&"Function"!==Be(t.type)?r.call(e):r}(r,i,e);var u=Ce;ke(!0),Oe(a),ke(u)}return a}function Be(e){var t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:""}function Ue(e,t){return Be(e)===Be(t)}function He(e,t){if(!Array.isArray(t))return Ue(t,e)?0:-1;for(var n=0,r=t.length;n<r;n++)if(Ue(t[n],e))return n;return-1}function ze(e,t,n){ve();try{if(t)for(var r=t;r=r.$parent;){var i=r.$options.errorCaptured;if(i)for(var o=0;o<i.length;o++)try{if(!1===i[o].call(r,e,t,n))return}catch(e){Je(e,r,"errorCaptured hook")}}Je(e,t,n)}finally{he()}}function Ve(e,t,n,r,i){var o;try{(o=n?e.apply(t,n):e.call(t))&&!o._isVue&&p(o)&&(o=o.catch(function(e){return ze(e,r,i+" (Promise/async)")}))}catch(e){ze(e,r,i)}return o}function Je(e,t,n){if(B.errorHandler)try{return B.errorHandler.call(null,e,t,n)}catch(t){t!==e&&Ke(t,null,"config.errorHandler")}Ke(e,t,n)}function Ke(e,t,n){if(!q&&!W||"undefined"==typeof console)throw e;console.error(e)}var qe,We=!1,Ge=[],Ze=!1;function Xe(){Ze=!1;var e=Ge.slice(0);Ge.length=0;for(var t=0;t<e.length;t++)e[t]()}if("undefined"!=typeof Promise&&se(Promise)){var Qe=Promise.resolve();qe=function(){Qe.then(Xe),ee&&setTimeout(E)},We=!0}else if(X||"undefined"==typeof MutationObserver||!se(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())qe="undefined"!=typeof setImmediate&&se(setImmediate)?function(){setImmediate(Xe)}:function(){setTimeout(Xe,0)};else{var Ye=1,et=new MutationObserver(Xe),tt=document.createTextNode(String(Ye));et.observe(tt,{characterData:!0}),qe=function(){Ye=(Ye+1)%2,tt.data=String(Ye)},We=!0}function nt(e,t){var n;if(Ge.push(function(){if(e)try{e.call(t)}catch(e){ze(e,t,"nextTick")}else n&&n(t)}),Ze||(Ze=!0,qe()),!e&&"undefined"!=typeof Promise)return new Promise(function(e){n=e})}var rt=new ce;function it(e){!function e(t,n){var r,i;var o=Array.isArray(t);if(!o&&!s(t)||Object.isFrozen(t)||t instanceof me)return;if(t.__ob__){var a=t.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(o)for(r=t.length;r--;)e(t[r],n);else for(i=Object.keys(t),r=i.length;r--;)e(t[i[r]],n)}(e,rt),rt.clear()}var ot=$(function(e){var t="&"===e.charAt(0),n="~"===(e=t?e.slice(1):e).charAt(0),r="!"===(e=n?e.slice(1):e).charAt(0);return{name:e=r?e.slice(1):e,once:n,capture:r,passive:t}});function at(e,t){function n(){var e=arguments,r=n.fns;if(!Array.isArray(r))return Ve(r,null,arguments,t,"v-on handler");for(var i=r.slice(),o=0;o<i.length;o++)Ve(i[o],null,e,t,"v-on handler")}return n.fns=e,n}function st(e,t,n,i,a,s){var c,u,l,f;for(c in e)u=e[c],l=t[c],f=ot(c),r(u)||(r(l)?(r(u.fns)&&(u=e[c]=at(u,s)),o(f.once)&&(u=e[c]=a(f.name,u,f.capture)),n(f.name,u,f.capture,f.passive,f.params)):u!==l&&(l.fns=u,e[c]=l));for(c in t)r(e[c])&&i((f=ot(c)).name,t[c],f.capture)}function ct(e,t,n){var a;e instanceof me&&(e=e.data.hook||(e.data.hook={}));var s=e[t];function c(){n.apply(this,arguments),g(a.fns,c)}r(s)?a=at([c]):i(s.fns)&&o(s.merged)?(a=s).fns.push(c):a=at([s,c]),a.merged=!0,e[t]=a}function ut(e,t,n,r,o){if(i(t)){if(b(t,n))return e[n]=t[n],o||delete t[n],!0;if(b(t,r))return e[n]=t[r],o||delete t[r],!0}return!1}function lt(e){return a(e)?[_e(e)]:Array.isArray(e)?function e(t,n){var s=[];var c,u,l,f;for(c=0;c<t.length;c++)r(u=t[c])||"boolean"==typeof u||(l=s.length-1,f=s[l],Array.isArray(u)?u.length>0&&(ft((u=e(u,(n||"")+"_"+c))[0])&&ft(f)&&(s[l]=_e(f.text+u[0].text),u.shift()),s.push.apply(s,u)):a(u)?ft(f)?s[l]=_e(f.text+u):""!==u&&s.push(_e(u)):ft(u)&&ft(f)?s[l]=_e(f.text+u.text):(o(t._isVList)&&i(u.tag)&&r(u.key)&&i(n)&&(u.key="__vlist"+n+"_"+c+"__"),s.push(u)));return s}(e):void 0}function ft(e){return i(e)&&i(e.text)&&!1===e.isComment}function pt(e,t){if(e){for(var n=Object.create(null),r=ue?Reflect.ownKeys(e):Object.keys(e),i=0;i<r.length;i++){var o=r[i];if("__ob__"!==o){for(var a=e[o].from,s=t;s;){if(s._provided&&b(s._provided,a)){n[o]=s._provided[a];break}s=s.$parent}if(!s)if("default"in e[o]){var c=e[o].default;n[o]="function"==typeof c?c.call(t):c}else 0}}return n}}function dt(e,t){if(!e||!e.length)return{};for(var n={},r=0,i=e.length;r<i;r++){var o=e[r],a=o.data;if(a&&a.attrs&&a.attrs.slot&&delete a.attrs.slot,o.context!==t&&o.fnContext!==t||!a||null==a.slot)(n.default||(n.default=[])).push(o);else{var s=a.slot,c=n[s]||(n[s]=[]);"template"===o.tag?c.push.apply(c,o.children||[]):c.push(o)}}for(var u in n)n[u].every(vt)&&delete n[u];return n}function vt(e){return e.isComment&&!e.asyncFactory||" "===e.text}function ht(e,t,r){var i,o=!e||!!e.$stable,a=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(o&&r&&r!==n&&a===r.$key&&0===Object.keys(t).length)return r;for(var s in i={},e)e[s]&&"$"!==s[0]&&(i[s]=mt(t,s,e[s]))}else i={};for(var c in t)c in i||(i[c]=yt(t,c));return e&&Object.isExtensible(e)&&(e._normalized=i),z(i,"$stable",o),z(i,"$key",a),i}function mt(e,t,n){var r=function(){var e=arguments.length?n.apply(null,arguments):n({});return(e=e&&"object"==typeof e&&!Array.isArray(e)?[e]:lt(e))&&0===e.length?void 0:e};return n.proxy&&Object.defineProperty(e,t,{get:r,enumerable:!0,configurable:!0}),r}function yt(e,t){return function(){return e[t]}}function gt(e,t){var n,r,o,a,c;if(Array.isArray(e)||"string"==typeof e)for(n=new Array(e.length),r=0,o=e.length;r<o;r++)n[r]=t(e[r],r);else if("number"==typeof e)for(n=new Array(e),r=0;r<e;r++)n[r]=t(r+1,r);else if(s(e))if(ue&&e[Symbol.iterator]){n=[];for(var u=e[Symbol.iterator](),l=u.next();!l.done;)n.push(t(l.value,n.length)),l=u.next()}else for(a=Object.keys(e),n=new Array(a.length),r=0,o=a.length;r<o;r++)c=a[r],n[r]=t(e[c],c,r);return i(n)||(n=[]),n._isVList=!0,n}function _t(e,t,n,r){var i,o=this.$scopedSlots[e];o?(n=n||{},r&&(n=T(T({},r),n)),i=o(n)||t):i=this.$slots[e]||t;var a=n&&n.slot;return a?this.$createElement("template",{slot:a},i):i}function bt(e){return Fe(this.$options,"filters",e)||N}function $t(e,t){return Array.isArray(e)?-1===e.indexOf(t):e!==t}function xt(e,t,n,r,i){var o=B.keyCodes[t]||n;return i&&r&&!B.keyCodes[t]?$t(i,r):o?$t(o,e):r?A(r)!==t:void 0}function wt(e,t,n,r,i){if(n)if(s(n)){var o;Array.isArray(n)&&(n=j(n));var a=function(a){if("class"===a||"style"===a||y(a))o=e;else{var s=e.attrs&&e.attrs.type;o=r||B.mustUseProp(t,s,a)?e.domProps||(e.domProps={}):e.attrs||(e.attrs={})}var c=w(a);a in o||c in o||(o[a]=n[a],i&&((e.on||(e.on={}))["update:"+c]=function(e){n[a]=e}))};for(var c in n)a(c)}else;return e}function Ct(e,t){var n=this._staticTrees||(this._staticTrees=[]),r=n[e];return r&&!t?r:(At(r=n[e]=this.$options.staticRenderFns[e].call(this._renderProxy,null,this),"__static__"+e,!1),r)}function kt(e,t,n){return At(e,"__once__"+t+(n?"_"+n:""),!0),e}function At(e,t,n){if(Array.isArray(e))for(var r=0;r<e.length;r++)e[r]&&"string"!=typeof e[r]&&Ot(e[r],t+"_"+r,n);else Ot(e,t,n)}function Ot(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=n}function St(e,t){if(t)if(u(t)){var n=e.on=e.on?T({},e.on):{};for(var r in t){var i=n[r],o=t[r];n[r]=i?[].concat(i,o):o}}else;return e}function Tt(e,t,n,r){t=t||{$stable:!n};for(var i=0;i<e.length;i++){var o=e[i];Array.isArray(o)?Tt(o,t,n):o&&(o.proxy&&(o.fn.proxy=!0),t[o.key]=o.fn)}return r&&(t.$key=r),t}function jt(e,t){for(var n=0;n<t.length;n+=2){var r=t[n];"string"==typeof r&&r&&(e[t[n]]=t[n+1])}return e}function Et(e,t){return"string"==typeof e?t+e:e}function Mt(e){e._o=kt,e._n=v,e._s=d,e._l=gt,e._t=_t,e._q=D,e._i=I,e._m=Ct,e._f=bt,e._k=xt,e._b=wt,e._v=_e,e._e=ge,e._u=Tt,e._g=St,e._d=jt,e._p=Et}function Nt(e,t,r,i,a){var s,c=this,u=a.options;b(i,"_uid")?(s=Object.create(i))._original=i:(s=i,i=i._original);var l=o(u._compiled),f=!l;this.data=e,this.props=t,this.children=r,this.parent=i,this.listeners=e.on||n,this.injections=pt(u.inject,i),this.slots=function(){return c.$slots||ht(e.scopedSlots,c.$slots=dt(r,i)),c.$slots},Object.defineProperty(this,"scopedSlots",{enumerable:!0,get:function(){return ht(e.scopedSlots,this.slots())}}),l&&(this.$options=u,this.$slots=this.slots(),this.$scopedSlots=ht(e.scopedSlots,this.$slots)),u._scopeId?this._c=function(e,t,n,r){var o=Ht(s,e,t,n,r,f);return o&&!Array.isArray(o)&&(o.fnScopeId=u._scopeId,o.fnContext=i),o}:this._c=function(e,t,n,r){return Ht(s,e,t,n,r,f)}}function Dt(e,t,n,r,i){var o=be(e);return o.fnContext=n,o.fnOptions=r,t.slot&&((o.data||(o.data={})).slot=t.slot),o}function It(e,t){for(var n in t)e[w(n)]=t[n]}Mt(Nt.prototype);var Lt={init:function(e,t){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){var n=e;Lt.prepatch(n,n)}else{(e.componentInstance=function(e,t){var n={_isComponent:!0,_parentVnode:e,parent:t},r=e.data.inlineTemplate;i(r)&&(n.render=r.render,n.staticRenderFns=r.staticRenderFns);return new e.componentOptions.Ctor(n)}(e,Qt)).$mount(t?e.elm:void 0,t)}},prepatch:function(e,t){var r=t.componentOptions;!function(e,t,r,i,o){0;var a=i.data.scopedSlots,s=e.$scopedSlots,c=!!(a&&!a.$stable||s!==n&&!s.$stable||a&&e.$scopedSlots.$key!==a.$key),u=!!(o||e.$options._renderChildren||c);e.$options._parentVnode=i,e.$vnode=i,e._vnode&&(e._vnode.parent=i);if(e.$options._renderChildren=o,e.$attrs=i.data.attrs||n,e.$listeners=r||n,t&&e.$options.props){ke(!1);for(var l=e._props,f=e.$options._propKeys||[],p=0;p<f.length;p++){var d=f[p],v=e.$options.props;l[d]=Re(d,v,t,e)}ke(!0),e.$options.propsData=t}r=r||n;var h=e.$options._parentListeners;e.$options._parentListeners=r,Xt(e,r,h),u&&(e.$slots=dt(o,i.context),e.$forceUpdate());0}(t.componentInstance=e.componentInstance,r.propsData,r.listeners,t,r.children)},insert:function(e){var t,n=e.context,r=e.componentInstance;r._isMounted||(r._isMounted=!0,nn(r,"mounted")),e.data.keepAlive&&(n._isMounted?((t=r)._inactive=!1,on.push(t)):tn(r,!0))},destroy:function(e){var t=e.componentInstance;t._isDestroyed||(e.data.keepAlive?function e(t,n){if(n&&(t._directInactive=!0,en(t)))return;if(!t._inactive){t._inactive=!0;for(var r=0;r<t.$children.length;r++)e(t.$children[r]);nn(t,"deactivated")}}(t,!0):t.$destroy())}},Pt=Object.keys(Lt);function Ft(e,t,a,c,u){if(!r(e)){var l=a.$options._base;if(s(e)&&(e=l.extend(e)),"function"==typeof e){var f;if(r(e.cid)&&void 0===(e=function(e,t){if(o(e.error)&&i(e.errorComp))return e.errorComp;if(i(e.resolved))return e.resolved;if(o(e.loading)&&i(e.loadingComp))return e.loadingComp;var n=Vt;if(!i(e.owners)){var a=e.owners=[n],c=!0,u=function(e){for(var t=0,n=a.length;t<n;t++)a[t].$forceUpdate();e&&(a.length=0)},l=L(function(n){e.resolved=Jt(n,t),c?a.length=0:u(!0)}),f=L(function(t){i(e.errorComp)&&(e.error=!0,u(!0))}),d=e(l,f);return s(d)&&(p(d)?r(e.resolved)&&d.then(l,f):p(d.component)&&(d.component.then(l,f),i(d.error)&&(e.errorComp=Jt(d.error,t)),i(d.loading)&&(e.loadingComp=Jt(d.loading,t),0===d.delay?e.loading=!0:setTimeout(function(){r(e.resolved)&&r(e.error)&&(e.loading=!0,u(!1))},d.delay||200)),i(d.timeout)&&setTimeout(function(){r(e.resolved)&&f(null)},d.timeout))),c=!1,e.loading?e.loadingComp:e.resolved}e.owners.push(n)}(f=e,l)))return function(e,t,n,r,i){var o=ge();return o.asyncFactory=e,o.asyncMeta={data:t,context:n,children:r,tag:i},o}(f,t,a,c,u);t=t||{},Cn(e),i(t.model)&&function(e,t){var n=e.model&&e.model.prop||"value",r=e.model&&e.model.event||"input";(t.attrs||(t.attrs={}))[n]=t.model.value;var o=t.on||(t.on={}),a=o[r],s=t.model.callback;i(a)?(Array.isArray(a)?-1===a.indexOf(s):a!==s)&&(o[r]=[s].concat(a)):o[r]=s}(e.options,t);var d=function(e,t,n){var o=t.options.props;if(!r(o)){var a={},s=e.attrs,c=e.props;if(i(s)||i(c))for(var u in o){var l=A(u);ut(a,c,u,l,!0)||ut(a,s,u,l,!1)}return a}}(t,e);if(o(e.options.functional))return function(e,t,r,o,a){var s=e.options,c={},u=s.props;if(i(u))for(var l in u)c[l]=Re(l,u,t||n);else i(r.attrs)&&It(c,r.attrs),i(r.props)&&It(c,r.props);var f=new Nt(r,c,a,o,e),p=s.render.call(null,f._c,f);if(p instanceof me)return Dt(p,r,f.parent,s);if(Array.isArray(p)){for(var d=lt(p)||[],v=new Array(d.length),h=0;h<d.length;h++)v[h]=Dt(d[h],r,f.parent,s);return v}}(e,d,t,a,c);var v=t.on;if(t.on=t.nativeOn,o(e.options.abstract)){var h=t.slot;t={},h&&(t.slot=h)}!function(e){for(var t=e.hook||(e.hook={}),n=0;n<Pt.length;n++){var r=Pt[n],i=t[r],o=Lt[r];i===o||i&&i._merged||(t[r]=i?Rt(o,i):o)}}(t);var m=e.options.name||u;return new me("vue-component-"+e.cid+(m?"-"+m:""),t,void 0,void 0,void 0,a,{Ctor:e,propsData:d,listeners:v,tag:u,children:c},f)}}}function Rt(e,t){var n=function(n,r){e(n,r),t(n,r)};return n._merged=!0,n}var Bt=1,Ut=2;function Ht(e,t,n,c,u,l){return(Array.isArray(n)||a(n))&&(u=c,c=n,n=void 0),o(l)&&(u=Ut),function(e,t,n,a,c){if(i(n)&&i(n.__ob__))return ge();i(n)&&i(n.is)&&(t=n.is);if(!t)return ge();0;Array.isArray(a)&&"function"==typeof a[0]&&((n=n||{}).scopedSlots={default:a[0]},a.length=0);c===Ut?a=lt(a):c===Bt&&(a=function(e){for(var t=0;t<e.length;t++)if(Array.isArray(e[t]))return Array.prototype.concat.apply([],e);return e}(a));var u,l;if("string"==typeof t){var f;l=e.$vnode&&e.$vnode.ns||B.getTagNamespace(t),u=B.isReservedTag(t)?new me(B.parsePlatformTagName(t),n,a,void 0,void 0,e):n&&n.pre||!i(f=Fe(e.$options,"components",t))?new me(t,n,a,void 0,void 0,e):Ft(f,n,e,a,t)}else u=Ft(t,n,e,a);return Array.isArray(u)?u:i(u)?(i(l)&&function e(t,n,a){t.ns=n;"foreignObject"===t.tag&&(n=void 0,a=!0);if(i(t.children))for(var s=0,c=t.children.length;s<c;s++){var u=t.children[s];i(u.tag)&&(r(u.ns)||o(a)&&"svg"!==u.tag)&&e(u,n,a)}}(u,l),i(n)&&function(e){s(e.style)&&it(e.style);s(e.class)&&it(e.class)}(n),u):ge()}(e,t,n,c,u)}var zt,Vt=null;function Jt(e,t){return(e.__esModule||ue&&"Module"===e[Symbol.toStringTag])&&(e=e.default),s(e)?t.extend(e):e}function Kt(e){return e.isComment&&e.asyncFactory}function qt(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t];if(i(n)&&(i(n.componentOptions)||Kt(n)))return n}}function Wt(e,t){zt.$on(e,t)}function Gt(e,t){zt.$off(e,t)}function Zt(e,t){var n=zt;return function r(){null!==t.apply(null,arguments)&&n.$off(e,r)}}function Xt(e,t,n){zt=e,st(t,n||{},Wt,Gt,Zt,e),zt=void 0}var Qt=null;function Yt(e){var t=Qt;return Qt=e,function(){Qt=t}}function en(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function tn(e,t){if(t){if(e._directInactive=!1,en(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(var n=0;n<e.$children.length;n++)tn(e.$children[n]);nn(e,"activated")}}function nn(e,t){ve();var n=e.$options[t],r=t+" hook";if(n)for(var i=0,o=n.length;i<o;i++)Ve(n[i],e,null,e,r);e._hasHookEvent&&e.$emit("hook:"+t),he()}var rn=[],on=[],an={},sn=!1,cn=!1,un=0;var ln=0,fn=Date.now;function pn(){var e,t;for(ln=fn(),cn=!0,rn.sort(function(e,t){return e.id-t.id}),un=0;un<rn.length;un++)(e=rn[un]).before&&e.before(),t=e.id,an[t]=null,e.run();var n=on.slice(),r=rn.slice();un=rn.length=on.length=0,an={},sn=cn=!1,function(e){for(var t=0;t<e.length;t++)e[t]._inactive=!0,tn(e[t],!0)}(n),function(e){var t=e.length;for(;t--;){var n=e[t],r=n.vm;r._watcher===n&&r._isMounted&&!r._isDestroyed&&nn(r,"updated")}}(r),ae&&B.devtools&&ae.emit("flush")}q&&fn()>document.createEvent("Event").timeStamp&&(fn=function(){return performance.now()});var dn=0,vn=function(e,t,n,r,i){this.vm=e,i&&(e._watcher=this),e._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=++dn,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ce,this.newDepIds=new ce,this.expression="","function"==typeof t?this.getter=t:(this.getter=function(e){if(!V.test(e)){var t=e.split(".");return function(e){for(var n=0;n<t.length;n++){if(!e)return;e=e[t[n]]}return e}}}(t),this.getter||(this.getter=E)),this.value=this.lazy?void 0:this.get()};vn.prototype.get=function(){var e;ve(this);var t=this.vm;try{e=this.getter.call(t,t)}catch(e){if(!this.user)throw e;ze(e,t,'getter for watcher "'+this.expression+'"')}finally{this.deep&&it(e),he(),this.cleanupDeps()}return e},vn.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},vn.prototype.cleanupDeps=function(){for(var e=this.deps.length;e--;){var t=this.deps[e];this.newDepIds.has(t.id)||t.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},vn.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(e){var t=e.id;if(null==an[t]){if(an[t]=!0,cn){for(var n=rn.length-1;n>un&&rn[n].id>e.id;)n--;rn.splice(n+1,0,e)}else rn.push(e);sn||(sn=!0,nt(pn))}}(this)},vn.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||s(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){ze(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},vn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},vn.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},vn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var hn={enumerable:!0,configurable:!0,get:E,set:E};function mn(e,t,n){hn.get=function(){return this[t][n]},hn.set=function(e){this[t][n]=e},Object.defineProperty(e,n,hn)}function yn(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},r=e._props={},i=e.$options._propKeys=[],o=!e.$parent;o||ke(!1);var a=function(o){i.push(o);var a=Re(o,t,n,e);Se(r,o,a),o in e||mn(e,"_props",o)};for(var s in t)a(s);ke(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var n in t)e[n]="function"!=typeof t[n]?E:O(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;u(t=e._data="function"==typeof t?function(e,t){ve();try{return e.call(t,t)}catch(e){return ze(e,t,"data()"),{}}finally{he()}}(t,e):t||{})||(t={});var n=Object.keys(t),r=e.$options.props,i=(e.$options.methods,n.length);for(;i--;){var o=n[i];0,r&&b(r,o)||H(o)||mn(e,"_data",o)}Oe(t,!0)}(e):Oe(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=oe();for(var i in t){var o=t[i],a="function"==typeof o?o:o.get;0,r||(n[i]=new vn(e,a||E,E,gn)),i in e||_n(e,i,o)}}(e,t.computed),t.watch&&t.watch!==ne&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i<r.length;i++)xn(e,n,r[i]);else xn(e,n,r)}}(e,t.watch)}var gn={lazy:!0};function _n(e,t,n){var r=!oe();"function"==typeof n?(hn.get=r?bn(t):$n(n),hn.set=E):(hn.get=n.get?r&&!1!==n.cache?bn(t):$n(n.get):E,hn.set=n.set||E),Object.defineProperty(e,t,hn)}function bn(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),pe.target&&t.depend(),t.value}}function $n(e){return function(){return e.call(this,this)}}function xn(e,t,n,r){return u(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=e[n]),e.$watch(t,n,r)}var wn=0;function Cn(e){var t=e.options;if(e.super){var n=Cn(e.super);if(n!==e.superOptions){e.superOptions=n;var r=function(e){var t,n=e.options,r=e.sealedOptions;for(var i in n)n[i]!==r[i]&&(t||(t={}),t[i]=n[i]);return t}(e);r&&T(e.extendOptions,r),(t=e.options=Pe(n,e.extendOptions)).name&&(t.components[t.name]=e)}}return t}function kn(e){this._init(e)}function An(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,r=n.cid,i=e._Ctor||(e._Ctor={});if(i[r])return i[r];var o=e.name||n.options.name;var a=function(e){this._init(e)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=t++,a.options=Pe(n.options,e),a.super=n,a.options.props&&function(e){var t=e.options.props;for(var n in t)mn(e.prototype,"_props",n)}(a),a.options.computed&&function(e){var t=e.options.computed;for(var n in t)_n(e.prototype,n,t[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,F.forEach(function(e){a[e]=n[e]}),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=e,a.sealedOptions=T({},a.options),i[r]=a,a}}function On(e){return e&&(e.Ctor.options.name||e.tag)}function Sn(e,t){return Array.isArray(e)?e.indexOf(t)>-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!l(e)&&e.test(t)}function Tn(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var o in n){var a=n[o];if(a){var s=On(a.componentOptions);s&&!t(s)&&jn(n,o,r,i)}}}function jn(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),e[t]=null,g(n,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=wn++,t._isVue=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Pe(Cn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Xt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,r=e.$vnode=t._parentVnode,i=r&&r.context;e.$slots=dt(t._renderChildren,i),e.$scopedSlots=n,e._c=function(t,n,r,i){return Ht(e,t,n,r,i,!1)},e.$createElement=function(t,n,r,i){return Ht(e,t,n,r,i,!0)};var o=r&&r.data;Se(e,"$attrs",o&&o.attrs||n,null,!0),Se(e,"$listeners",t._parentListeners||n,null,!0)}(t),nn(t,"beforeCreate"),function(e){var t=pt(e.$options.inject,e);t&&(ke(!1),Object.keys(t).forEach(function(n){Se(e,n,t[n])}),ke(!0))}(t),yn(t),function(e){var t=e.$options.provide;t&&(e._provided="function"==typeof t?t.call(e):t)}(t),nn(t,"created"),t.$options.el&&t.$mount(t.$options.el)}}(kn),function(e){var t={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(e.prototype,"$data",t),Object.defineProperty(e.prototype,"$props",n),e.prototype.$set=Te,e.prototype.$delete=je,e.prototype.$watch=function(e,t,n){if(u(t))return xn(this,e,t,n);(n=n||{}).user=!0;var r=new vn(this,e,t,n);if(n.immediate)try{t.call(this,r.value)}catch(e){ze(e,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(kn),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){var r=this;if(Array.isArray(e))for(var i=0,o=e.length;i<o;i++)r.$on(e[i],n);else(r._events[e]||(r._events[e]=[])).push(n),t.test(e)&&(r._hasHookEvent=!0);return r},e.prototype.$once=function(e,t){var n=this;function r(){n.$off(e,r),t.apply(n,arguments)}return r.fn=t,n.$on(e,r),n},e.prototype.$off=function(e,t){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(e)){for(var r=0,i=e.length;r<i;r++)n.$off(e[r],t);return n}var o,a=n._events[e];if(!a)return n;if(!t)return n._events[e]=null,n;for(var s=a.length;s--;)if((o=a[s])===t||o.fn===t){a.splice(s,1);break}return n},e.prototype.$emit=function(e){var t=this,n=t._events[e];if(n){n=n.length>1?S(n):n;for(var r=S(arguments,1),i='event handler for "'+e+'"',o=0,a=n.length;o<a;o++)Ve(n[o],t,r,t,i)}return t}}(kn),function(e){e.prototype._update=function(e,t){var n=this,r=n.$el,i=n._vnode,o=Yt(n);n._vnode=e,n.$el=i?n.__patch__(i,e):n.__patch__(n.$el,e,t,!1),o(),r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},e.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},e.prototype.$destroy=function(){var e=this;if(!e._isBeingDestroyed){nn(e,"beforeDestroy"),e._isBeingDestroyed=!0;var t=e.$parent;!t||t._isBeingDestroyed||e.$options.abstract||g(t.$children,e),e._watcher&&e._watcher.teardown();for(var n=e._watchers.length;n--;)e._watchers[n].teardown();e._data.__ob__&&e._data.__ob__.vmCount--,e._isDestroyed=!0,e.__patch__(e._vnode,null),nn(e,"destroyed"),e.$off(),e.$el&&(e.$el.__vue__=null),e.$vnode&&(e.$vnode.parent=null)}}}(kn),function(e){Mt(e.prototype),e.prototype.$nextTick=function(e){return nt(e,this)},e.prototype._render=function(){var e,t=this,n=t.$options,r=n.render,i=n._parentVnode;i&&(t.$scopedSlots=ht(i.data.scopedSlots,t.$slots,t.$scopedSlots)),t.$vnode=i;try{Vt=t,e=r.call(t._renderProxy,t.$createElement)}catch(n){ze(n,t,"render"),e=t._vnode}finally{Vt=null}return Array.isArray(e)&&1===e.length&&(e=e[0]),e instanceof me||(e=ge()),e.parent=i,e}}(kn);var En=[String,RegExp,Array],Mn={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:En,exclude:En,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)jn(this.cache,e,this.keys)},mounted:function(){var e=this;this.$watch("include",function(t){Tn(e,function(e){return Sn(t,e)})}),this.$watch("exclude",function(t){Tn(e,function(e){return!Sn(t,e)})})},render:function(){var e=this.$slots.default,t=qt(e),n=t&&t.componentOptions;if(n){var r=On(n),i=this.include,o=this.exclude;if(i&&(!r||!Sn(i,r))||o&&r&&Sn(o,r))return t;var a=this.cache,s=this.keys,c=null==t.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):t.key;a[c]?(t.componentInstance=a[c].componentInstance,g(s,c),s.push(c)):(a[c]=t,s.push(c),this.max&&s.length>parseInt(this.max)&&jn(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return B}};Object.defineProperty(e,"config",t),e.util={warn:le,extend:T,mergeOptions:Pe,defineReactive:Se},e.set=Te,e.delete=je,e.nextTick=nt,e.observable=function(e){return Oe(e),e},e.options=Object.create(null),F.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,T(e.options.components,Mn),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=S(arguments,1);return n.unshift(this),"function"==typeof e.install?e.install.apply(e,n):"function"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Pe(this.options,e),this}}(e),An(e),function(e){F.forEach(function(t){e[t]=function(e,n){return n?("component"===t&&u(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"==typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}})}(e)}(kn),Object.defineProperty(kn.prototype,"$isServer",{get:oe}),Object.defineProperty(kn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(kn,"FunctionalRenderContext",{value:Nt}),kn.version="2.6.7";var Nn=h("style,class"),Dn=h("input,textarea,option,select,progress"),In=function(e,t,n){return"value"===n&&Dn(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},Ln=h("contenteditable,draggable,spellcheck"),Pn=h("events,caret,typing,plaintext-only"),Fn=function(e,t){return zn(t)||"false"===t?"false":"contenteditable"===e&&Pn(t)?t:"true"},Rn=h("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"),Bn="http://www.w3.org/1999/xlink",Un=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Hn=function(e){return Un(e)?e.slice(6,e.length):""},zn=function(e){return null==e||!1===e};function Vn(e){for(var t=e.data,n=e,r=e;i(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=Jn(r.data,t));for(;i(n=n.parent);)n&&n.data&&(t=Jn(t,n.data));return function(e,t){if(i(e)||i(t))return Kn(e,qn(t));return""}(t.staticClass,t.class)}function Jn(e,t){return{staticClass:Kn(e.staticClass,t.staticClass),class:i(e.class)?[e.class,t.class]:t.class}}function Kn(e,t){return e?t?e+" "+t:e:t||""}function qn(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,o=e.length;r<o;r++)i(t=qn(e[r]))&&""!==t&&(n&&(n+=" "),n+=t);return n}(e):s(e)?function(e){var t="";for(var n in e)e[n]&&(t&&(t+=" "),t+=n);return t}(e):"string"==typeof e?e:""}var Wn={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Gn=h("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Zn=h("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Xn=function(e){return Gn(e)||Zn(e)};function Qn(e){return Zn(e)?"svg":"math"===e?"math":void 0}var Yn=Object.create(null);var er=h("text,number,password,search,email,tel,url");function tr(e){if("string"==typeof e){var t=document.querySelector(e);return t||document.createElement("div")}return e}var nr=Object.freeze({createElement:function(e,t){var n=document.createElement(e);return"select"!==e?n:(t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)},createElementNS:function(e,t){return document.createElementNS(Wn[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,n){e.insertBefore(t,n)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,"")}}),rr={create:function(e,t){ir(t)},update:function(e,t){e.data.ref!==t.data.ref&&(ir(e,!0),ir(t))},destroy:function(e){ir(e,!0)}};function ir(e,t){var n=e.data.ref;if(i(n)){var r=e.context,o=e.componentInstance||e.elm,a=r.$refs;t?Array.isArray(a[n])?g(a[n],o):a[n]===o&&(a[n]=void 0):e.data.refInFor?Array.isArray(a[n])?a[n].indexOf(o)<0&&a[n].push(o):a[n]=[o]:a[n]=o}}var or=new me("",{},[]),ar=["create","activate","update","remove","destroy"];function sr(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.isComment&&i(e.data)===i(t.data)&&function(e,t){if("input"!==e.tag)return!0;var n,r=i(n=e.data)&&i(n=n.attrs)&&n.type,o=i(n=t.data)&&i(n=n.attrs)&&n.type;return r===o||er(r)&&er(o)}(e,t)||o(e.isAsyncPlaceholder)&&e.asyncFactory===t.asyncFactory&&r(t.asyncFactory.error))}function cr(e,t,n){var r,o,a={};for(r=t;r<=n;++r)i(o=e[r].key)&&(a[o]=r);return a}var ur={create:lr,update:lr,destroy:function(e){lr(e,or)}};function lr(e,t){(e.data.directives||t.data.directives)&&function(e,t){var n,r,i,o=e===or,a=t===or,s=pr(e.data.directives,e.context),c=pr(t.data.directives,t.context),u=[],l=[];for(n in c)r=s[n],i=c[n],r?(i.oldValue=r.value,i.oldArg=r.arg,vr(i,"update",t,e),i.def&&i.def.componentUpdated&&l.push(i)):(vr(i,"bind",t,e),i.def&&i.def.inserted&&u.push(i));if(u.length){var f=function(){for(var n=0;n<u.length;n++)vr(u[n],"inserted",t,e)};o?ct(t,"insert",f):f()}l.length&&ct(t,"postpatch",function(){for(var n=0;n<l.length;n++)vr(l[n],"componentUpdated",t,e)});if(!o)for(n in s)c[n]||vr(s[n],"unbind",e,e,a)}(e,t)}var fr=Object.create(null);function pr(e,t){var n,r,i=Object.create(null);if(!e)return i;for(n=0;n<e.length;n++)(r=e[n]).modifiers||(r.modifiers=fr),i[dr(r)]=r,r.def=Fe(t.$options,"directives",r.name);return i}function dr(e){return e.rawName||e.name+"."+Object.keys(e.modifiers||{}).join(".")}function vr(e,t,n,r,i){var o=e.def&&e.def[t];if(o)try{o(n.elm,e,n,r,i)}catch(r){ze(r,n.context,"directive "+e.name+" "+t+" hook")}}var hr=[rr,ur];function mr(e,t){var n=t.componentOptions;if(!(i(n)&&!1===n.Ctor.options.inheritAttrs||r(e.data.attrs)&&r(t.data.attrs))){var o,a,s=t.elm,c=e.data.attrs||{},u=t.data.attrs||{};for(o in i(u.__ob__)&&(u=t.data.attrs=T({},u)),u)a=u[o],c[o]!==a&&yr(s,o,a);for(o in(X||Y)&&u.value!==c.value&&yr(s,"value",u.value),c)r(u[o])&&(Un(o)?s.removeAttributeNS(Bn,Hn(o)):Ln(o)||s.removeAttribute(o))}}function yr(e,t,n){e.tagName.indexOf("-")>-1?gr(e,t,n):Rn(t)?zn(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Ln(t)?e.setAttribute(t,Fn(t,n)):Un(t)?zn(n)?e.removeAttributeNS(Bn,Hn(t)):e.setAttributeNS(Bn,t,n):gr(e,t,n)}function gr(e,t,n){if(zn(n))e.removeAttribute(t);else{if(X&&!Q&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var _r={create:mr,update:mr};function br(e,t){var n=t.elm,o=t.data,a=e.data;if(!(r(o.staticClass)&&r(o.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=Vn(t),c=n._transitionClasses;i(c)&&(s=Kn(s,qn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var $r,xr,wr,Cr,kr,Ar,Or={create:br,update:br},Sr=/[\w).+\-_$\]]/;function Tr(e){var t,n,r,i,o,a=!1,s=!1,c=!1,u=!1,l=0,f=0,p=0,d=0;for(r=0;r<e.length;r++)if(n=t,t=e.charCodeAt(r),a)39===t&&92!==n&&(a=!1);else if(s)34===t&&92!==n&&(s=!1);else if(c)96===t&&92!==n&&(c=!1);else if(u)47===t&&92!==n&&(u=!1);else if(124!==t||124===e.charCodeAt(r+1)||124===e.charCodeAt(r-1)||l||f||p){switch(t){case 34:s=!0;break;case 39:a=!0;break;case 96:c=!0;break;case 40:p++;break;case 41:p--;break;case 91:f++;break;case 93:f--;break;case 123:l++;break;case 125:l--}if(47===t){for(var v=r-1,h=void 0;v>=0&&" "===(h=e.charAt(v));v--);h&&Sr.test(h)||(u=!0)}}else void 0===i?(d=r+1,i=e.slice(0,r).trim()):m();function m(){(o||(o=[])).push(e.slice(d,r).trim()),d=r+1}if(void 0===i?i=e.slice(0,r).trim():0!==d&&m(),o)for(r=0;r<o.length;r++)i=jr(i,o[r]);return i}function jr(e,t){var n=t.indexOf("(");if(n<0)return'_f("'+t+'")('+e+")";var r=t.slice(0,n),i=t.slice(n+1);return'_f("'+r+'")('+e+(")"!==i?","+i:i)}function Er(e,t){console.error("[Vue compiler]: "+e)}function Mr(e,t){return e?e.map(function(e){return e[t]}).filter(function(e){return e}):[]}function Nr(e,t,n,r,i){(e.props||(e.props=[])).push(zr({name:t,value:n,dynamic:i},r)),e.plain=!1}function Dr(e,t,n,r,i){(i?e.dynamicAttrs||(e.dynamicAttrs=[]):e.attrs||(e.attrs=[])).push(zr({name:t,value:n,dynamic:i},r)),e.plain=!1}function Ir(e,t,n,r){e.attrsMap[t]=n,e.attrsList.push(zr({name:t,value:n},r))}function Lr(e,t,n,r,i,o,a,s){(e.directives||(e.directives=[])).push(zr({name:t,rawName:n,value:r,arg:i,isDynamicArg:o,modifiers:a},s)),e.plain=!1}function Pr(e,t,n){return n?"_p("+t+',"'+e+'")':e+t}function Fr(e,t,r,i,o,a,s,c){var u;(i=i||n).right?c?t="("+t+")==='click'?'contextmenu':("+t+")":"click"===t&&(t="contextmenu",delete i.right):i.middle&&(c?t="("+t+")==='click'?'mouseup':("+t+")":"click"===t&&(t="mouseup")),i.capture&&(delete i.capture,t=Pr("!",t,c)),i.once&&(delete i.once,t=Pr("~",t,c)),i.passive&&(delete i.passive,t=Pr("&",t,c)),i.native?(delete i.native,u=e.nativeEvents||(e.nativeEvents={})):u=e.events||(e.events={});var l=zr({value:r.trim(),dynamic:c},s);i!==n&&(l.modifiers=i);var f=u[t];Array.isArray(f)?o?f.unshift(l):f.push(l):u[t]=f?o?[l,f]:[f,l]:l,e.plain=!1}function Rr(e,t){return e.rawAttrsMap[":"+t]||e.rawAttrsMap["v-bind:"+t]||e.rawAttrsMap[t]}function Br(e,t,n){var r=Ur(e,":"+t)||Ur(e,"v-bind:"+t);if(null!=r)return Tr(r);if(!1!==n){var i=Ur(e,t);if(null!=i)return JSON.stringify(i)}}function Ur(e,t,n){var r;if(null!=(r=e.attrsMap[t]))for(var i=e.attrsList,o=0,a=i.length;o<a;o++)if(i[o].name===t){i.splice(o,1);break}return n&&delete e.attrsMap[t],r}function Hr(e,t){for(var n=e.attrsList,r=0,i=n.length;r<i;r++){var o=n[r];if(t.test(o.name))return n.splice(r,1),o}}function zr(e,t){return t&&(null!=t.start&&(e.start=t.start),null!=t.end&&(e.end=t.end)),e}function Vr(e,t,n){var r=n||{},i=r.number,o="$$v";r.trim&&(o="(typeof $$v === 'string'? $$v.trim(): $$v)"),i&&(o="_n("+o+")");var a=Jr(t,o);e.model={value:"("+t+")",expression:JSON.stringify(t),callback:"function ($$v) {"+a+"}"}}function Jr(e,t){var n=function(e){if(e=e.trim(),$r=e.length,e.indexOf("[")<0||e.lastIndexOf("]")<$r-1)return(Cr=e.lastIndexOf("."))>-1?{exp:e.slice(0,Cr),key:'"'+e.slice(Cr+1)+'"'}:{exp:e,key:null};xr=e,Cr=kr=Ar=0;for(;!qr();)Wr(wr=Kr())?Zr(wr):91===wr&&Gr(wr);return{exp:e.slice(0,kr),key:e.slice(kr+1,Ar)}}(e);return null===n.key?e+"="+t:"$set("+n.exp+", "+n.key+", "+t+")"}function Kr(){return xr.charCodeAt(++Cr)}function qr(){return Cr>=$r}function Wr(e){return 34===e||39===e}function Gr(e){var t=1;for(kr=Cr;!qr();)if(Wr(e=Kr()))Zr(e);else if(91===e&&t++,93===e&&t--,0===t){Ar=Cr;break}}function Zr(e){for(var t=e;!qr()&&(e=Kr())!==t;);}var Xr,Qr="__r",Yr="__c";function ei(e,t,n){var r=Xr;return function i(){null!==t.apply(null,arguments)&&ri(e,i,n,r)}}var ti=We&&!(te&&Number(te[1])<=53);function ni(e,t,n,r){if(ti){var i=ln,o=t;t=o._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=i||0===e.timeStamp||e.target.ownerDocument!==document)return o.apply(this,arguments)}}Xr.addEventListener(e,t,re?{capture:n,passive:r}:n)}function ri(e,t,n,r){(r||Xr).removeEventListener(e,t._wrapper||t,n)}function ii(e,t){if(!r(e.data.on)||!r(t.data.on)){var n=t.data.on||{},o=e.data.on||{};Xr=t.elm,function(e){if(i(e[Qr])){var t=X?"change":"input";e[t]=[].concat(e[Qr],e[t]||[]),delete e[Qr]}i(e[Yr])&&(e.change=[].concat(e[Yr],e.change||[]),delete e[Yr])}(n),st(n,o,ni,ri,ei,t.context),Xr=void 0}}var oi,ai={create:ii,update:ii};function si(e,t){if(!r(e.data.domProps)||!r(t.data.domProps)){var n,o,a=t.elm,s=e.data.domProps||{},c=t.data.domProps||{};for(n in i(c.__ob__)&&(c=t.data.domProps=T({},c)),s)r(c[n])&&(a[n]="");for(n in c){if(o=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),o===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=o;var u=r(o)?"":String(o);ci(a,u)&&(a.value=u)}else if("innerHTML"===n&&Zn(a.tagName)&&r(a.innerHTML)){(oi=oi||document.createElement("div")).innerHTML="<svg>"+o+"</svg>";for(var l=oi.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;l.firstChild;)a.appendChild(l.firstChild)}else if(o!==s[n])try{a[n]=o}catch(e){}}}}function ci(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(i(r)){if(r.number)return v(n)!==v(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var ui={create:si,update:si},li=$(function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach(function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t});function fi(e){var t=pi(e.style);return e.staticStyle?T(e.staticStyle,t):t}function pi(e){return Array.isArray(e)?j(e):"string"==typeof e?li(e):e}var di,vi=/^--/,hi=/\s*!important$/,mi=function(e,t,n){if(vi.test(t))e.style.setProperty(t,n);else if(hi.test(n))e.style.setProperty(A(t),n.replace(hi,""),"important");else{var r=gi(t);if(Array.isArray(n))for(var i=0,o=n.length;i<o;i++)e.style[r]=n[i];else e.style[r]=n}},yi=["Webkit","Moz","ms"],gi=$(function(e){if(di=di||document.createElement("div").style,"filter"!==(e=w(e))&&e in di)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<yi.length;n++){var r=yi[n]+t;if(r in di)return r}});function _i(e,t){var n=t.data,o=e.data;if(!(r(n.staticStyle)&&r(n.style)&&r(o.staticStyle)&&r(o.style))){var a,s,c=t.elm,u=o.staticStyle,l=o.normalizedStyle||o.style||{},f=u||l,p=pi(t.data.style)||{};t.data.normalizedStyle=i(p.__ob__)?T({},p):p;var d=function(e,t){var n,r={};if(t)for(var i=e;i.componentInstance;)(i=i.componentInstance._vnode)&&i.data&&(n=fi(i.data))&&T(r,n);(n=fi(e.data))&&T(r,n);for(var o=e;o=o.parent;)o.data&&(n=fi(o.data))&&T(r,n);return r}(t,!0);for(s in f)r(d[s])&&mi(c,s,"");for(s in d)(a=d[s])!==f[s]&&mi(c,s,null==a?"":a)}}var bi={create:_i,update:_i},$i=/\s+/;function xi(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split($i).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function wi(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split($i).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" "+(e.getAttribute("class")||"")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function Ci(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&T(t,ki(e.name||"v")),T(t,e),t}return"string"==typeof e?ki(e):void 0}}var ki=$(function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}}),Ai=q&&!Q,Oi="transition",Si="animation",Ti="transition",ji="transitionend",Ei="animation",Mi="animationend";Ai&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Ti="WebkitTransition",ji="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ei="WebkitAnimation",Mi="webkitAnimationEnd"));var Ni=q?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Di(e){Ni(function(){Ni(e)})}function Ii(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),xi(e,t))}function Li(e,t){e._transitionClasses&&g(e._transitionClasses,t),wi(e,t)}function Pi(e,t,n){var r=Ri(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===Oi?ji:Mi,c=0,u=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++c>=a&&u()};setTimeout(function(){c<a&&u()},o+1),e.addEventListener(s,l)}var Fi=/\b(transform|all)(,|$)/;function Ri(e,t){var n,r=window.getComputedStyle(e),i=(r[Ti+"Delay"]||"").split(", "),o=(r[Ti+"Duration"]||"").split(", "),a=Bi(i,o),s=(r[Ei+"Delay"]||"").split(", "),c=(r[Ei+"Duration"]||"").split(", "),u=Bi(s,c),l=0,f=0;return t===Oi?a>0&&(n=Oi,l=a,f=o.length):t===Si?u>0&&(n=Si,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?Oi:Si:null)?n===Oi?o.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===Oi&&Fi.test(r[Ti+"Property"])}}function Bi(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max.apply(null,t.map(function(t,n){return Ui(t)+Ui(e[n])}))}function Ui(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function Hi(e,t){var n=e.elm;i(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var o=Ci(e.data.transition);if(!r(o)&&!i(n._enterCb)&&1===n.nodeType){for(var a=o.css,c=o.type,u=o.enterClass,l=o.enterToClass,f=o.enterActiveClass,p=o.appearClass,d=o.appearToClass,h=o.appearActiveClass,m=o.beforeEnter,y=o.enter,g=o.afterEnter,_=o.enterCancelled,b=o.beforeAppear,$=o.appear,x=o.afterAppear,w=o.appearCancelled,C=o.duration,k=Qt,A=Qt.$vnode;A&&A.parent;)k=(A=A.parent).context;var O=!k._isMounted||!e.isRootInsert;if(!O||$||""===$){var S=O&&p?p:u,T=O&&h?h:f,j=O&&d?d:l,E=O&&b||m,M=O&&"function"==typeof $?$:y,N=O&&x||g,D=O&&w||_,I=v(s(C)?C.enter:C);0;var P=!1!==a&&!Q,F=Ji(M),R=n._enterCb=L(function(){P&&(Li(n,j),Li(n,T)),R.cancelled?(P&&Li(n,S),D&&D(n)):N&&N(n),n._enterCb=null});e.data.show||ct(e,"insert",function(){var t=n.parentNode,r=t&&t._pending&&t._pending[e.key];r&&r.tag===e.tag&&r.elm._leaveCb&&r.elm._leaveCb(),M&&M(n,R)}),E&&E(n),P&&(Ii(n,S),Ii(n,T),Di(function(){Li(n,S),R.cancelled||(Ii(n,j),F||(Vi(I)?setTimeout(R,I):Pi(n,c,R)))})),e.data.show&&(t&&t(),M&&M(n,R)),P||F||R()}}}function zi(e,t){var n=e.elm;i(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var o=Ci(e.data.transition);if(r(o)||1!==n.nodeType)return t();if(!i(n._leaveCb)){var a=o.css,c=o.type,u=o.leaveClass,l=o.leaveToClass,f=o.leaveActiveClass,p=o.beforeLeave,d=o.leave,h=o.afterLeave,m=o.leaveCancelled,y=o.delayLeave,g=o.duration,_=!1!==a&&!Q,b=Ji(d),$=v(s(g)?g.leave:g);0;var x=n._leaveCb=L(function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[e.key]=null),_&&(Li(n,l),Li(n,f)),x.cancelled?(_&&Li(n,u),m&&m(n)):(t(),h&&h(n)),n._leaveCb=null});y?y(w):w()}function w(){x.cancelled||(!e.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[e.key]=e),p&&p(n),_&&(Ii(n,u),Ii(n,f),Di(function(){Li(n,u),x.cancelled||(Ii(n,l),b||(Vi($)?setTimeout(x,$):Pi(n,c,x)))})),d&&d(n,x),_||b||x())}}function Vi(e){return"number"==typeof e&&!isNaN(e)}function Ji(e){if(r(e))return!1;var t=e.fns;return i(t)?Ji(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function Ki(e,t){!0!==t.data.show&&Hi(t)}var qi=function(e){var t,n,s={},c=e.modules,u=e.nodeOps;for(t=0;t<ar.length;++t)for(s[ar[t]]=[],n=0;n<c.length;++n)i(c[n][ar[t]])&&s[ar[t]].push(c[n][ar[t]]);function l(e){var t=u.parentNode(e);i(t)&&u.removeChild(t,e)}function f(e,t,n,r,a,c,l){if(i(e.elm)&&i(c)&&(e=c[l]=be(e)),e.isRootInsert=!a,!function(e,t,n,r){var a=e.data;if(i(a)){var c=i(e.componentInstance)&&a.keepAlive;if(i(a=a.hook)&&i(a=a.init)&&a(e,!1),i(e.componentInstance))return p(e,t),d(n,e.elm,r),o(c)&&function(e,t,n,r){for(var o,a=e;a.componentInstance;)if(a=a.componentInstance._vnode,i(o=a.data)&&i(o=o.transition)){for(o=0;o<s.activate.length;++o)s.activate[o](or,a);t.push(a);break}d(n,e.elm,r)}(e,t,n,r),!0}}(e,t,n,r)){var f=e.data,h=e.children,m=e.tag;i(m)?(e.elm=e.ns?u.createElementNS(e.ns,m):u.createElement(m,e),g(e),v(e,h,t),i(f)&&y(e,t),d(n,e.elm,r)):o(e.isComment)?(e.elm=u.createComment(e.text),d(n,e.elm,r)):(e.elm=u.createTextNode(e.text),d(n,e.elm,r))}}function p(e,t){i(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingInsert),e.data.pendingInsert=null),e.elm=e.componentInstance.$el,m(e)?(y(e,t),g(e)):(ir(e),t.push(e))}function d(e,t,n){i(e)&&(i(n)?u.parentNode(n)===e&&u.insertBefore(e,t,n):u.appendChild(e,t))}function v(e,t,n){if(Array.isArray(t))for(var r=0;r<t.length;++r)f(t[r],n,e.elm,null,!0,t,r);else a(e.text)&&u.appendChild(e.elm,u.createTextNode(String(e.text)))}function m(e){for(;e.componentInstance;)e=e.componentInstance._vnode;return i(e.tag)}function y(e,n){for(var r=0;r<s.create.length;++r)s.create[r](or,e);i(t=e.data.hook)&&(i(t.create)&&t.create(or,e),i(t.insert)&&n.push(e))}function g(e){var t;if(i(t=e.fnScopeId))u.setStyleScope(e.elm,t);else for(var n=e;n;)i(t=n.context)&&i(t=t.$options._scopeId)&&u.setStyleScope(e.elm,t),n=n.parent;i(t=Qt)&&t!==e.context&&t!==e.fnContext&&i(t=t.$options._scopeId)&&u.setStyleScope(e.elm,t)}function _(e,t,n,r,i,o){for(;r<=i;++r)f(n[r],o,e,t,!1,n,r)}function b(e){var t,n,r=e.data;if(i(r))for(i(t=r.hook)&&i(t=t.destroy)&&t(e),t=0;t<s.destroy.length;++t)s.destroy[t](e);if(i(t=e.children))for(n=0;n<e.children.length;++n)b(e.children[n])}function $(e,t,n,r){for(;n<=r;++n){var o=t[n];i(o)&&(i(o.tag)?(x(o),b(o)):l(o.elm))}}function x(e,t){if(i(t)||i(e.data)){var n,r=s.remove.length+1;for(i(t)?t.listeners+=r:t=function(e,t){function n(){0==--n.listeners&&l(e)}return n.listeners=t,n}(e.elm,r),i(n=e.componentInstance)&&i(n=n._vnode)&&i(n.data)&&x(n,t),n=0;n<s.remove.length;++n)s.remove[n](e,t);i(n=e.data.hook)&&i(n=n.remove)?n(e,t):t()}else l(e.elm)}function w(e,t,n,r){for(var o=n;o<r;o++){var a=t[o];if(i(a)&&sr(e,a))return o}}function C(e,t,n,a,c,l){if(e!==t){i(t.elm)&&i(a)&&(t=a[c]=be(t));var p=t.elm=e.elm;if(o(e.isAsyncPlaceholder))i(t.asyncFactory.resolved)?O(e.elm,t,n):t.isAsyncPlaceholder=!0;else if(o(t.isStatic)&&o(e.isStatic)&&t.key===e.key&&(o(t.isCloned)||o(t.isOnce)))t.componentInstance=e.componentInstance;else{var d,v=t.data;i(v)&&i(d=v.hook)&&i(d=d.prepatch)&&d(e,t);var h=e.children,y=t.children;if(i(v)&&m(t)){for(d=0;d<s.update.length;++d)s.update[d](e,t);i(d=v.hook)&&i(d=d.update)&&d(e,t)}r(t.text)?i(h)&&i(y)?h!==y&&function(e,t,n,o,a){for(var s,c,l,p=0,d=0,v=t.length-1,h=t[0],m=t[v],y=n.length-1,g=n[0],b=n[y],x=!a;p<=v&&d<=y;)r(h)?h=t[++p]:r(m)?m=t[--v]:sr(h,g)?(C(h,g,o,n,d),h=t[++p],g=n[++d]):sr(m,b)?(C(m,b,o,n,y),m=t[--v],b=n[--y]):sr(h,b)?(C(h,b,o,n,y),x&&u.insertBefore(e,h.elm,u.nextSibling(m.elm)),h=t[++p],b=n[--y]):sr(m,g)?(C(m,g,o,n,d),x&&u.insertBefore(e,m.elm,h.elm),m=t[--v],g=n[++d]):(r(s)&&(s=cr(t,p,v)),r(c=i(g.key)?s[g.key]:w(g,t,p,v))?f(g,o,e,h.elm,!1,n,d):sr(l=t[c],g)?(C(l,g,o,n,d),t[c]=void 0,x&&u.insertBefore(e,l.elm,h.elm)):f(g,o,e,h.elm,!1,n,d),g=n[++d]);p>v?_(e,r(n[y+1])?null:n[y+1].elm,n,d,y,o):d>y&&$(0,t,p,v)}(p,h,y,n,l):i(y)?(i(e.text)&&u.setTextContent(p,""),_(p,null,y,0,y.length-1,n)):i(h)?$(0,h,0,h.length-1):i(e.text)&&u.setTextContent(p,""):e.text!==t.text&&u.setTextContent(p,t.text),i(v)&&i(d=v.hook)&&i(d=d.postpatch)&&d(e,t)}}}function k(e,t,n){if(o(n)&&i(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r<t.length;++r)t[r].data.hook.insert(t[r])}var A=h("attrs,class,staticClass,staticStyle,key");function O(e,t,n,r){var a,s=t.tag,c=t.data,u=t.children;if(r=r||c&&c.pre,t.elm=e,o(t.isComment)&&i(t.asyncFactory))return t.isAsyncPlaceholder=!0,!0;if(i(c)&&(i(a=c.hook)&&i(a=a.init)&&a(t,!0),i(a=t.componentInstance)))return p(t,n),!0;if(i(s)){if(i(u))if(e.hasChildNodes())if(i(a=c)&&i(a=a.domProps)&&i(a=a.innerHTML)){if(a!==e.innerHTML)return!1}else{for(var l=!0,f=e.firstChild,d=0;d<u.length;d++){if(!f||!O(f,u[d],n,r)){l=!1;break}f=f.nextSibling}if(!l||f)return!1}else v(t,u,n);if(i(c)){var h=!1;for(var m in c)if(!A(m)){h=!0,y(t,n);break}!h&&c.class&&it(c.class)}}else e.data!==t.text&&(e.data=t.text);return!0}return function(e,t,n,a){if(!r(t)){var c,l=!1,p=[];if(r(e))l=!0,f(t,p);else{var d=i(e.nodeType);if(!d&&sr(e,t))C(e,t,p,null,null,a);else{if(d){if(1===e.nodeType&&e.hasAttribute(P)&&(e.removeAttribute(P),n=!0),o(n)&&O(e,t,p))return k(t,p,!0),e;c=e,e=new me(u.tagName(c).toLowerCase(),{},[],void 0,c)}var v=e.elm,h=u.parentNode(v);if(f(t,p,v._leaveCb?null:h,u.nextSibling(v)),i(t.parent))for(var y=t.parent,g=m(t);y;){for(var _=0;_<s.destroy.length;++_)s.destroy[_](y);if(y.elm=t.elm,g){for(var x=0;x<s.create.length;++x)s.create[x](or,y);var w=y.data.hook.insert;if(w.merged)for(var A=1;A<w.fns.length;A++)w.fns[A]()}else ir(y);y=y.parent}i(h)?$(0,[e],0,0):i(e.tag)&&b(e)}}return k(t,p,l),t.elm}i(e)&&b(e)}}({nodeOps:nr,modules:[_r,Or,ai,ui,bi,q?{create:Ki,activate:Ki,remove:function(e,t){!0!==e.data.show?zi(e,t):t()}}:{}].concat(hr)});Q&&document.addEventListener("selectionchange",function(){var e=document.activeElement;e&&e.vmodel&&to(e,"input")});var Wi={inserted:function(e,t,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?ct(n,"postpatch",function(){Wi.componentUpdated(e,t,n)}):Gi(e,t,n.context),e._vOptions=[].map.call(e.options,Qi)):("textarea"===n.tag||er(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",Yi),e.addEventListener("compositionend",eo),e.addEventListener("change",eo),Q&&(e.vmodel=!0)))},componentUpdated:function(e,t,n){if("select"===n.tag){Gi(e,t,n.context);var r=e._vOptions,i=e._vOptions=[].map.call(e.options,Qi);if(i.some(function(e,t){return!D(e,r[t])}))(e.multiple?t.value.some(function(e){return Xi(e,i)}):t.value!==t.oldValue&&Xi(t.value,i))&&to(e,"change")}}};function Gi(e,t,n){Zi(e,t,n),(X||Y)&&setTimeout(function(){Zi(e,t,n)},0)}function Zi(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=e.options.length;s<c;s++)if(a=e.options[s],i)o=I(r,Qi(a))>-1,a.selected!==o&&(a.selected=o);else if(D(Qi(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function Xi(e,t){return t.every(function(t){return!D(t,e)})}function Qi(e){return"_value"in e?e._value:e.value}function Yi(e){e.target.composing=!0}function eo(e){e.target.composing&&(e.target.composing=!1,to(e.target,"input"))}function to(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function no(e){return!e.componentInstance||e.data&&e.data.transition?e:no(e.componentInstance._vnode)}var ro={model:Wi,show:{bind:function(e,t,n){var r=t.value,i=(n=no(n)).data&&n.data.transition,o=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&i?(n.data.show=!0,Hi(n,function(){e.style.display=o})):e.style.display=r?o:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=no(n)).data&&n.data.transition?(n.data.show=!0,r?Hi(n,function(){e.style.display=e.__vOriginalDisplay}):zi(n,function(){e.style.display="none"})):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,i){i||(e.style.display=e.__vOriginalDisplay)}}},io={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 oo(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?oo(qt(t.children)):e}function ao(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var i=n._parentListeners;for(var o in i)t[w(o)]=i[o];return t}function so(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var co=function(e){return e.tag||Kt(e)},uo=function(e){return"show"===e.name},lo={name:"transition",props:io,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(co)).length){0;var r=this.mode;0;var i=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return i;var o=oo(i);if(!o)return i;if(this._leaving)return so(e,i);var s="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?s+"comment":s+o.tag:a(o.key)?0===String(o.key).indexOf(s)?o.key:s+o.key:o.key;var c=(o.data||(o.data={})).transition=ao(this),u=this._vnode,l=oo(u);if(o.data.directives&&o.data.directives.some(uo)&&(o.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(o,l)&&!Kt(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=T({},c);if("out-in"===r)return this._leaving=!0,ct(f,"afterLeave",function(){t._leaving=!1,t.$forceUpdate()}),so(e,i);if("in-out"===r){if(Kt(o))return u;var p,d=function(){p()};ct(c,"afterEnter",d),ct(c,"enterCancelled",d),ct(f,"delayLeave",function(e){p=e})}}return i}}},fo=T({tag:String,moveClass:String},io);function po(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function vo(e){e.data.newPos=e.elm.getBoundingClientRect()}function ho(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-n.top;if(r||i){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete fo.mode;var mo={Transition:lo,TransitionGroup:{props:fo,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var i=Yt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,i(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=ao(this),s=0;s<i.length;s++){var c=i[s];if(c.tag)if(null!=c.key&&0!==String(c.key).indexOf("__vlist"))o.push(c),n[c.key]=c,(c.data||(c.data={})).transition=a;else;}if(r){for(var u=[],l=[],f=0;f<r.length;f++){var p=r[f];p.data.transition=a,p.data.pos=p.elm.getBoundingClientRect(),n[p.key]?u.push(p):l.push(p)}this.kept=e(t,null,u),this.removed=l}return e(t,null,o)},updated:function(){var e=this.prevChildren,t=this.moveClass||(this.name||"v")+"-move";e.length&&this.hasMove(e[0].elm,t)&&(e.forEach(po),e.forEach(vo),e.forEach(ho),this._reflow=document.body.offsetHeight,e.forEach(function(e){if(e.data.moved){var n=e.elm,r=n.style;Ii(n,t),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(ji,n._moveCb=function e(r){r&&r.target!==n||r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(ji,e),n._moveCb=null,Li(n,t))})}}))},methods:{hasMove:function(e,t){if(!Ai)return!1;if(this._hasMove)return this._hasMove;var n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach(function(e){wi(n,e)}),xi(n,t),n.style.display="none",this.$el.appendChild(n);var r=Ri(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}}};kn.config.mustUseProp=In,kn.config.isReservedTag=Xn,kn.config.isReservedAttr=Nn,kn.config.getTagNamespace=Qn,kn.config.isUnknownElement=function(e){if(!q)return!0;if(Xn(e))return!1;if(e=e.toLowerCase(),null!=Yn[e])return Yn[e];var t=document.createElement(e);return e.indexOf("-")>-1?Yn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Yn[e]=/HTMLUnknownElement/.test(t.toString())},T(kn.options.directives,ro),T(kn.options.components,mo),kn.prototype.__patch__=q?qi:E,kn.prototype.$mount=function(e,t){return function(e,t,n){return e.$el=t,e.$options.render||(e.$options.render=ge),nn(e,"beforeMount"),new vn(e,function(){e._update(e._render(),n)},E,{before:function(){e._isMounted&&!e._isDestroyed&&nn(e,"beforeUpdate")}},!0),n=!1,null==e.$vnode&&(e._isMounted=!0,nn(e,"mounted")),e}(this,e=e&&q?tr(e):void 0,t)},q&&setTimeout(function(){B.devtools&&ae&&ae.emit("init",kn)},0);var yo=/\{\{((?:.|\r?\n)+?)\}\}/g,go=/[-.*+?^${}()|[\]\/\\]/g,_o=$(function(e){var t=e[0].replace(go,"\\$&"),n=e[1].replace(go,"\\$&");return new RegExp(t+"((?:.|\\n)+?)"+n,"g")});function bo(e,t){var n=t?_o(t):yo;if(n.test(e)){for(var r,i,o,a=[],s=[],c=n.lastIndex=0;r=n.exec(e);){(i=r.index)>c&&(s.push(o=e.slice(c,i)),a.push(JSON.stringify(o)));var u=Tr(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=i+r[0].length}return c<e.length&&(s.push(o=e.slice(c)),a.push(JSON.stringify(o))),{expression:a.join("+"),tokens:s}}}var $o={staticKeys:["staticClass"],transformNode:function(e,t){t.warn;var n=Ur(e,"class");n&&(e.staticClass=JSON.stringify(n));var r=Br(e,"class",!1);r&&(e.classBinding=r)},genData:function(e){var t="";return e.staticClass&&(t+="staticClass:"+e.staticClass+","),e.classBinding&&(t+="class:"+e.classBinding+","),t}};var xo,wo={staticKeys:["staticStyle"],transformNode:function(e,t){t.warn;var n=Ur(e,"style");n&&(e.staticStyle=JSON.stringify(li(n)));var r=Br(e,"style",!1);r&&(e.styleBinding=r)},genData:function(e){var t="";return e.staticStyle&&(t+="staticStyle:"+e.staticStyle+","),e.styleBinding&&(t+="style:("+e.styleBinding+"),"),t}},Co=function(e){return(xo=xo||document.createElement("div")).innerHTML=e,xo.textContent},ko=h("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),Ao=h("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),Oo=h("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),So=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,To=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,jo="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+U+"]*",Eo="((?:"+jo+"\\:)?"+jo+")",Mo=new RegExp("^<"+Eo),No=/^\s*(\/?)>/,Do=new RegExp("^<\\/"+Eo+"[^>]*>"),Io=/^<!DOCTYPE [^>]+>/i,Lo=/^<!\--/,Po=/^<!\[/,Fo=h("script,style,textarea",!0),Ro={},Bo={"<":"<",">":">",""":'"',"&":"&"," ":"\n","	":"\t","'":"'"},Uo=/&(?:lt|gt|quot|amp|#39);/g,Ho=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,zo=h("pre,textarea",!0),Vo=function(e,t){return e&&zo(e)&&"\n"===t[0]};function Jo(e,t){var n=t?Ho:Uo;return e.replace(n,function(e){return Bo[e]})}var Ko,qo,Wo,Go,Zo,Xo,Qo,Yo,ea=/^@|^v-on:/,ta=/^v-|^@|^:/,na=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,ra=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,ia=/^\(|\)$/g,oa=/^\[.*\]$/,aa=/:(.*)$/,sa=/^:|^\.|^v-bind:/,ca=/\.[^.]+/g,ua=/^v-slot(:|$)|^#/,la=/[\r\n]/,fa=/\s+/g,pa=$(Co),da="_empty_";function va(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:function(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n].name]=e[n].value;return t}(t),rawAttrsMap:{},parent:n,children:[]}}function ha(e,t){Ko=t.warn||Er,Xo=t.isPreTag||M,Qo=t.mustUseProp||M,Yo=t.getTagNamespace||M;var n=t.isReservedTag||M;(function(e){return!!e.component||!n(e.tag)}),Wo=Mr(t.modules,"transformNode"),Go=Mr(t.modules,"preTransformNode"),Zo=Mr(t.modules,"postTransformNode"),qo=t.delimiters;var r,i,o=[],a=!1!==t.preserveWhitespace,s=t.whitespace,c=!1,u=!1;function l(e){if(f(e),c||e.processed||(e=ma(e,t)),o.length||e===r||r.if&&(e.elseif||e.else)&&ga(r,{exp:e.elseif,block:e}),i&&!e.forbidden)if(e.elseif||e.else)a=e,(s=function(e){var t=e.length;for(;t--;){if(1===e[t].type)return e[t];e.pop()}}(i.children))&&s.if&&ga(s,{exp:a.elseif,block:a});else{if(e.slotScope){var n=e.slotTarget||'"default"';(i.scopedSlots||(i.scopedSlots={}))[n]=e}i.children.push(e),e.parent=i}var a,s;e.children=e.children.filter(function(e){return!e.slotScope}),f(e),e.pre&&(c=!1),Xo(e.tag)&&(u=!1);for(var l=0;l<Zo.length;l++)Zo[l](e,t)}function f(e){if(!u)for(var t;(t=e.children[e.children.length-1])&&3===t.type&&" "===t.text;)e.children.pop()}return function(e,t){for(var n,r,i=[],o=t.expectHTML,a=t.isUnaryTag||M,s=t.canBeLeftOpenTag||M,c=0;e;){if(n=e,r&&Fo(r)){var u=0,l=r.toLowerCase(),f=Ro[l]||(Ro[l]=new RegExp("([\\s\\S]*?)(</"+l+"[^>]*>)","i")),p=e.replace(f,function(e,n,r){return u=r.length,Fo(l)||"noscript"===l||(n=n.replace(/<!\--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),Vo(l,n)&&(n=n.slice(1)),t.chars&&t.chars(n),""});c+=e.length-p.length,e=p,A(l,c-u,c)}else{var d=e.indexOf("<");if(0===d){if(Lo.test(e)){var v=e.indexOf("--\x3e");if(v>=0){t.shouldKeepComment&&t.comment(e.substring(4,v),c,c+v+3),w(v+3);continue}}if(Po.test(e)){var h=e.indexOf("]>");if(h>=0){w(h+2);continue}}var m=e.match(Io);if(m){w(m[0].length);continue}var y=e.match(Do);if(y){var g=c;w(y[0].length),A(y[1],g,c);continue}var _=C();if(_){k(_),Vo(_.tagName,e)&&w(1);continue}}var b=void 0,$=void 0,x=void 0;if(d>=0){for($=e.slice(d);!(Do.test($)||Mo.test($)||Lo.test($)||Po.test($)||(x=$.indexOf("<",1))<0);)d+=x,$=e.slice(d);b=e.substring(0,d)}d<0&&(b=e),b&&w(b.length),t.chars&&b&&t.chars(b,c-b.length,c)}if(e===n){t.chars&&t.chars(e);break}}function w(t){c+=t,e=e.substring(t)}function C(){var t=e.match(Mo);if(t){var n,r,i={tagName:t[1],attrs:[],start:c};for(w(t[0].length);!(n=e.match(No))&&(r=e.match(To)||e.match(So));)r.start=c,w(r[0].length),r.end=c,i.attrs.push(r);if(n)return i.unarySlash=n[1],w(n[0].length),i.end=c,i}}function k(e){var n=e.tagName,c=e.unarySlash;o&&("p"===r&&Oo(n)&&A(r),s(n)&&r===n&&A(n));for(var u=a(n)||!!c,l=e.attrs.length,f=new Array(l),p=0;p<l;p++){var d=e.attrs[p],v=d[3]||d[4]||d[5]||"",h="a"===n&&"href"===d[1]?t.shouldDecodeNewlinesForHref:t.shouldDecodeNewlines;f[p]={name:d[1],value:Jo(v,h)}}u||(i.push({tag:n,lowerCasedTag:n.toLowerCase(),attrs:f,start:e.start,end:e.end}),r=n),t.start&&t.start(n,f,u,e.start,e.end)}function A(e,n,o){var a,s;if(null==n&&(n=c),null==o&&(o=c),e)for(s=e.toLowerCase(),a=i.length-1;a>=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=i.length-1;u>=a;u--)t.end&&t.end(i[u].tag,n,o);i.length=a,r=a&&i[a-1].tag}else"br"===s?t.start&&t.start(e,[],!0,n,o):"p"===s&&(t.start&&t.start(e,[],!1,n,o),t.end&&t.end(e,n,o))}A()}(e,{warn:Ko,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,outputSourceRange:t.outputSourceRange,start:function(e,n,a,s){var f=i&&i.ns||Yo(e);X&&"svg"===f&&(n=function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];$a.test(r.name)||(r.name=r.name.replace(xa,""),t.push(r))}return t}(n));var p,d=va(e,n,i);f&&(d.ns=f),"style"!==(p=d).tag&&("script"!==p.tag||p.attrsMap.type&&"text/javascript"!==p.attrsMap.type)||oe()||(d.forbidden=!0);for(var v=0;v<Go.length;v++)d=Go[v](d,t)||d;c||(!function(e){null!=Ur(e,"v-pre")&&(e.pre=!0)}(d),d.pre&&(c=!0)),Xo(d.tag)&&(u=!0),c?function(e){var t=e.attrsList,n=t.length;if(n)for(var r=e.attrs=new Array(n),i=0;i<n;i++)r[i]={name:t[i].name,value:JSON.stringify(t[i].value)},null!=t[i].start&&(r[i].start=t[i].start,r[i].end=t[i].end);else e.pre||(e.plain=!0)}(d):d.processed||(ya(d),function(e){var t=Ur(e,"v-if");if(t)e.if=t,ga(e,{exp:t,block:e});else{null!=Ur(e,"v-else")&&(e.else=!0);var n=Ur(e,"v-else-if");n&&(e.elseif=n)}}(d),function(e){null!=Ur(e,"v-once")&&(e.once=!0)}(d)),r||(r=d),a?l(d):(i=d,o.push(d))},end:function(e,t,n){var r=o[o.length-1];o.length-=1,i=o[o.length-1],l(r)},chars:function(e,t,n){if(i&&(!X||"textarea"!==i.tag||i.attrsMap.placeholder!==e)){var r,o,l,f=i.children;if(e=u||e.trim()?"script"===(r=i).tag||"style"===r.tag?e:pa(e):f.length?s?"condense"===s&&la.test(e)?"":" ":a?" ":"":"")"condense"===s&&(e=e.replace(fa," ")),!c&&" "!==e&&(o=bo(e,qo))?l={type:2,expression:o.expression,tokens:o.tokens,text:e}:" "===e&&f.length&&" "===f[f.length-1].text||(l={type:3,text:e}),l&&f.push(l)}},comment:function(e,t,n){if(i){var r={type:3,text:e,isComment:!0};0,i.children.push(r)}}}),r}function ma(e,t){var n,r;!function(e){var t=Br(e,"key");if(t){e.key=t}}(e),e.plain=!e.key&&!e.scopedSlots&&!e.attrsList.length,(r=Br(n=e,"ref"))&&(n.ref=r,n.refInFor=function(e){for(var t=e;t;){if(void 0!==t.for)return!0;t=t.parent}return!1}(n)),function(e){var t;"template"===e.tag?(t=Ur(e,"scope"),e.slotScope=t||Ur(e,"slot-scope")):(t=Ur(e,"slot-scope"))&&(e.slotScope=t);var n=Br(e,"slot");n&&(e.slotTarget='""'===n?'"default"':n,e.slotTargetDynamic=!(!e.attrsMap[":slot"]&&!e.attrsMap["v-bind:slot"]),"template"===e.tag||e.slotScope||Dr(e,"slot",n,Rr(e,"slot")));if("template"===e.tag){var r=Hr(e,ua);if(r){0;var i=_a(r),o=i.name,a=i.dynamic;e.slotTarget=o,e.slotTargetDynamic=a,e.slotScope=r.value||da}}else{var s=Hr(e,ua);if(s){0;var c=e.scopedSlots||(e.scopedSlots={}),u=_a(s),l=u.name,f=u.dynamic,p=c[l]=va("template",[],e);p.slotTarget=l,p.slotTargetDynamic=f,p.children=e.children.filter(function(e){if(!e.slotScope)return e.parent=p,!0}),p.slotScope=s.value||da,e.children=[],e.plain=!1}}}(e),function(e){"slot"===e.tag&&(e.slotName=Br(e,"name"))}(e),function(e){var t;(t=Br(e,"is"))&&(e.component=t);null!=Ur(e,"inline-template")&&(e.inlineTemplate=!0)}(e);for(var i=0;i<Wo.length;i++)e=Wo[i](e,t)||e;return function(e){var t,n,r,i,o,a,s,c,u=e.attrsList;for(t=0,n=u.length;t<n;t++){if(r=i=u[t].name,o=u[t].value,ta.test(r))if(e.hasBindings=!0,(a=ba(r.replace(ta,"")))&&(r=r.replace(ca,"")),sa.test(r))r=r.replace(sa,""),o=Tr(o),(c=oa.test(r))&&(r=r.slice(1,-1)),a&&(a.prop&&!c&&"innerHtml"===(r=w(r))&&(r="innerHTML"),a.camel&&!c&&(r=w(r)),a.sync&&(s=Jr(o,"$event"),c?Fr(e,'"update:"+('+r+")",s,null,!1,0,u[t],!0):(Fr(e,"update:"+w(r),s,null,!1,0,u[t]),A(r)!==w(r)&&Fr(e,"update:"+A(r),s,null,!1,0,u[t])))),a&&a.prop||!e.component&&Qo(e.tag,e.attrsMap.type,r)?Nr(e,r,o,u[t],c):Dr(e,r,o,u[t],c);else if(ea.test(r))r=r.replace(ea,""),(c=oa.test(r))&&(r=r.slice(1,-1)),Fr(e,r,o,a,!1,0,u[t],c);else{var l=(r=r.replace(ta,"")).match(aa),f=l&&l[1];c=!1,f&&(r=r.slice(0,-(f.length+1)),oa.test(f)&&(f=f.slice(1,-1),c=!0)),Lr(e,r,i,o,f,c,a,u[t])}else Dr(e,r,JSON.stringify(o),u[t]),!e.component&&"muted"===r&&Qo(e.tag,e.attrsMap.type,r)&&Nr(e,r,"true",u[t])}}(e),e}function ya(e){var t;if(t=Ur(e,"v-for")){var n=function(e){var t=e.match(na);if(!t)return;var n={};n.for=t[2].trim();var r=t[1].trim().replace(ia,""),i=r.match(ra);i?(n.alias=r.replace(ra,"").trim(),n.iterator1=i[1].trim(),i[2]&&(n.iterator2=i[2].trim())):n.alias=r;return n}(t);n&&T(e,n)}}function ga(e,t){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push(t)}function _a(e){var t=e.name.replace(ua,"");return t||"#"!==e.name[0]&&(t="default"),oa.test(t)?{name:t.slice(1,-1),dynamic:!0}:{name:'"'+t+'"',dynamic:!1}}function ba(e){var t=e.match(ca);if(t){var n={};return t.forEach(function(e){n[e.slice(1)]=!0}),n}}var $a=/^xmlns:NS\d+/,xa=/^NS\d+:/;function wa(e){return va(e.tag,e.attrsList.slice(),e.parent)}var Ca=[$o,wo,{preTransformNode:function(e,t){if("input"===e.tag){var n,r=e.attrsMap;if(!r["v-model"])return;if((r[":type"]||r["v-bind:type"])&&(n=Br(e,"type")),r.type||n||!r["v-bind"]||(n="("+r["v-bind"]+").type"),n){var i=Ur(e,"v-if",!0),o=i?"&&("+i+")":"",a=null!=Ur(e,"v-else",!0),s=Ur(e,"v-else-if",!0),c=wa(e);ya(c),Ir(c,"type","checkbox"),ma(c,t),c.processed=!0,c.if="("+n+")==='checkbox'"+o,ga(c,{exp:c.if,block:c});var u=wa(e);Ur(u,"v-for",!0),Ir(u,"type","radio"),ma(u,t),ga(c,{exp:"("+n+")==='radio'"+o,block:u});var l=wa(e);return Ur(l,"v-for",!0),Ir(l,":type",n),ma(l,t),ga(c,{exp:i,block:l}),a?c.else=!0:s&&(c.elseif=s),c}}}}];var ka,Aa,Oa={expectHTML:!0,modules:Ca,directives:{model:function(e,t,n){n;var r=t.value,i=t.modifiers,o=e.tag,a=e.attrsMap.type;if(e.component)return Vr(e,r,i),!1;if("select"===o)!function(e,t,n){var r='var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(n&&n.number?"_n(val)":"val")+"});";r=r+" "+Jr(t,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),Fr(e,"change",r,null,!0)}(e,r,i);else if("input"===o&&"checkbox"===a)!function(e,t,n){var r=n&&n.number,i=Br(e,"value")||"null",o=Br(e,"true-value")||"true",a=Br(e,"false-value")||"false";Nr(e,"checked","Array.isArray("+t+")?_i("+t+","+i+")>-1"+("true"===o?":("+t+")":":_q("+t+","+o+")")),Fr(e,"change","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Jr(t,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Jr(t,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Jr(t,"$$c")+"}",null,!0)}(e,r,i);else if("input"===o&&"radio"===a)!function(e,t,n){var r=n&&n.number,i=Br(e,"value")||"null";Nr(e,"checked","_q("+t+","+(i=r?"_n("+i+")":i)+")"),Fr(e,"change",Jr(t,i),null,!0)}(e,r,i);else if("input"===o||"textarea"===o)!function(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,u=o?"change":"range"===r?Qr:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=Jr(t,l);c&&(f="if($event.target.composing)return;"+f),Nr(e,"value","("+t+")"),Fr(e,u,f,null,!0),(s||a)&&Fr(e,"blur","$forceUpdate()")}(e,r,i);else if(!B.isReservedTag(o))return Vr(e,r,i),!1;return!0},text:function(e,t){t.value&&Nr(e,"textContent","_s("+t.value+")",t)},html:function(e,t){t.value&&Nr(e,"innerHTML","_s("+t.value+")",t)}},isPreTag:function(e){return"pre"===e},isUnaryTag:ko,mustUseProp:In,canBeLeftOpenTag:Ao,isReservedTag:Xn,getTagNamespace:Qn,staticKeys:function(e){return e.reduce(function(e,t){return e.concat(t.staticKeys||[])},[]).join(",")}(Ca)},Sa=$(function(e){return h("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(e?","+e:""))});function Ta(e,t){e&&(ka=Sa(t.staticKeys||""),Aa=t.isReservedTag||M,function e(t){t.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||m(e.tag)||!Aa(e.tag)||function(e){for(;e.parent;){if("template"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every(ka)))}(t);if(1===t.type){if(!Aa(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var n=0,r=t.children.length;n<r;n++){var i=t.children[n];e(i),i.static||(t.static=!1)}if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++){var s=t.ifConditions[o].block;e(s),s.static||(t.static=!1)}}}(e),function e(t,n){if(1===t.type){if((t.static||t.once)&&(t.staticInFor=n),t.static&&t.children.length&&(1!==t.children.length||3!==t.children[0].type))return void(t.staticRoot=!0);if(t.staticRoot=!1,t.children)for(var r=0,i=t.children.length;r<i;r++)e(t.children[r],n||!!t.for);if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++)e(t.ifConditions[o].block,n)}}(e,!1))}var ja=/^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/,Ea=/\([^)]*?\);*$/,Ma=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Na={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Da={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Ia=function(e){return"if("+e+")return null;"},La={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Ia("$event.target !== $event.currentTarget"),ctrl:Ia("!$event.ctrlKey"),shift:Ia("!$event.shiftKey"),alt:Ia("!$event.altKey"),meta:Ia("!$event.metaKey"),left:Ia("'button' in $event && $event.button !== 0"),middle:Ia("'button' in $event && $event.button !== 1"),right:Ia("'button' in $event && $event.button !== 2")};function Pa(e,t){var n=t?"nativeOn:":"on:",r="",i="";for(var o in e){var a=Fa(e[o]);e[o]&&e[o].dynamic?i+=o+","+a+",":r+='"'+o+'":'+a+","}return r="{"+r.slice(0,-1)+"}",i?n+"_d("+r+",["+i.slice(0,-1)+"])":n+r}function Fa(e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map(function(e){return Fa(e)}).join(",")+"]";var t=Ma.test(e.value),n=ja.test(e.value),r=Ma.test(e.value.replace(Ea,""));if(e.modifiers){var i="",o="",a=[];for(var s in e.modifiers)if(La[s])o+=La[s],Na[s]&&a.push(s);else if("exact"===s){var c=e.modifiers;o+=Ia(["ctrl","shift","alt","meta"].filter(function(e){return!c[e]}).map(function(e){return"$event."+e+"Key"}).join("||"))}else a.push(s);return a.length&&(i+=function(e){return"if(!$event.type.indexOf('key')&&"+e.map(Ra).join("&&")+")return null;"}(a)),o&&(i+=o),"function($event){"+i+(t?"return "+e.value+"($event)":n?"return ("+e.value+")($event)":r?"return "+e.value:e.value)+"}"}return t||n?e.value:"function($event){"+(r?"return "+e.value:e.value)+"}"}function Ra(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var n=Na[e],r=Da[e];return"_k($event.keyCode,"+JSON.stringify(e)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var Ba={on:function(e,t){e.wrapListeners=function(e){return"_g("+e+","+t.value+")"}},bind:function(e,t){e.wrapData=function(n){return"_b("+n+",'"+e.tag+"',"+t.value+","+(t.modifiers&&t.modifiers.prop?"true":"false")+(t.modifiers&&t.modifiers.sync?",true":"")+")"}},cloak:E},Ua=function(e){this.options=e,this.warn=e.warn||Er,this.transforms=Mr(e.modules,"transformCode"),this.dataGenFns=Mr(e.modules,"genData"),this.directives=T(T({},Ba),e.directives);var t=e.isReservedTag||M;this.maybeComponent=function(e){return!!e.component||!t(e.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Ha(e,t){var n=new Ua(t);return{render:"with(this){return "+(e?za(e,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function za(e,t){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&!e.staticProcessed)return Va(e,t);if(e.once&&!e.onceProcessed)return Ja(e,t);if(e.for&&!e.forProcessed)return qa(e,t);if(e.if&&!e.ifProcessed)return Ka(e,t);if("template"!==e.tag||e.slotTarget||t.pre){if("slot"===e.tag)return function(e,t){var n=e.slotName||'"default"',r=Xa(e,t),i="_t("+n+(r?","+r:""),o=e.attrs||e.dynamicAttrs?es((e.attrs||[]).concat(e.dynamicAttrs||[]).map(function(e){return{name:w(e.name),value:e.value,dynamic:e.dynamic}})):null,a=e.attrsMap["v-bind"];!o&&!a||r||(i+=",null");o&&(i+=","+o);a&&(i+=(o?"":",null")+","+a);return i+")"}(e,t);var n;if(e.component)n=function(e,t,n){var r=t.inlineTemplate?null:Xa(t,n,!0);return"_c("+e+","+Wa(t,n)+(r?","+r:"")+")"}(e.component,e,t);else{var r;(!e.plain||e.pre&&t.maybeComponent(e))&&(r=Wa(e,t));var i=e.inlineTemplate?null:Xa(e,t,!0);n="_c('"+e.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o<t.transforms.length;o++)n=t.transforms[o](e,n);return n}return Xa(e,t)||"void 0"}function Va(e,t){e.staticProcessed=!0;var n=t.pre;return e.pre&&(t.pre=e.pre),t.staticRenderFns.push("with(this){return "+za(e,t)+"}"),t.pre=n,"_m("+(t.staticRenderFns.length-1)+(e.staticInFor?",true":"")+")"}function Ja(e,t){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return Ka(e,t);if(e.staticInFor){for(var n="",r=e.parent;r;){if(r.for){n=r.key;break}r=r.parent}return n?"_o("+za(e,t)+","+t.onceId+++","+n+")":za(e,t)}return Va(e,t)}function Ka(e,t,n,r){return e.ifProcessed=!0,function e(t,n,r,i){if(!t.length)return i||"_e()";var o=t.shift();return o.exp?"("+o.exp+")?"+a(o.block)+":"+e(t,n,r,i):""+a(o.block);function a(e){return r?r(e,n):e.once?Ja(e,n):za(e,n)}}(e.ifConditions.slice(),t,n,r)}function qa(e,t,n,r){var i=e.for,o=e.alias,a=e.iterator1?","+e.iterator1:"",s=e.iterator2?","+e.iterator2:"";return e.forProcessed=!0,(r||"_l")+"(("+i+"),function("+o+a+s+"){return "+(n||za)(e,t)+"})"}function Wa(e,t){var n="{",r=function(e,t){var n=e.directives;if(!n)return;var r,i,o,a,s="directives:[",c=!1;for(r=0,i=n.length;r<i;r++){o=n[r],a=!0;var u=t.directives[o.name];u&&(a=!!u(e,o,t.warn)),a&&(c=!0,s+='{name:"'+o.name+'",rawName:"'+o.rawName+'"'+(o.value?",value:("+o.value+"),expression:"+JSON.stringify(o.value):"")+(o.arg?",arg:"+(o.isDynamicArg?o.arg:'"'+o.arg+'"'):"")+(o.modifiers?",modifiers:"+JSON.stringify(o.modifiers):"")+"},")}if(c)return s.slice(0,-1)+"]"}(e,t);r&&(n+=r+","),e.key&&(n+="key:"+e.key+","),e.ref&&(n+="ref:"+e.ref+","),e.refInFor&&(n+="refInFor:true,"),e.pre&&(n+="pre:true,"),e.component&&(n+='tag:"'+e.tag+'",');for(var i=0;i<t.dataGenFns.length;i++)n+=t.dataGenFns[i](e);if(e.attrs&&(n+="attrs:"+es(e.attrs)+","),e.props&&(n+="domProps:"+es(e.props)+","),e.events&&(n+=Pa(e.events,!1)+","),e.nativeEvents&&(n+=Pa(e.nativeEvents,!0)+","),e.slotTarget&&!e.slotScope&&(n+="slot:"+e.slotTarget+","),e.scopedSlots&&(n+=function(e,t,n){var r=Object.keys(t).some(function(e){var n=t[e];return n.slotTargetDynamic||n.if||n.for||Ga(n)}),i=!!e.if;if(!r)for(var o=e.parent;o;){if(o.slotScope&&o.slotScope!==da||o.for){r=!0;break}o.if&&(i=!0),o=o.parent}var a=Object.keys(t).map(function(e){return Za(t[e],n)}).join(",");return"scopedSlots:_u(["+a+"]"+(r?",null,true":"")+(!r&&i?",null,false,"+function(e){var t=5381,n=e.length;for(;n;)t=33*t^e.charCodeAt(--n);return t>>>0}(a):"")+")"}(e,e.scopedSlots,t)+","),e.model&&(n+="model:{value:"+e.model.value+",callback:"+e.model.callback+",expression:"+e.model.expression+"},"),e.inlineTemplate){var o=function(e,t){var n=e.children[0];0;if(n&&1===n.type){var r=Ha(n,t.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map(function(e){return"function(){"+e+"}"}).join(",")+"]}"}}(e,t);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",e.dynamicAttrs&&(n="_b("+n+',"'+e.tag+'",'+es(e.dynamicAttrs)+")"),e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function Ga(e){return 1===e.type&&("slot"===e.tag||e.children.some(Ga))}function Za(e,t){var n=e.attrsMap["slot-scope"];if(e.if&&!e.ifProcessed&&!n)return Ka(e,t,Za,"null");if(e.for&&!e.forProcessed)return qa(e,t,Za);var r=e.slotScope===da?"":String(e.slotScope),i="function("+r+"){return "+("template"===e.tag?e.if&&n?"("+e.if+")?"+(Xa(e,t)||"undefined")+":undefined":Xa(e,t)||"undefined":za(e,t))+"}",o=r?"":",proxy:true";return"{key:"+(e.slotTarget||'"default"')+",fn:"+i+o+"}"}function Xa(e,t,n,r,i){var o=e.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?t.maybeComponent(a)?",1":",0":"";return""+(r||za)(a,t)+s}var c=n?function(e,t){for(var n=0,r=0;r<e.length;r++){var i=e[r];if(1===i.type){if(Qa(i)||i.ifConditions&&i.ifConditions.some(function(e){return Qa(e.block)})){n=2;break}(t(i)||i.ifConditions&&i.ifConditions.some(function(e){return t(e.block)}))&&(n=1)}}return n}(o,t.maybeComponent):0,u=i||Ya;return"["+o.map(function(e){return u(e,t)}).join(",")+"]"+(c?","+c:"")}}function Qa(e){return void 0!==e.for||"template"===e.tag||"slot"===e.tag}function Ya(e,t){return 1===e.type?za(e,t):3===e.type&&e.isComment?(r=e,"_e("+JSON.stringify(r.text)+")"):"_v("+(2===(n=e).type?n.expression:ts(JSON.stringify(n.text)))+")";var n,r}function es(e){for(var t="",n="",r=0;r<e.length;r++){var i=e[r],o=ts(i.value);i.dynamic?n+=i.name+","+o+",":t+='"'+i.name+'":'+o+","}return t="{"+t.slice(0,-1)+"}",n?"_d("+t+",["+n.slice(0,-1)+"])":t}function ts(e){return e.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b"),new RegExp("\\b"+"delete,typeof,void".split(",").join("\\s*\\([^\\)]*\\)|\\b")+"\\s*\\([^\\)]*\\)");function ns(e,t){try{return new Function(e)}catch(n){return t.push({err:n,code:e}),E}}function rs(e){var t=Object.create(null);return function(n,r,i){(r=T({},r)).warn;delete r.warn;var o=r.delimiters?String(r.delimiters)+n:n;if(t[o])return t[o];var a=e(n,r);var s={},c=[];return s.render=ns(a.render,c),s.staticRenderFns=a.staticRenderFns.map(function(e){return ns(e,c)}),t[o]=s}}var is,os,as=(is=function(e,t){var n=ha(e.trim(),t);!1!==t.optimize&&Ta(n,t);var r=Ha(n,t);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}},function(e){function t(t,n){var r=Object.create(e),i=[],o=[],a=function(e,t,n){(n?o:i).push(e)};if(n)for(var s in n.modules&&(r.modules=(e.modules||[]).concat(n.modules)),n.directives&&(r.directives=T(Object.create(e.directives||null),n.directives)),n)"modules"!==s&&"directives"!==s&&(r[s]=n[s]);r.warn=a;var c=is(t.trim(),r);return c.errors=i,c.tips=o,c}return{compile:t,compileToFunctions:rs(t)}})(Oa),ss=(as.compile,as.compileToFunctions);function cs(e){return(os=os||document.createElement("div")).innerHTML=e?'<a href="\n"/>':'<div a="\n"/>',os.innerHTML.indexOf(" ")>0}var us=!!q&&cs(!1),ls=!!q&&cs(!0),fs=$(function(e){var t=tr(e);return t&&t.innerHTML}),ps=kn.prototype.$mount;kn.prototype.$mount=function(e,t){if((e=e&&tr(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=fs(r));else{if(!r.nodeType)return this;r=r.innerHTML}else e&&(r=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement("div");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(r){0;var i=ss(r,{outputSourceRange:!1,shouldDecodeNewlines:us,shouldDecodeNewlinesForHref:ls,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return ps.call(this,e,t)},kn.compile=ss,t.a=kn}).call(t,n("DuR2"))},"77Pl":function(e,t,n){var r=n("EqjI");e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},"7KvD":function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},Cdx3:function(e,t,n){var r=n("sB3e"),i=n("lktj");n("uqUo")("keys",function(){return function(e){return i(r(e))}})},D2L2:function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},DuR2:function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},EqjI:function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},FeBl:function(e,t){var n=e.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},Ibhu:function(e,t,n){var r=n("D2L2"),i=n("TcQ7"),o=n("vFc/")(!1),a=n("ax3d")("IE_PROTO");e.exports=function(e,t){var n,s=i(e),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;t.length>c;)r(s,n=t[c++])&&(~o(u,n)||u.push(n));return u}},MU5D:function(e,t,n){var r=n("R9M2");e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},MmMw:function(e,t,n){var r=n("EqjI");e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},O4g8:function(e,t){e.exports=!0},ON07:function(e,t,n){var r=n("EqjI"),i=n("7KvD").document,o=r(i)&&r(i.createElement);e.exports=function(e){return o?i.createElement(e):{}}},QRG4:function(e,t,n){var r=n("UuGF"),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},R9M2:function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},S82l:function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},SfB7:function(e,t,n){e.exports=!n("+E39")&&!n("S82l")(function(){return 7!=Object.defineProperty(n("ON07")("div"),"a",{get:function(){return 7}}).a})},TcQ7:function(e,t,n){var r=n("MU5D"),i=n("52gC");e.exports=function(e){return r(i(e))}},UuGF:function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},"VU/8":function(e,t){e.exports=function(e,t,n,r,i,o){var a,s=e=e||{},c=typeof e.default;"object"!==c&&"function"!==c||(a=e,s=e.default);var u,l="function"==typeof s?s.options:s;if(t&&(l.render=t.render,l.staticRenderFns=t.staticRenderFns,l._compiled=!0),n&&(l.functional=!0),i&&(l._scopeId=i),o?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},l._ssrRegister=u):r&&(u=r),u){var f=l.functional,p=f?l.render:l.beforeCreate;f?(l._injectStyles=u,l.render=function(e,t){return u.call(t),p(e,t)}):l.beforeCreate=p?[].concat(p,u):[u]}return{esModule:a,exports:s,options:l}}},X8DO:function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},ax3d:function(e,t,n){var r=n("e8AB")("keys"),i=n("3Eo+");e.exports=function(e){return r[e]||(r[e]=i(e))}},e8AB:function(e,t,n){var r=n("FeBl"),i=n("7KvD"),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n("O4g8")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},evD5:function(e,t,n){var r=n("77Pl"),i=n("SfB7"),o=n("MmMw"),a=Object.defineProperty;t.f=n("+E39")?Object.defineProperty:function(e,t,n){if(r(e),t=o(t,!0),r(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},fZjL:function(e,t,n){e.exports={default:n("jFbC"),__esModule:!0}},fkB2:function(e,t,n){var r=n("UuGF"),i=Math.max,o=Math.min;e.exports=function(e,t){return(e=r(e))<0?i(e+t,0):o(e,t)}},hJx8:function(e,t,n){var r=n("evD5"),i=n("X8DO");e.exports=n("+E39")?function(e,t,n){return r.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},jFbC:function(e,t,n){n("Cdx3"),e.exports=n("FeBl").Object.keys},kM2E:function(e,t,n){var r=n("7KvD"),i=n("FeBl"),o=n("+ZMJ"),a=n("hJx8"),s=n("D2L2"),c=function(e,t,n){var u,l,f,p=e&c.F,d=e&c.G,v=e&c.S,h=e&c.P,m=e&c.B,y=e&c.W,g=d?i:i[t]||(i[t]={}),_=g.prototype,b=d?r:v?r[t]:(r[t]||{}).prototype;for(u in d&&(n=t),n)(l=!p&&b&&void 0!==b[u])&&s(g,u)||(f=l?b[u]:n[u],g[u]=d&&"function"!=typeof b[u]?n[u]:m&&l?o(f,r):y&&b[u]==f?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):h&&"function"==typeof f?o(Function.call,f):f,h&&((g.virtual||(g.virtual={}))[u]=f,e&c.R&&_&&!_[u]&&a(_,u,f)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},lOnJ:function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},lktj:function(e,t,n){var r=n("Ibhu"),i=n("xnc9");e.exports=Object.keys||function(e){return r(e,i)}},mvHQ:function(e,t,n){e.exports={default:n("qkKv"),__esModule:!0}},qkKv:function(e,t,n){var r=n("FeBl"),i=r.JSON||(r.JSON={stringify:JSON.stringify});e.exports=function(e){return i.stringify.apply(i,arguments)}},sB3e:function(e,t,n){var r=n("52gC");e.exports=function(e){return Object(r(e))}},uqUo:function(e,t,n){var r=n("kM2E"),i=n("FeBl"),o=n("S82l");e.exports=function(e,t){var n=(i.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*o(function(){n(1)}),"Object",a)}},"vFc/":function(e,t,n){var r=n("TcQ7"),i=n("QRG4"),o=n("fkB2");e.exports=function(e){return function(t,n,a){var s,c=r(t),u=i(c.length),l=o(a,u);if(e&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((e||l in c)&&c[l]===n)return e||l||0;return!e&&-1}}},xnc9:function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")}});
//# sourceMappingURL=vue-task-node.js.map
================================================
FILE: build/utils.js
================================================
'use strict'
const path = require('path')
const config = require('../config')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const packageConfig = require('../package.json')
exports.assetsPath = function (_path) {
const assetsSubDirectory = process.env.NODE_ENV === 'production'
? config.build.assetsSubDirectory
: config.dev.assetsSubDirectory
return path.posix.join(assetsSubDirectory, _path)
}
exports.cssLoaders = function (options) {
options = options || {}
const cssLoader = {
loader: 'css-loader',
options: {
sourceMap: options.sourceMap
}
}
const postcssLoader = {
loader: 'postcss-loader',
options: {
sourceMap: options.sourceMap
}
}
// generate loader string to be used with extract text plugin
function generateLoaders (loader, loaderOptions) {
const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(loaders)
}
}
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', { indentedSyntax: true }),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
}
// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function (options) {
const output = []
const loaders = exports.cssLoaders(options)
for (const extension in loaders) {
const loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
use: loader
})
}
return output
}
exports.createNotifierCallback = () => {
const notifier = require('node-notifier')
return (severity, errors) => {
if (severity !== 'error') return
const error = errors[0]
const filename = error.file && error.file.split('!').pop()
notifier.notify({
title: packageConfig.name,
message: severity + ': ' + error.name,
subtitle: filename || '',
icon: path.join(__dirname, 'logo.png')
})
}
}
================================================
FILE: build/vue-loader.conf.js
================================================
'use strict'
const utils = require('./utils')
const config = require('../config')
const isProduction = process.env.NODE_ENV === 'production'
const sourceMapEnabled = isProduction
? config.build.productionSourceMap
: config.dev.cssSourceMap
module.exports = {
loaders: utils.cssLoaders({
sourceMap: sourceMapEnabled,
extract: isProduction
}),
cssSourceMap: sourceMapEnabled,
cacheBusting: config.dev.cacheBusting,
transformToRequire: {
video: ['src', 'poster'],
source: 'src',
img: 'src',
image: 'xlink:href'
}
}
================================================
FILE: build/webpack.base.conf.js
================================================
'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
const createLintingRule = () => ({
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src'), resolve('test')],
options: {
formatter: require('eslint-friendly-formatter'),
emitWarning: !config.dev.showEslintErrorsInOverlay
}
})
module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
app: './src/main.js'
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
module: {
rules: [
...(config.dev.useEslint ? [createLintingRule()] : []),
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
},
/* {
test: /\.less$/,
loader: "style-loader!css-loader!less-loader",
},*/
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
},
node: {
// prevent webpack from injecting useless setImmediate polyfill because Vue
// source contains it (although only uses it if it's native).
setImmediate: false,
// prevent webpack from injecting mocks to Node native modules
// that does not make sense for the client
dgram: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
child_process: 'empty'
}
}
================================================
FILE: build/webpack.dev.conf.js
================================================
'use strict'
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const path = require('path')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)
const devWebpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
},
// cheap-module-eval-source-map is faster for development
devtool: config.dev.devtool,
// these devServer options should be customized in /config/index.js
devServer: {
clientLogLevel: 'warning',
historyApiFallback: {
rewrites: [
{ from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
],
},
hot: true,
contentBase: false, // since we use CopyWebpackPlugin.
compress: true,
host: HOST || config.dev.host,
port: PORT || config.dev.port,
open: config.dev.autoOpenBrowser,
overlay: config.dev.errorOverlay
? { warnings: false, errors: true }
: false,
publicPath: config.dev.assetsPublicPath,
proxy: config.dev.proxyTable,
quiet: true, // necessary for FriendlyErrorsPlugin
watchOptions: {
poll: config.dev.poll,
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': require('../config/dev.env')
}),
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
new webpack.NoEmitOnErrorsPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.dev.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
module.exports = new Promise((resolve, reject) => {
portfinder.basePort = process.env.PORT || config.dev.port
portfinder.getPort((err, port) => {
if (err) {
reject(err)
} else {
// publish the new Port, necessary for e2e tests
process.env.PORT = port
// add port to devServer config
devWebpackConfig.devServer.port = port
// Add FriendlyErrorsPlugin
devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
compilationSuccessInfo: {
messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
},
onErrors: config.dev.notifyOnErrors
? utils.createNotifierCallback()
: undefined
}))
resolve(devWebpackConfig)
}
})
})
================================================
FILE: build/webpack.prod.conf.js
================================================
'use strict'
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const env = process.env.NODE_ENV === 'testing'
? require('../config/test.env')
: require('../config/prod.env')
const webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true,
usePostCSS: true
})
},
devtool: config.build.productionSourceMap ? config.build.devtool : false,
output: {
path: config.build.assetsRoot,
// filename: utils.assetsPath('js/[name].[chunkhash].js'),
// chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
//path: path.resolve(__dirname, './dist'),
publicPath: '/dist/',
filename: 'vue-task-node.[name].js',
// publicPath: process.env.NODE_ENV === 'production'
// ? config.build.assetsPublicPath
// : config.dev.assetsPublicPath
library: 'vue-task-node', // library指定的就是你使用require时的模块名,这里便是require("PayKeyboard")
libraryTarget: 'umd', //libraryTarget会生成不同umd的代码,可以只是commonjs标准的,也可以是指amd标准的,也可以只是通过script标签引入的。
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
new UglifyJsPlugin({
uglifyOptions: {
compress: {
warnings: false
}
},
sourceMap: config.build.productionSourceMap,
parallel: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css'),
// Setting the following option to `false` will not extract CSS from codesplit chunks.
// Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
// It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`,
// increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
allChunks: true,
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSPlugin({
cssProcessorOptions: config.build.productionSourceMap
? { safe: true, map: { inline: false } }
: { safe: true }
}),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: process.env.NODE_ENV === 'testing'
? 'index.html'
: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// keep module.id stable when vendor modules does not change
new webpack.HashedModuleIdsPlugin(),
// enable scope hoisting
new webpack.optimize.ModuleConcatenationPlugin(),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks (module) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
minChunks: Infinity
}),
// This instance extracts shared chunks from code splitted chunks and bundles them
// in a separate chunk, similar to the vendor chunk
// see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
new webpack.optimize.CommonsChunkPlugin({
name: 'app',
async: 'vendor-async',
children: true,
minChunks: 3
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
if (config.build.productionGzip) {
const CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
config.build.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
if (config.build.bundleAnalyzerReport) {
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig
================================================
FILE: config/dev.env.js
================================================
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})
================================================
FILE: config/index.js
================================================
'use strict'
// Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path')
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
// Various Dev Server settings
host: 'localhost', // can be overwritten by process.env.HOST
port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,
errorOverlay: true,
notifyOnErrors: true,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
// Use Eslint Loader?
// If true, your code will be linted during bundling and
// linting errors and warnings will be shown in the console.
useEslint: true,
// If true, eslint errors and warnings will also be shown in the error overlay
// in the browser.
showEslintErrorsInOverlay: false,
/**
* Source Maps
*/
// https://webpack.js.org/configuration/devtool/#development
devtool: 'cheap-module-eval-source-map',
// If you have problems debugging vue-files in devtools,
// set this to false - it *may* help
// https://vue-loader.vuejs.org/en/options.html#cachebusting
cacheBusting: true,
cssSourceMap: true
},
build: {
// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'),
// Paths
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: '/',
assetsPublicPath: './',
/**
* Source Maps
*/
productionSourceMap: true,
// https://webpack.js.org/configuration/devtool/#production
devtool: '#source-map',
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
}
}
================================================
FILE: config/prod.env.js
================================================
'use strict'
module.exports = {
NODE_ENV: '"production"'
}
================================================
FILE: config/test.env.js
================================================
'use strict'
const merge = require('webpack-merge')
const devEnv = require('./dev.env')
module.exports = merge(devEnv, {
NODE_ENV: '"testing"'
})
================================================
FILE: index.html
================================================
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>node</title>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
================================================
FILE: package.json
================================================
{
"name": "vue-task-node",
"version": "1.4.0",
"description": "TaskNode Plugin! vue-task-node is a Vue based task node mapping plug-in",
"author": "wenbing.li",
"license": "MIT",
"main": "src/lib/index.js",
"private": false,
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"lint": "eslint --ext .js,.vue src",
"build": "node build/build.js"
},
"files": [
"dist",
"src"
],
"dependencies": {
"less": "^3.9.0",
"less-loader": "^4.1.0",
"vue": "^2.5.2",
"vuex": "^3.1.1"
},
"devDependencies": {
"autoprefixer": "^7.1.2",
"babel-core": "^6.22.1",
"babel-eslint": "^8.2.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-jest": "^21.0.2",
"babel-loader": "^7.1.1",
"babel-plugin-dynamic-import-node": "^1.2.0",
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-plugin-transform-vue-jsx": "^3.5.0",
"babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0",
"babel-register": "^6.22.0",
"chalk": "^2.0.1",
"chromedriver": "^2.27.2",
"copy-webpack-plugin": "^4.0.1",
"cross-spawn": "^5.0.1",
"css-loader": "^0.28.0",
"eslint": "^4.15.0",
"eslint-config-standard": "^10.2.1",
"eslint-friendly-formatter": "^3.0.0",
"eslint-loader": "^1.7.1",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-node": "^5.2.0",
"eslint-plugin-promise": "^3.4.0",
"eslint-plugin-standard": "^3.0.1",
"eslint-plugin-vue": "^4.0.0",
"extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.4",
"friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1",
"jest": "^22.0.4",
"jest-serializer-vue": "^0.3.0",
"jquery": "^1.12.4",
"nightwatch": "^0.9.12",
"node-notifier": "^5.1.2",
"optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.2.0",
"portfinder": "^1.0.13",
"postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1",
"rimraf": "^2.6.0",
"selenium-server": "^3.0.1",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^0.5.8",
"vue-jest": "^1.0.2",
"vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.9.1",
"webpack-merge": "^4.1.0"
},
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
================================================
FILE: src/App.vue
================================================
<template>
<div id="app">
<div style="position: relative;height: 30px"></div>
<div style="width: 140px">
<task-model-tree style="padding-left: 0px;" :nodes="modelnodes"></task-model-tree>
</div>
<div class="hello" style="text-align: center">
<div class="node-model cell-left">
<ul>
<li style="border-bottom: 2px solid aliceblue;" v-for="nodeM in nodeModels" :key="nodeM.id">
<task-node-model :node="nodeM">
<span class="task-node-model-label">{{nodeM.name}}</span>
</task-node-model>
</li>
<li>
<select class="demo-line" v-model="ini_config.lineType">
<option value='Q'>曲线</option>
<option value='L'>折线</option>
<option value='ML'>直线</option>
</select>
</li>
<li>
<select class="demo-line" v-model="ini_config.isDotted">
<option :value=true>虚线</option>
<option :value=false>实线</option>
</select>
</li>
<li>
<button class="demo-btn" @click="zoomIn">放大</button>
<button class="demo-btn" @click="zoomOut">缩小</button>
</li>
</ul>
</div>
<div class="cell-right">
<task-work-area width=1000 height=600 :id="work_id" :ini="ini_config" v-on:on-add-nodemodel="onAddNodeModel" v-on:on-mouse="mouseMenu" ref="area">
<task-curve-path :areaid="work_id" :paths="paths" ref="curve" v-on:on-mouse="mouseFn" v-on:on-mouse-over="mouseOverFn" v-on:on-mouse-out="mouseOutFn"></task-curve-path>
<template v-for="node in nodes">
<task-common-node :key="node.id" :node="node" v-on:on-add-path="addPath" v-on:on-select="selectlMethod" v-on:on-drag-start="dragStart" v-on:on-drag-ging="dragGing" v-on:on-drag-end="dragEnd" :updateTem="updateCompleted" v-on:on-mouse="mouseNodeMenu"></task-common-node>
</template>
<task-initial-node :node="initialData" backgroundColor="#ff5722" v-on:on-add-path="addPath" v-on:on-select="selectlMethod" v-on:on-drag-start="dragStart" v-on:on-drag-ging="dragGing" v-on:on-drag-end="dragEnd" :updateTem="updateCompleted" v-on:on-mouse="mouseNodeMenu"></task-initial-node>
</task-work-area>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'App',
data () {
return {
modelnodes: [{
id: 1,
name: '数据',
children: [{
id: 2,
name: 'node1',
icon: 'task-icon-41',
children: []
}, {
id: 3,
name: 'node2',
icon: 'task-icon-41',
children: []
}]
}, {
id: 3,
name: 'node3',
icon: 'task-icon-43',
children: []
}],
dtl: 10,
work_id: 'work_id',
ini_config: {
lineType: 'Q',
isDotted: false,
scaling: {
ZoomX: 1,
ZoomY: 1
}
},
startNode: {},
nodeModels: [{
id: '12',
name: 'SQL'}, {
id: '13',
name: 'WorkData'}, {
id: '14',
name: 'TableToTV'}, {
id: '15',
name: '增加系列'}],
initialData: {
id: 'node4',
name: '节点4',
positionX: 300,
positionY: 60,
icon: 'task-icon-41',
inPorts: [],
outPorts: [{
id: 'node4_5'
}]
},
nodes: [{
id: 'node1',
name: '节点1',
positionX: 115,
positionY: 180,
state: 'success',
inPorts: [{
id: 'node1_1',
isConnected: true
}],
outPorts: [{
id: 'node1_4'
}]
}, {
id: 'node2',
name: '节点2',
positionX: 20,
positionY: 300,
state: 'mistake',
inPorts: [{
id: 'node2_1',
isConnected: true
}, {
id: 'node2_3',
isConnected: false
}],
outPorts: [{
id: 'node2_4'
}, {
id: 'node2_5'
}]
}, {
id: 'node3',
name: '节点3',
positionX: 340,
positionY: 315,
state: 'running',
inPorts: [{
id: 'node3_1',
isConnected: true
}, {
id: 'node3_3',
isConnected: false
}],
outPorts: [{
id: 'node3_4'
}]
}, {
id: 'node5',
name: '节点5',
positionX: 420,
positionY: 420,
icon: 'task-icon-6',
inPorts: [{
id: 'node5_1',
isConnected: true
}],
outPorts: []
}, {
id: 'node6',
name: '节点6',
positionX: 720,
positionY: 220,
icon: 'task-icon-6',
inPorts: [{
id: 'node6_1',
isConnected: false
}],
outPorts: [{
id: 'node6_2'
}, {
id: 'node6_3'
}]
}],
paths: [{
dotted: true,
ptype: 'Q',
startPort: 'node4_5',
endPort: 'node1_1'
}, {
dotted: true,
ptype: 'L',
startPort: 'node1_4',
endPort: 'node2_1'
}, {
dotted: false,
ptype: 'ML',
startPort: 'node1_4',
endPort: 'node3_1'
}, {
dotted: false,
ptype: 'L',
startPort: 'node3_4',
endPort: 'node5_1'
}]
}
},
methods: {
zoomIn (event) {
this.ini_config.scaling.ZoomX = this.ini_config.scaling.ZoomX + 0.1
this.ini_config.scaling.ZoomY = this.ini_config.scaling.ZoomY + 0.1
},
zoomOut (event) {
this.ini_config.scaling.ZoomX = this.ini_config.scaling.ZoomX - 0.1
this.ini_config.scaling.ZoomY = this.ini_config.scaling.ZoomY - 0.1
},
onAddNodeModel (event, node) {
console.log('添加节点', event.clientX, event.clientY, node)
let newNode = {}
newNode = node
newNode.id = 'node' + (this.dtl++)
newNode.positionX = node.positionX - 90 // -15 -90 定位到节点的终点
newNode.positionY = node.positionY - 15
newNode.outPorts = [{
id: newNode.id + '_' + Math.floor(Math.random() * 10)
}]
newNode.inPorts = []
this.nodes.push(newNode)
},
mouseFn (event, portData) {
console.log('mouseFn', 'on-mouse', '鼠标右击路径事件', event, portData)
},
mouseOverFn (event, portData) {
console.log('mouseFn', 'on-mouse-over', '鼠标划入路径事件', event, portData)
},
mouseOutFn (event, portData) {
console.log('mouseFn', 'on-mouse-out', '鼠标划出路径事件', event, portData)
},
selectlMethod: function (event, data, node) {
console.log('selectlMethod', 'on-select', '节点左键点击事件', event, data, node)
},
dragStart: function (event, node) {
let nodeData = event.dataTransfer.getData('nodedata')
console.log('节点开始移动', event.clientX, event.clientY, node, JSON.parse(nodeData))
this.startNode = {id: node.id, positionX: event.clientX, positionY: event.clientY}
},
dragEnd: function (event, node) {
console.log('节点移动结束', event.clientX, event.clientY, node)
let nodeXY = {}
if (window.___NODRAGEVENT) {
nodeXY.x = window.___PAGEX
nodeXY.y = window.___PAGEY
} else {
nodeXY.x = event.clientX
nodeXY.y = event.clientY
}
let me = this
this.nodes.forEach(function (item) {
if (item.id === node.id) {
item.positionX = node.positionX + (nodeXY.x - me.startNode.positionX)
item.positionY = node.positionY + (nodeXY.y - me.startNode.positionY)
}
})
if (node.id === this.initialData.id) {
this.initialData.positionX = node.positionX + (nodeXY.x - me.startNode.positionX)
this.initialData.positionY = node.positionY + (nodeXY.y - me.startNode.positionY)
}
},
addPath: function (event, startData, endData) {
let me = this
console.log('添加路径', event, startData, endData)
this.nodes.forEach(function (item) {
item.inPorts.forEach(function (ins) {
if (ins.id === endData) {
ins.isConnected = true
}
})
})
setTimeout(function () {
me.paths.push({
dotted: me.ini_config.isDotted,
ptype: me.ini_config.lineType,
startPort: startData,
endPort: endData
})
}, 200)
},
dragGing: function (event) {
console.log('节点移动中...', event.clientX, event.clientY)
},
updateCompleted: function () {
console.log('updateCompleted!!')
// 重新加载路径
this.$refs.curve.vReload()
},
mouseMenu: function (event, id) {
console.log('mouseMenu', 'on-mouse', '工作区右击事件', event, id)
},
mouseNodeMenu: function (event, node) {
console.log('mouseNodeMenu', 'on-mouse', '节点右击事件', event, node)
}
}
}
</script>
<style lang="less">
.node-model{
background-color: #eee;
width: 140px;
height: 500px;
}
.cell-left{
float: left;
}
.cell-fight{
float: left;
}
.demo-line{
width: 140px;
height: 26px;
border: none;
}
.demo-btn{
width: 48%;
background-color: #fff;
border: 1px solid #eee;
font-size: 14px;
line-height: 26px;
cursor: pointer;
}
// @import "lib/styles/index.less";
/*#app {*/
/*font-family: 'Avenir', Helvetica, Arial, sans-serif;*/
/*-webkit-font-smoothing: antialiased;*/
/*-moz-osx-font-smoothing: grayscale;*/
/*text-align: center;*/
/*color: #2c3e50;*/
/*padding: 50px;*/
/*background-color: #cccccc;*/
/*}*/
</style>
<!--
.icon {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
[class^="icon-task"], [class*=" icon-task"] {
font-family:"iconfont" !important;
/* 以下内容参照第三方图标库本身的规则 */
font-size: 18px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
>工作经历
工作地点:`云南·昆明`
工作时间:`2018年5月 - 至今`
-->
================================================
FILE: src/lib/components/depend/ModelTree.vue
================================================
<template>
<ul :class="classes">
<template v-for="node in nodes">
<tree-node :key="node.id" :node="node" v-if="node.children && node.children.length > 0"></tree-node>
<li :key="node.id" v-else>
<task-node-model :class="classesNode" :node="node">
<span :class="[node.icon ? node.icon : '']"></span>
<span>{{node.name}}</span>
</task-node-model>
</li>
</template>
</ul>
</template>
<script>
import TreeNode from './TreeNode.vue'
const prefixCls = 'model-tree'
export default {
components: {TreeNode},
name: 'ModelTree',
props: {
nodes: Array
},
data () {
return {
}
},
computed: {
classes () {
return [
`${prefixCls}`
]
},
classesNode () {
return [
`${prefixCls}-node`
]
}
}
}
</script>
================================================
FILE: src/lib/components/depend/TreeNode.vue
================================================
<template>
<li>
<div :class="classesDir" @click="open = !open">
<span class="icon" :class="[open ? 'task-icon-59': 'task-icon-58']"></span>
<span class="icon" :class="[open ? 'task-icon-61': 'task-icon-60']"></span>
<span class="tree-node-label">{{ node.name }}</span>
</div>
<task-model-tree v-show="open" :nodes="node.children"></task-model-tree>
</li>
</template>
<script>
const prefixCls = 'model-tree'
export default {
name: 'TreeNode',
props: {
node: {
id: [String, Number],
name: {
type: [String, Number],
default: '目录'
},
children: Array
}
},
data () {
return {
open: false
}
},
computed: {
classesDir () {
return [
`${prefixCls}-dir`
]
}
}
}
</script>
================================================
FILE: src/lib/components/depend/index.js
================================================
import ModelTree from './ModelTree.vue'
export default ModelTree
================================================
FILE: src/lib/components/node/README.md
================================================
================================================
FILE: src/lib/components/node/common/common.vue
================================================
<template>
<node :node="node" width=180 height=30 v-on:on-select="selectNodeMethod" v-on:on-drag-ging="dragGing" v-on:on-drag-start="dragStart" v-on:on-drag-end="dragEnd" v-on:updateTem="updateTemp" v-on:on-mouse="mouseMenu">
<div :class="classes">
<span :class="iconCls +' '+ [node.icon ? node.icon : 'task-icon-53']"></span>
<span :class="nameCls">{{node.name}}</span>
<span :class="statusCls +' '+ stateCls(node.state)"></span>
<in-common-ls :in_ports="node.inPorts" v-on:on-add-path='addPath'></in-common-ls>
<out-common-ls :out_ports="node.outPorts"></out-common-ls>
</div>
</node>
</template>
<script>
import Node from '../node.vue'
import InPort from '../../port/inport.vue'
import OutPort from '../../port/outport.vue'
import InCommonLs from './incommonls.vue'
import OutCommonLs from './outcommonls.vue'
import mixinsNode from '../../../mixins/node'
const prefixCls = 'task-common-node'
export default {
components: {
OutCommonLs,
InCommonLs,
OutPort,
InPort,
Node},
mixins: [ mixinsNode ],
name: 'CommonNode',
data () {
return {
state: ''
}
},
props: {
node: {
id: [String, Number],
name: {
type: [String, Number],
default: '节点'
},
positionX: {
type: [String, Number],
default: 0
},
positionY: {
type: [String, Number],
default: 0
},
icon: [String, Number],
state: {
type: [String, Number],
default: 'ready'
},
inPorts: {
type: Array,
default: []
},
outPorts: {
type: Array,
default: []
}
}
},
computed: {
classes () {
return [
`${prefixCls}`
]
},
iconCls () {
return [
`${prefixCls}-icon`
]
},
nameCls () {
return [
`${prefixCls}-name`
]
},
statusCls () {
return [
`${prefixCls}-status`
]
},
selectedCls () {
return [
`task-node-selected`
]
}
},
methods: {
stateCls (value) {
switch (value) {
case 'success':
return 'task-icon-ok'
case 'running':
return 'task-icon-run'
case 'ready':
return 'task-icon-wait'
case 'mistake':
return 'task-icon-error'
default:
return 'task-icon-wait'
}
}
}
}
</script>
================================================
FILE: src/lib/components/node/common/incommonls.vue
================================================
<template>
<div :class="classes" ref="port">
<template v-if="in_ports && in_ports.length > 0" v-for="(item,index) in in_ports">
<div :class="wrapCls" :key='index'>
<in-port :pid="item.id" v-on:on-add-path='addPath' :isConnected = item.isConnected></in-port>
</div>
</template>
<div :class="wrapCls"></div>
</div>
</template>
<script>
import InPort from '../../port/inport.vue'
const prefixCls = 'task-in-common-ls'
export default {
components: {InPort},
name: 'InCommonLs',
props: {
in_ports: {
type: Array
}
},
data () {
return {
}
},
computed: {
classes () {
return [
`${prefixCls}`
]
},
wrapCls () {
return [
`${prefixCls}-wrap`
]
}
},
methods: {
addPath: function (event, start, end) {
this.$emit('on-add-path', event, start, end)
}
}
}
</script>
================================================
FILE: src/lib/components/node/common/index.js
================================================
import Common from './common.vue'
export default Common
================================================
FILE: src/lib/components/node/common/outcommonls.vue
================================================
<template>
<div :class="classes">
<template v-if="out_ports && out_ports.length > 0" v-for="(item,index) in out_ports">
<div :class="wrapCls" :key='index'>
<out-port :pid="item.id"></out-port>
</div>
</template>
<div :class="wrapCls"></div>
</div>
</template>
<script>
import OutPort from '../../port/outport.vue'
const prefixCls = 'task-out-common-ls'
export default {
components: {
OutPort},
name: 'OutCommonLs',
props: {
out_ports: {
type: Array
}
},
data () {
return {
}
},
computed: {
classes () {
return [
`${prefixCls}`
]
},
wrapCls () {
return [
`${prefixCls}-wrap`
]
}
}
}
</script>
================================================
FILE: src/lib/components/node/index.js
================================================
import Node from './node.vue'
export default Node
================================================
FILE: src/lib/components/node/initial/index.js
================================================
import Initial from './initial.vue'
export default Initial
================================================
FILE: src/lib/components/node/initial/initial.vue
================================================
<template>
<node :node="node" width=30 height=30 v-on:on-select="selectNodeMethod" v-on:on-drag-ging="dragGing" v-on:on-drag-start="dragStart" v-on:on-drag-end="dragEnd" v-on:updateTem="updateTemp" v-on:on-mouse="mouseMenu">
<div :class="classes" :style="'background-color: '+ backgroundColor">
<span :class="iconCls +' '+ [node.icon ? node.icon : 'task-icon-53']"></span>
<div v-if="isEmpty(node.inPorts) && node.inPorts.length > 0" :class="wrapInCls">
<div style="width: 45%">
<in-port :pid="node.inPorts[0].id" :isConnected = node.inPorts[0].isConnected></in-port>
</div>
</div>
<div v-if="isEmpty(node.outPorts) && node.outPorts.length > 0" :class="wrapOutCls">
<div style="width: 45%">
<out-port :pid="node.outPorts[0].id"></out-port>
</div>
</div>
</div>
</node>
</template>
<script>
import Node from '../node.vue'
import InPort from '../../port/inport.vue'
import OutPort from '../../port/outport.vue'
import mixinsNode from '../../../mixins/node'
import mixinsTool from '../../../mixins/tool'
const prefixCls = 'task-initial-node'
export default {
components: {
OutPort,
InPort,
Node},
name: 'InitialNode',
mixins: [ mixinsNode, mixinsTool ],
data () {
return {
}
},
props: {
backgroundColor: [String],
node: {
id: [String, Number],
name: {
type: [String, Number],
default: '节点'
},
positionX: {
type: [String, Number],
default: 0
},
positionY: {
type: [String, Number],
default: 0
},
icon: [String, Number],
inPorts: {
type: Array,
default: [],
validator: function (value) {
if (value && value.length > 1) {
return false
}
return true
}
},
outPorts: {
type: Array,
default: [],
validator: function (value) {
if (value && value.length > 1) {
return false
}
return true
}
}
}
},
computed: {
classes () {
return [
`${prefixCls}`,
`${prefixCls}-in`
]
},
wrapInCls () {
return [
`${prefixCls}-in-wrap`
]
},
wrapOutCls () {
return [
`${prefixCls}-out-wrap`
]
},
nameCls () {
return [
`${prefixCls}-name`
]
},
iconCls () {
return [
`${prefixCls}-icon`
]
}
}
}
</script>
================================================
FILE: src/lib/components/node/node.vue
================================================
<template>
<g :class="classes">
<g transform="scale(1,1)" class="pane-scalable">
<foreignObject :width="width" :height="height">
<body xmlns="http://www.w3.org/1999/xhtml">
<div @click=selectNodeMethod($event,node,$refs.node) ref="node" draggable="true" @drag='dragGing($event)'
@dragstart='dragStart($event)' @dragend="dragEnd($event,node)" class="task-node-content" :style="gStyle"
@contextmenu.prevent="mouseMenu">
<slot></slot>
</div>
</body>
</foreignObject>
</g>
</g>
</template>
<script>
import mixinsTool from '../../mixins/tool'
const prefixCls = 'task-node'
export default {
name: 'Node',
mixins: [mixinsTool],
data () {
return {
store: null
}
},
props: {
width: {
type: [String, Number],
default: 0
},
height: {
type: [String, Number],
default: 0
},
node: {
id: [String, Number],
positionX: {
type: [String, Number],
default: 0
},
positionY: {
type: [String, Number],
default: 0
}
}
},
computed: {
classes () {
return [
`${prefixCls}`
]
},
gStyle () {
return {
transform: `translate3d(${this.getCheckX(this.node.positionX)}px,${this.getCheckY(this.node.positionY)}px,0)`
}
}
},
methods: {
getCheckX (X) { // 检查是否移出工作区
let me = this
let x = X
if (x <= 0) {
x = 0
me.node.positionX = x
} else if (x >= me.getBrowserHW().width) {
x = me.getBrowserHW().width - me.width
me.node.positionX = x
}
return x
},
getCheckY (Y) { // 检查是否移出工作区
let me = this
let y = Y
if (y <= 0) {
y = 0
me.node.positionY = y
} else if (y >= me.getBrowserHW().height) {
y = me.getBrowserHW().height - me.height
me.node.positionY = y
}
return y
},
dragStart: function (event) {
event.dataTransfer.setData('nodedata', JSON.stringify(this.node))
this.$emit('on-drag-start', event, this.node)
},
dragGing: function (event) {
this.$emit('on-drag-ging', event)
},
dragEnd: function (event, node) {
this.$emit('on-drag-end', event, node)
},
mouseMenu: function (event) {
event.stopPropagation()
this.$emit('on-mouse', event, this.node)
},
selectNodeMethod: function (event, node, ref) {
this.$emit('on-select', event, node, ref)
}
},
updated: function () {
this.$emit('updateTem', 'VDom加载完成!')
}
}
</script>
================================================
FILE: src/lib/components/nodemodel/index.js
================================================
import NodeModel from './nodemodel.vue'
export default NodeModel
================================================
FILE: src/lib/components/nodemodel/nodemodel.vue
================================================
<template>
<div :class="classes" draggable="true" @dragstart='dragStart($event)'>
<slot></slot>
</div>
</template>
<script>
const prefixCls = 'task-node-model'
export default {
name: 'NodeModel',
props: {
node: {
id: [String, Number],
name: {
type: [String, Number],
default: '节点'
}
}
},
data () {
return {
store: null
}
},
computed: {
classes () {
return [
`${prefixCls}`
]
}
},
methods: {
dragStart: function (event) {
event.dataTransfer.setData('nodemodel', JSON.stringify(this.node))
}
}
}
</script>
================================================
FILE: src/lib/components/path/README.md
================================================
```
node: {
id: '',
positionX: 0,
positionY: 0,
...
}
```
================================================
FILE: src/lib/components/path/curvepath.vue
================================================
<template>
<g ref="gss">
<template v-if="con.length > 0" v-for="(item,index) in con">
<t-line :key="index" :portData="item" v-on:on-mouse="mouseFn" v-on:on-mouse-over="mouseOverFn" v-on:on-mouse-out="mouseOutFn">
</t-line>
</template>
<t-line v-if="path.isShow" :portData="path">
</t-line>
</g>
</template>
<script>
import TLine from './tline.vue'
import {zoomRatio} from '../../utils/tools'
export default {
components: {TLine},
name: 'CurvePath',
props: {
paths: {
type: Array
},
areaid: [String, Number]
},
data () {
return {
con: []
}
},
watch: {
paths (newData, oldData) {
this.vReload()
}
},
computed: {
path: function () {
let pa = this.$store.getters.getViPathingData
let isShow = pa.isShow
if (pa.Mxy) {
pa = this.computeXY(pa.Mxy, pa.Txy, true)
}
pa.isShow = isShow
pa.dotted = this.$store.getters.getViConfig.isDotted
pa.ptype = this.$store.getters.getViConfig.lineType
return pa
}
},
mounted: function () {
this.vReload()
},
methods: {
vReload () {
let me = this
this.con = []
this.paths.forEach((o) => {
let vstart = document.getElementById(o.startPort)
let vend = document.getElementById(o.endPort)
if (vend && vstart) {
let obj = me.computeXY(vstart, vend, false)
if (o.dotted) {
obj.dotted = o.dotted
}
if (o.ptype) {
obj.ptype = o.ptype
}
obj.startPort = o.startPort
obj.endPort = o.endPort
me.con.push(obj)
}
})
},
computeXY (vstart, vend, isBing) {
let area = document.getElementById(this.areaid)
let scaling = this.$store.getters.getViConfig.scaling
let zoom = zoomRatio() / 100
console.log(zoom)
let obj = {}
if (isBing) {
obj = {
Mxy: {
x: vstart.x - area.getBoundingClientRect().left,
y: vstart.y - area.getBoundingClientRect().top
},
Txy: {
x: vend.x - area.getBoundingClientRect().left,
y: vend.y - area.getBoundingClientRect().top
}
}
} else {
let vstartRect = vstart.getBoundingClientRect()
let vendRect = vend.getBoundingClientRect()
obj = {
Mxy: {
x: vstartRect.left / zoom - area.getBoundingClientRect().left + (5 * scaling.ZoomX),
y: vstartRect.top / zoom - area.getBoundingClientRect().top + (5 * scaling.ZoomY)
},
Txy: {
x: vendRect.left / zoom - area.getBoundingClientRect().left + (4 * scaling.ZoomX),
y: vendRect.top / zoom - area.getBoundingClientRect().top + (4 * scaling.ZoomX)
}
}
}
return obj
},
mouseFn (event, portData) {
this.$emit('on-mouse', event, portData)
},
mouseOverFn (event, portData) {
this.$emit('on-mouse-over', event, portData)
},
mouseOutFn (event, portData) {
this.$emit('on-mouse-out', event, portData)
}
}
}
</script>
================================================
FILE: src/lib/components/path/index.js
================================================
import Path from './tline.vue'
import CurvePath from './curvepath.vue'
export {Path, CurvePath}
================================================
FILE: src/lib/components/path/tline.vue
================================================
<template>
<g :class="classes">
<path :class="conWrapCls" ref="wrap" :d="lpath">
</path>
<path :class="conCls" ref="con" :d="lpath" @contextmenu.prevent="mouseFn">
</path>
</g>
</template>
<script>
import Line from '../../utils/line'
const prefixCls = 'task-tline'
export default {
name: 'TLine',
data () {
return {
lpath: 'M0 0 Q 0 0, 0 0 T 0 0',
isDraw: false
}
},
props: {
portData: {
ptype: {
type: [String, Number],
default: 'Q'
},
dotted: {
type: [String, Boolean],
default: false
},
Mxy: {
x: [String, Number],
y: [String, Number]
},
Txy: {
x: [String, Number],
y: [String, Number]
},
startPort: {
type: [String, Number]
},
endPort: {
type: [String, Number]
}
}
},
computed: {
classes () {
return [
`${prefixCls}`
]
},
conCls () {
return [
`${prefixCls}-con`
]
},
conWrapCls () {
let me = this
return [
`${prefixCls}-con-wrap`,
me.portData.dotted ? `${prefixCls}-dotted` : ``
]
},
conWrapHoverCls () {
return [
`${prefixCls}-hover`
]
}
},
beforeUpdate: function () {
if (!this.isDraw) {
this.drawCurvePath()
}
this.isDraw = false
},
mounted: function () {
this.drawCurvePath()
this.isDraw = true
let me = this
// let nameSpace = 'http://www.w3.org/2000/svg'
let _this = this.$refs.con
_this.addEventListener('mouseover', function () {
let wr = me.$refs.wrap
wr.classList.add(me.conWrapHoverCls)
me.$emit('on-mouse-over', wr, me.portData)
})
_this.addEventListener('mouseout', function () {
let wr = me.$refs.wrap
wr.classList.remove(me.conWrapHoverCls)
me.$emit('on-mouse-out', wr, me.portData)
})
},
methods: {
drawCurvePath () {
if (this.portData.Mxy && this.portData.Txy) {
this.lpath = Line.drawCurvePath(this.portData.Mxy, this.portData.Txy, this.portData.ptype, this.$store.getters.getViConfig.scaling)
}
return this.lpath
},
mouseFn (event) {
event.stopPropagation()
this.$emit('on-mouse', event, this.portData)
}
}
}
</script>
================================================
FILE: src/lib/components/port/README.md
================================================
```
node: {
id: '',
positionX: 0,
positionY: 0,
...
}
```
================================================
FILE: src/lib/components/port/index.js
================================================
import InPort from './inport.vue'
import OutPort from './outport.vue'
export {InPort, OutPort}
================================================
FILE: src/lib/components/port/inport.vue
================================================
<template>
<div :class="[isConnected ? isCls:classes]" :id="pid" @dragover.prevent=dragPortOver($event) @drop.prevent='inDropPort($event)' @dragenter="dragEnter" @dragleave="dragLeave">
<span :class="magnetCls"></span>
</div>
</template>
<script>
const prefixCls = 'task-port'
export default {
name: 'InPort',
data () {
return {
className: null
}
},
props: {
pid: [Number, String],
content: {
type: [String, Number],
default: '输入'
},
isConnected: {
type: Boolean,
default: false
}
},
computed: {
classes () {
return [
`${prefixCls}`,
`${prefixCls}-in`
]
},
magnetCls () {
return [
`${prefixCls}-magnet`
]
},
isCls () {
return [
`${prefixCls}`,
`${prefixCls}-in`,
`is-connected`
]
}
},
methods: {
inDropPort: function (event) {
if (this.className) {
let _this = event.target.parentNode
_this.className = this.className
}
let startData = event.dataTransfer.getData('portStart')
if (startData) {
this.$emit('on-add-path', event, startData, this.pid)
}
},
dragPortOver: function (event) {
},
dragEnter: function (event) {
let _this = event.target.parentNode
this.className = _this.className
_this.className = 'task-port task-in-out'
},
dragLeave: function (event) {
let _this = event.target.parentNode
_this.className = this.className
}
}
}
</script>
================================================
FILE: src/lib/components/port/outport.vue
================================================
<template>
<div :class="classes" :id="pid" @drag.stop='dragPortGing($event)' @dragstart.stop='dragPortStrat($event)' @dragend.stop="dragPortEnd($event)" draggable="true">
<span :class="magnetCls"></span>
</div>
</template>
<script>
const prefixCls = 'task-port'
export default {
name: 'OutPort',
data () {
return {
Mxy: null
}
},
props: {
pid: [Number, String],
content: {
type: [String, Number],
default: '输出'
}
},
computed: {
classes () {
return [
`${prefixCls}`,
`${prefixCls}-out`
]
},
magnetCls () {
return [
`${prefixCls}-magnet`
]
}
},
methods: {
dragPortStrat: function (event) {
this.Mxy = {
x: event.clientX,
y: event.clientY
}
if (event.dataTransfer.addElement) {
let div = document.createElement('div')
div.setAttribute('style', `with:10px;height:10px;background-color:#eee`)
event.dataTransfer.addElement(div)
} else {
var img = new Image()
img.src = './static/img/outicon.png'
event.dataTransfer.setDragImage(img, 8, 3)
}
event.dataTransfer.setData('portStart', this.pid)
},
dragPortGing: function (event) {
let Txy = {
x: event.clientX,
y: event.clientY
}
this.$store.dispatch('setViPathingData', {Mxy: this.Mxy, Txy: Txy, isShow: true})
},
dragPortEnd: function (event) {
this.$store.dispatch('setViPathingData', {isShow: false})
}
}
}
</script>
================================================
FILE: src/lib/components/workarea/index.js
================================================
import WorkArea from './workarea.vue'
export default WorkArea
================================================
FILE: src/lib/components/workarea/workarea.vue
================================================
<template>
<div :class="classes" ref="svgArea" :style="areaStyles" @contextmenu.prevent="mouseMenu" @dragover.prevent @drop.prevent="onAddNodeModel">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" :width="svgWidth" :height="svgHeight" :id="id">
<g :transform="'translate(0,0) scale('+ini.scaling.ZoomX+','+ini.scaling.ZoomY+')'">
<g>
<slot></slot>
</g>
</g>
</svg>
</div>
</template>
<script>
import mixinsTool from '../../mixins/tool'
const prefixCls = 'task-work-area'
export default {
name: 'WorkArea',
mixins: [ mixinsTool ],
data () {
return {
svgWidth: 1000,
svgHeight: 500
}
},
props: {
ini: {
lineType: {
type: [String],
default: 'Q'
},
isDotted: {
type: [Boolean],
default: false
},
scaling: {
type: [Object],
default: {ZoomX: 1, ZoomY: 1}
}
},
width: {
type: [String, Number],
default: 0
},
height: {
type: [String, Number],
default: 0
},
id: {
type: [String, Number]
}
},
watch: {
ini: {
handler (newIni, oldIni) {
this.$store.dispatch('setViConfig', newIni)
},
deep: true
}
},
computed: {
classes () {
return [
`${prefixCls}`
]
},
areaStyles () {
let style = {}
if (this.isCssInUnit(this.width) >= 0) {
style.width = this.width
} else {
style.width = `${this.width}px`
}
if (this.isCssInUnit(this.height) >= 0) {
style.height = this.height
} else {
style.height = `${this.height}px`
}
return style
}
},
mounted: function () {
let me = this
this.setSvgHW(me)
window.onresize = function () {
me.setSvgHW(me)
}
},
methods: {
setSvgHW: function (me) {
let width = this.transferCss(this.width)
let height = this.transferCss(this.height)
if (me.getBrowserHW().width < width) {
me.svgWidth = width
} else {
me.svgWidth = me.getBrowserHW().width
}
if (me.getBrowserHW().height < height) {
me.svgHeight = height
} else {
me.svgHeight = me.getBrowserHW().height
}
},
mouseMenu: function (event) {
this.$emit('on-mouse', event, this.id)
},
onAddNodeModel: function (event) {
let node = event.dataTransfer.getData('nodemodel')
let scalin = this.$store.getters.getViConfig.scaling
if (node) {
let nodeObj = JSON.parse(node)
let ref = this.$refs.svgArea
nodeObj.positionX = ((event.clientX - this.getContainersLeft(ref)) / scalin.ZoomX).toFixed(1)
nodeObj.positionY = ((event.clientY - this.getContainersTop(ref)) / scalin.ZoomY).toFixed(1)
this.$emit('on-add-nodemodel', event, nodeObj)
}
}
}
}
</script>
================================================
FILE: src/lib/index.js
================================================
'use strict'
import WorkArea from '../lib/components/workarea'
import {InPort, OutPort} from '../lib/components/port'
import {Path, CurvePath} from '../lib/components/path'
import Node from '../lib/components/node'
import Common from '../lib/components/node/common'
import Initial from '../lib/components/node/initial'
import NodeModel from '../lib/components/nodemodel'
import ModelTree from '../lib/components/depend'
import store from '../lib/store'
import nodemix from '../lib/mixins/node'
import './utils/firefoxCompatible.js'
const views = {
TaskWorkArea: WorkArea,
TaskInPort: InPort,
TaskOutPort: OutPort,
TaskCommonNode: Common,
TaskInitialNode: Initial,
TaskNode: Node,
TaskPath: Path,
TaskCurvePath: CurvePath,
TaskNodeModel: NodeModel,
TaskModelTree: ModelTree
}
const install = function (Vue, opts = {}) {
Object.keys(views).forEach(key => {
Vue.component(key, views[key])
})
}
export const TaskNode = install
export const TaskNodeStore = store
export const NodeMix = nodemix
================================================
FILE: src/lib/mixins/README.md
================================================
```
node: {
id: '',
positionX: 0,
positionY: 0,
...
}
```
================================================
FILE: src/lib/mixins/node.js
================================================
export default {
props: {
updateTem: Function
},
methods: {
updateTemp (val) {
this.updateTem()
},
selectNodeMethod: function (event, node, ref) {
this.$emit('on-select', event, node, ref)
},
dragStart: function (event, node) {
this.$emit('on-drag-start', event, node)
},
dragGing: function (event) {
this.$emit('on-drag-ging', event)
},
dragEnd: function (event, node) {
this.$emit('on-drag-end', event, node)
},
addPath: function (event, start, end) {
this.$emit('on-add-path', event, start, end)
},
mouseMenu: function (event, node) {
this.$emit('on-mouse', event, node)
}
},
updated: function () {
this.updateTem()
}
}
================================================
FILE: src/lib/mixins/tool.js
================================================
export default {
methods: {
isEmpty (obj) {
if (obj) {
return true
}
return false
},
getContainersTop (el) {
return el.offsetParent
? el.offsetTop + this.getContainersTop(el.offsetParent)
: el.offsetTop
},
getContainersLeft (el) {
return el.offsetParent
? el.offsetLeft + this.getContainersLeft(el.offsetParent)
: el.offsetLeft
},
getBrowserHW () { // 获取浏览器可视高宽
if (window.innerHeight !== undefined) {
return {
'width': window.innerWidth,
'height': window.innerHeight
}
} else if (document.compatMode === 'CSS1Compat') {
return {
'width': document.documentElement.clientWidth,
'height': document.documentElement.clientHeight
}
} else {
return {
'width': document.body.clientWidth,
'height': document.body.clientHeight
}
}
},
transferCss (vl) { // 去除样式单位
let index = this.isCssInUnit(vl)
let data = vl
if (index >= 0) {
data = vl.substring(0, index)
}
return data
},
isCssInUnit (vl) { // 判断样式是否有单位
let units = ['%', 'px', 'in', 'cn', 'mm', 'em', 'ex', 'pt', 'pc']
let index = -1
for (const item of units) {
if (vl.indexOf(item) >= 0) {
index = vl.indexOf(item)
break
}
}
return index
}
}
}
================================================
FILE: src/lib/store/index.js
================================================
const state = {
vi_pathing_data: {
isShow: false
},
vi_config: {
pathType: 'Q',
dotted: false,
scaling: {ZoomX: 1, ZoomY: 1}
}
}
const getters = {
getViPathingData () {
return state.vi_pathing_data
},
getViConfig () {
return state.vi_config
}
}
const mutations = {
setMViPathingData (state, name) {
state.vi_pathing_data = name
},
setMViConfig (state, name) {
state.vi_config = name
}
}
const actions = {
setViPathingData ({commit, state}, name) {
commit('setMViPathingData', name)
},
setViConfig ({commit, state}, name) {
commit('setMViConfig', name)
}
}
const store = {
state,
getters,
mutations,
actions
}
export default store
================================================
FILE: src/lib/styles/common/base.less
================================================
* {
box-sizing: border-box;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
*:after, *::before {
box-sizing: border-box;
}
body {
font-family: @font-family;
font-size: @font-size-small;
line-height: @line-height-base;
color: @text-color;
background-color: @body-background;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, form, fieldset, legend, input, textarea, p, blockquote, th, td, hr, button, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
margin: 0;
padding: 0;
}
button, input, select, textarea {
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
input::-ms-clear, input::-ms-reveal {
display: none;
}
a {
color: @link-color;
background: transparent;
text-decoration: none;
outline: none;
cursor: pointer;
transition: color @transition-time ease;
&:hover {
color: @link-hover-color;
}
&:active {
color: @link-active-color;
}
&:active,
&:hover {
outline: 0;
text-decoration: none;
}
&[disabled] {
color: #ccc;
cursor: @cursor-disabled;
pointer-events: none;
}
}
code,
kbd,
pre,
samp {
font-family: @code-family;
}
[class*="-icon-run"] {
color: #2ecc71;
}
[class*="-icon-ok"] {
color: #2ecc71;
}
[class*="-icon-wait"] {
color: #289de9;
}
[class*="-icon-error"] {
color: #f15e5e;
}
================================================
FILE: src/lib/styles/common/iconfont/ionicons-font.less
================================================
@font-face {
font-family: @ionicons-font-family;
src:
url("@{ionicons-font-path}/ionicons.ttf?v=@{ionicons-version}") format("truetype"),
url("@{ionicons-font-path}/ionicons.woff?v=@{ionicons-version}") format("woff"),
url("@{ionicons-font-path}/ionicons.svg?v=@{ionicons-version}#Ionicons") format("svg");
font-weight: normal;
font-style: normal;
}
[class^="task-icon"], [class*=" task-icon"] {
display: inline-block;
font-family: @ionicons-font-family;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
text-rendering: auto;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
vertical-align: middle;
}
================================================
FILE: src/lib/styles/common/iconfont/ionicons-icons.less
================================================
.task-icon-9:before {
content: "\e643";
}
.task-icon-57:before {
content: "\e61f";
}
.task-icon-56:before {
content: "\e671";
}
.task-icon-55:before {
content: "\e745";
}
.task-icon-54:before {
content: "\e661";
}
.task-icon-53:before {
content: "\e6c3";
}
.task-icon-52:before {
content: "\e660";
}
.task-icon-8:before {
content: "\e670";
}
.task-icon-7:before {
content: "\e693";
}
.task-icon-6:before {
content: "\e646";
}
.task-icon-51:before {
content: "\e6c4";
}
.task-icon-50:before {
content: "\e614";
}
.task-icon-49:before {
content: "\e67a";
}
.task-icon-48:before {
content: "\e605";
}
.task-icon-47:before {
content: "\e6c8";
}
.task-icon-46:before {
content: "\e607";
}
.task-icon-45:before {
content: "\e61a";
}
.task-icon-44:before {
content: "\e844";
}
.task-icon-43:before {
content: "\e6b5";
}
.task-icon-42:before {
content: "\e664";
}
.task-icon-61:before {
content: "\e68d";
}
.task-icon-60:before {
content: "\e68e";
}
.task-icon-41:before {
content: "\e6ab";
}
.task-icon-40:before {
content: "\e6e5";
}
.task-icon-39:before {
content: "\e600";
}
.task-icon-38:before {
content: "\e61b";
}
.task-icon-37:before {
content: "\e680";
}
.task-icon-36:before {
content: "\e65f";
}
.task-icon-35:before {
content: "\e642";
}
.task-icon-34:before {
content: "\e75c";
}
.task-icon-30:before {
content: "\e656";
}
.task-icon-5:before {
content: "\e60d";
}
.task-icon-33:before {
content: "\e60a";
}
.task-icon-32:before {
content: "\e633";
}
.task-icon-31:before {
content: "\e6c6";
}
.task-icon-29:before {
content: "\eb64";
}
.task-icon-28:before {
content: "\eb65";
}
.task-icon-27:before {
content: "\eb66";
}
.task-icon-26:before {
content: "\eb6a";
}
.task-icon-25:before {
content: "\eb6b";
}
.task-icon-24:before {
content: "\ebb8";
}
.task-icon-23:before {
content: "\ebda";
}
.task-icon-4:before {
content: "\e602";
}
.task-icon-22:before {
content: "\ec08";
}
.task-icon-21:before {
content: "\ec13";
}
.task-icon-20:before {
content: "\ec14";
}
.task-icon-19:before {
content: "\ec20";
}
.task-icon-18:before {
content: "\ec22";
}
.task-icon-17:before {
content: "\ec23";
}
.task-icon-16:before {
content: "\ec2a";
}
.task-icon-58:before {
content: "\e606";
}
.task-icon-3:before {
content: "\e603";
}
.task-icon-15:before {
content: "\ec36";
}
.task-icon-14:before {
content: "\ec37";
}
.task-icon-13:before {
content: "\ec5b";
}
.task-icon-12:before {
content: "\ec5c";
}
.task-icon-11:before {
content: "\ec5d";
}
.task-icon-10:before {
content: "\ec6a";
}
.task-icon-2:before {
content: "\e61c";
}
.task-icon-1:before {
content: "\e604";
}
.task-icon-59:before {
content: "\ec6b";
}
================================================
FILE: src/lib/styles/common/iconfont/ionicons-variables.less
================================================
@ionicons-font-path: "./fonts";
@ionicons-font-family: "Ionicons";
@ionicons-version: "3.0.0";
@ionicons-prefix: task-icon-;
================================================
FILE: src/lib/styles/common/iconfont/ionicons.less
================================================
@import "ionicons-font";
@import "ionicons-icons";
@import "ionicons-variables";
================================================
FILE: src/lib/styles/common/index.less
================================================
@import "./base";
@import "iconfont/ionicons";
================================================
FILE: src/lib/styles/components/index.less
================================================
@import "./node/node";
@import "./node/common/index";
@import "./node/initial/initial";
@import "./workarea";
@import "./port";
@import "./tline";
@import "./nodemodel";
@import "./modeltree";
================================================
FILE: src/lib/styles/components/modeltree.less
================================================
@modeltree-prefix-cls: ~"model-tree";
.@{modeltree-prefix-cls} {
padding-left: 15px;
&-node {
cursor: -webkit-grab;
cursor: grab;
padding: 3px 10px;
}
& li{
list-style: none;
}
&-dir {
cursor: pointer;
padding: 5px 0;
&:hover{
background-color: #f5f7fa;
}
}
}
================================================
FILE: src/lib/styles/components/node/common/common.less
================================================
@common-prefix-cls: ~"@{css-prefix}common-node";
.@{common-prefix-cls} {
width: 180px;
height: 30px;
background-color: hsla(0,0%,100%,.9);
border: 1px solid #289de9;
border-radius: 15px;
font-size: 12px;
-webkit-transition: background-color .2s;
transition: background-color .2s;
&-icon {
float: left;
color: #fff;
font-size: 16px;
background-color: #289de9;
width: 26px;
height: 26px;
margin: 1px;
border-radius: 100%;
&:before{
float: left;
margin: 4px;
}
}
&-name {
float: left;
margin-left: 2px;
width: 120px;
height: 28px;
line-height: 28px;
font-size: 14px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
&-status {
width: 26px;
height: 26px;
margin: 1px;
border-radius: 100%;
float: right;
font-size: 18px;
&:before{
float: left;
margin: 4px;
}
}
&:hover {
background-color: @node-select-color ;
}
}
================================================
FILE: src/lib/styles/components/node/common/incommonls.less
================================================
@in-common-prefix-cls: ~"@{css-prefix}in-common-ls";
.@{in-common-prefix-cls} {
display: flex;
clear: both;
margin-top: -34px;
float: left;
width: 180px;
&-wrap {
height: 1px;
float: left;
flex: 1;
}
}
================================================
FILE: src/lib/styles/components/node/common/index.less
================================================
@import "./common";
@import "./incommonls";
@import "./outcommonls";
================================================
FILE: src/lib/styles/components/node/common/outcommonls.less
================================================
@out-common-prefix-cls: ~"@{css-prefix}out-common-ls";
.@{out-common-prefix-cls} {
display: flex;
margin-top: -5px;
clear: both;
float: left;
width: 180px;
&-wrap {
height: 1px;
float: left;
flex: 1;
}
}
================================================
FILE: src/lib/styles/components/node/initial/initial.less
================================================
@initial-prefix-cls: ~"@{css-prefix}initial-node";
.@{initial-prefix-cls} {
width: 30px;
height: 30px;
border: 1px solid #ccc;
border-radius: 50%;
&-in-wrap {
clear: both;
margin-top: -34px;
float: left;
width: 30px;
}
&-out-wrap {
clear: both;
margin-top: -5px;
float: left;
width: 30px;
}
&-name {
float: left;
width: 30px;
height: 28px;
line-height: 28px;
font-size: 14px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
&-icon {
float: left;
color: #000;
font-size: 16px;
width: 26px;
height: 26px;
margin: 1px;
border-radius: 100%;
&:before{
float: left;
margin: 4px;
}
}
&:hover {
background-color: @node-select-color ;
}
}
================================================
FILE: src/lib/styles/components/node/node.less
================================================
@node-prefix-cls: ~"@{css-prefix}node";
.@{node-prefix-cls} {
.task-node-content{
position: absolute;
top:0;
left: 0;
}
& body{
background-color: transparent;
overflow: visible;
}
& foreignObject {
background-color: transparent;
overflow: visible;
}
&:hover {
cursor: grab;
background-color:@node-select-color;
}
&-selected {
background-color: @node-select-color;
}
}
================================================
FILE: src/lib/styles/components/nodemodel.less
================================================
@nodemodel-prefix-cls: ~"@{css-prefix}node-model";
.@{nodemodel-prefix-cls} {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: block;
border: 1px solid transparent;
cursor: -webkit-grab;
&:hover {
cursor: grab;
background-color: #fff;
border-color: #289de9;
}
&-label {
height: 26px;
line-height: 26px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
================================================
FILE: src/lib/styles/components/port.less
================================================
@port-prefix-cls: ~"@{css-prefix}port";
@inport-prefix-cls: ~"@{css-prefix}port-in";
@outport-prefix-cls: ~"@{css-prefix}port-out";
@inout-prefix-cls: ~"@{css-prefix}in-out";
.@{port-prefix-cls} {
width: 10px;
height: 10px;
float: right;
margin-right: -5px;
border: 1px solid gray;
border-radius: 50%;
background-color: #fff;
&-magnet {
float: left;
width: 20px;
height: 20px;
margin-top: -6px;
margin-left: -6px;
background-color: transparent;
border-radius: 50%;
}
}
.@{inport-prefix-cls} {
cursor: default;
&:hover {
border: 1px solid #2d8cf0;
width: 10px;
height: 10px;
box-shadow: 0px 0px 1px 3px #57a3f3;
border-radius: 50%;
margin-top: -1px;
}
}
.@{inout-prefix-cls} {
border: 1px solid #2d8cf0;
width: 10px;
height: 10px;
box-shadow: 0px 0px 1px 3px #57a3f3;
border-radius: 50%;
margin-top: -1px;
}
.is-connected {
width: 0;
height: 0;
border-style: solid;
border-width: 5px 4px 0;
border-color: gray transparent transparent;
background-color: transparent;
border-radius: 0;
margin-top: 6px;
}
.@{outport-prefix-cls} {
cursor: crosshair;
}
================================================
FILE: src/lib/styles/components/tline.less
================================================
@tline-prefix-cls: ~"@{css-prefix}tline";
@hover-prefix-cls: ~"@{css-prefix}tline-hover";
.@{tline-prefix-cls} {
cursor: default;
&-con {
fill: none;
stroke: hsla(0,0%,100%,0);
stroke-width: 15px;
}
&-con-wrap {
fill: none;
stroke: gray;
stroke-width: 1px;
}
&-dotted{
stroke: rgba(57,202,116,.8);
stroke-width: 2px;
stroke-dasharray: 5;
-webkit-animation: ant-line 30s infinite linear;
animation: ant-line 30s infinite linear;
}
}
.@{hover-prefix-cls} {
fill: none;
stroke: #aeaeae;
stroke-width: 3px;
}
================================================
FILE: src/lib/styles/components/workarea.less
================================================
@workarea-prefix-cls: ~"@{css-prefix}work-area";
.@{workarea-prefix-cls} {
background-color: @body-background;
position: relative;
overflow: auto;
cursor: -webkit-grab;
&::-webkit-scrollbar {
width: 6px;
height: 6px;
}
&::-webkit-scrollbar-thumb {
background-color: #aeaeae;
min-height: 50px;
min-width: 50px;
-webkit-border-radius: 10px;
border-radius: 10px;
-webkit-transition: background-color .2s;
-o-transition: background-color .2s;
transition: background-color .2s;
}
&::-webkit-scrollbar-track-piece {
background-color: #eee;
}
}
================================================
FILE: src/lib/styles/custom.less
================================================
// Prefix
@css-prefix : task-;
@css-prefix-icon : task-icon-;
// Color
@primary-color : #2d8cf0;
@link-color : #2D8cF0;
@link-hover-color : tint(@link-color, 20%);
@link-active-color : shade(@link-color, 5%);
@node-select-color :rgba(227,244,255,.9);
@tooltip-color : #fff;
// Base
@body-background : #fff;
@font-family : "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
@code-family : Consolas,Menlo,Courier,monospace;
@title-color : #17233d;
@text-color : #515a6e;
@font-size-base : 14px;
@font-size-small : 12px;
@font-size-large : 16px;
@line-height-base : 1.5;
@cursor-disabled : not-allowed;
@border-radius-small : 4px;
// Animation
@animation-time : .3s;
@transition-time : .2s;
@ease-in-out : ease-in-out;
// Background color
@background-color-base : #f7f7f7; // base
@tooltip-bg : rgba(70, 76, 91, .9);
// Shadow
@shadow-color : rgba(0, 0, 0, .2);
@shadow-base : @shadow-down;
@shadow-down : 0 1px 6px @shadow-color;
// Z-index
@zindex-tooltip : 1060;
================================================
FILE: src/lib/styles/index.less
================================================
@import "./common/index";
@import "./components/index";
@import "./custom";
================================================
FILE: src/lib/utils/firefoxCompatible.js
================================================
import $ from 'jquery'
import {browsers} from './tools.js'
(window.___NODRAGEVENT = (browsers() === 'Firefox')) &&
$(document).on('dragover', function (e) {
e = e.originalEvent
window.__event = e.originalEvent
window.___PAGEX = e.clientX || e.pageX
window.___PAGEY = e.clientY || e.pageY
})
================================================
FILE: src/lib/utils/line.js
================================================
function XYObject (x, y) {
this.x = x
this.y = y
}
export default {
/**
* 计算二次贝塞尔曲线 Q线
* @param Mxy 起点坐标
* @param Txy 结束坐标
* @returns {string} 'M xy Q xy xy Txy'
*/
calculatedCurvePathQ (Mxy = {}, Txy = {}) {
let mtx = (Txy.x - Mxy.x) / 4
let mty = (Txy.y - Mxy.y) / 4
if (mty < 0 && (mtx > 10 || mtx < -10)) {
if (mty > -10 && mty < 10) {
this.Q1xy = new XYObject(Mxy.x + 10, Mxy.y + 30)
} else {
this.Q1xy = new XYObject(Mxy.x + 10, Mxy.y + 4 * Math.abs(mty))
}
this.Q2xy = new XYObject(Mxy.x + 2 * mtx, Mxy.y + 2 * mty)
} else {
this.Q1xy = new XYObject(Mxy.x, Mxy.y + 2 * mty)
this.Q2xy = new XYObject(Mxy.x + 2 * mtx, Mxy.y + 2 * mty)
}
let path = 'M' + Mxy.x.toFixed(1) + ' ' + Mxy.y.toFixed(1) + ' Q ' + this.Q1xy.x.toFixed(1) + ' ' + this.Q1xy.y.toFixed(1) + ', ' + this.Q2xy.x.toFixed(1) + ' ' + this.Q2xy.y.toFixed(1) + ' T ' + Txy.x.toFixed(1) + ' ' + Txy.y.toFixed(1)
return path
},
/**
* 计算折线 L线
* @param Mxy 起点坐标
* @param Txy 结束坐标
* @returns {string} 'M xy Q xy xy Txy'
*/
calculatedCurvePathL (Mxy = {}, Txy = {}) {
let mtx = (Txy.x - Mxy.x) / 2
let mty = (Txy.y - Mxy.y) / 2
if (mty > 0) {
this.L1xy = new XYObject(Mxy.x, Mxy.y + mty)
this.L2xy = new XYObject(Txy.x, Mxy.y + mty)
this.path = 'M' + Mxy.x.toFixed(1) + ' ' + Mxy.y.toFixed(1) + ' L ' + this.L1xy.x.toFixed(1) + ' ' + this.L1xy.y.toFixed(1) + ', ' + this.L2xy.x.toFixed(1) + ' ' + this.L2xy.y.toFixed(1) + ' T ' + Txy.x.toFixed(1) + ' ' + Txy.y.toFixed(1)
} else {
this.L1xy = new XYObject(Mxy.x, Mxy.y + 30)
this.L2xy = new XYObject(Mxy.x + mtx, Mxy.y + 30)
this.L3xy = new XYObject(Mxy.x + mtx, Txy.y - 30)
this.L4xy = new XYObject(Txy.x, Txy.y - 30)
this.path = 'M' + Mxy.x.toFixed(1) + ' ' + Mxy.y.toFixed(1) + ' L ' + this.L1xy.x.toFixed(1) + ' ' + this.L1xy.y.toFixed(1) + ', ' + this.L2xy.x.toFixed(1) + ' ' + this.L2xy.y.toFixed(1) + ', ' + this.L3xy.x.toFixed(1) + ' ' + this.L3xy.y.toFixed(1) + ', ' + this.L4xy.x.toFixed(1) + ' ' + this.L4xy.y.toFixed(1) + ' T ' + Txy.x.toFixed(1) + ' ' + Txy.y.toFixed(1)
}
return this.path
},
/**
* 计算直线 ML线
* @param Mxy 起点坐标
* @param Txy 结束坐标
* @returns {string} 'M xy Lxy'
*/
calculatedCurvePathML (Mxy = {}, Txy = {}) {
this.path = 'M' + Mxy.x.toFixed(1) + ' ' + Mxy.y.toFixed(1) + ' L ' + Txy.x.toFixed(1) + ' ' + Txy.y.toFixed(1)
return this.path
},
/**
* 获取曲线路径
* @param Mxy 起点坐标
* @param Txy 结束坐标
* @returns {string} 'M xy Q xy xy Txy'
*/
drawCurvePath (Mxy = {}, Txy = {}, type = 'Q', scaling) {
let scalingMxy = {
x: Mxy.x / scaling.ZoomX,
y: Mxy.y / scaling.ZoomY
}
let scalingTxy = {
x: Txy.x / scaling.ZoomX,
y: Txy.y / scaling.ZoomY
}
if (type === 'Q') {
return this.calculatedCurvePathQ(scalingMxy, scalingTxy)
} else if (type === 'L') {
return this.calculatedCurvePathL(scalingMxy, scalingTxy)
} else if (type === 'ML') {
return this.calculatedCurvePathML(scalingMxy, scalingTxy)
}
},
/**
* 缩放坐标计算
* @param Mxy
* @param Txy
* @param scaling
* @returns {{Mxy: {}, Txy: {}}}
*/
scalingCount (Mxy = {}, Txy = {}, scaling = {ZoomX: 1, ZoomY: 1}) {
Mxy.x = Mxy.x * scaling.ZoomX
Mxy.y = Mxy.y * scaling.ZoomY
Txy.x = Txy.x * scaling.ZoomX
Txy.y = Txy.y * scaling.ZoomY
return {Mxy: Mxy, Txy: Txy}
},
guid () {
function S4 () {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
}
return (S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4())
}
}
================================================
FILE: src/lib/utils/tools.js
================================================
// 判断参数是否是其中之一
export function oneOf (value, validList) {
for (let i = 0; i < validList.length; i++) {
if (value === validList[i]) {
return true
}
}
return false
}
// 浏览器判断
export function browsers () {
let userAgent = navigator.userAgent // 取得浏览器的userAgent字符串
if (userAgent.indexOf('Chrome') > -1) {
if (userAgent.indexOf('Edge') > -1) {
return 'Edge'
} else {
return 'Chrome'
}
} else if (userAgent.indexOf('Firefox') > -1) {
return 'Firefox'
}
}
// 判断缩放
export function zoomRatio () {
let ratio = 0
let screen = window.screen
let ua = navigator.userAgent.toLowerCase()
if (window.devicePixelRatio !== undefined) {
ratio = window.devicePixelRatio
} else if (~ua.indexOf('msie')) {
if (screen.deviceXDPI && screen.logicalXDPI) {
ratio = screen.deviceXDPI / screen.logicalXDPI
}
} else if (window.outerWidth !== undefined && window.innerWidth !== undefined) {
ratio = window.outerWidth / window.innerWidth
}
if (ratio) {
ratio = Math.round(ratio * 100)
}
if (browsers() === 'Chrome') {
return ratio
} else {
return 100
}
}
================================================
FILE: src/main.js
================================================
import Vue from 'vue'
import Vuex from 'vuex'
imp
gitextract_ct1001j5/
├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .postcssrc.js
├── README.md
├── build/
│ ├── build.js
│ ├── check-versions.js
│ ├── dist/
│ │ ├── css/
│ │ │ └── vnode.css
│ │ └── vue-task-node.js
│ ├── utils.js
│ ├── vue-loader.conf.js
│ ├── webpack.base.conf.js
│ ├── webpack.dev.conf.js
│ └── webpack.prod.conf.js
├── config/
│ ├── dev.env.js
│ ├── index.js
│ ├── prod.env.js
│ └── test.env.js
├── index.html
├── package.json
├── src/
│ ├── App.vue
│ ├── lib/
│ │ ├── components/
│ │ │ ├── depend/
│ │ │ │ ├── ModelTree.vue
│ │ │ │ ├── TreeNode.vue
│ │ │ │ └── index.js
│ │ │ ├── node/
│ │ │ │ ├── README.md
│ │ │ │ ├── common/
│ │ │ │ │ ├── common.vue
│ │ │ │ │ ├── incommonls.vue
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── outcommonls.vue
│ │ │ │ ├── index.js
│ │ │ │ ├── initial/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── initial.vue
│ │ │ │ └── node.vue
│ │ │ ├── nodemodel/
│ │ │ │ ├── index.js
│ │ │ │ └── nodemodel.vue
│ │ │ ├── path/
│ │ │ │ ├── README.md
│ │ │ │ ├── curvepath.vue
│ │ │ │ ├── index.js
│ │ │ │ └── tline.vue
│ │ │ ├── port/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.js
│ │ │ │ ├── inport.vue
│ │ │ │ └── outport.vue
│ │ │ └── workarea/
│ │ │ ├── index.js
│ │ │ └── workarea.vue
│ │ ├── index.js
│ │ ├── mixins/
│ │ │ ├── README.md
│ │ │ ├── node.js
│ │ │ └── tool.js
│ │ ├── store/
│ │ │ └── index.js
│ │ ├── styles/
│ │ │ ├── common/
│ │ │ │ ├── base.less
│ │ │ │ ├── iconfont/
│ │ │ │ │ ├── ionicons-font.less
│ │ │ │ │ ├── ionicons-icons.less
│ │ │ │ │ ├── ionicons-variables.less
│ │ │ │ │ └── ionicons.less
│ │ │ │ └── index.less
│ │ │ ├── components/
│ │ │ │ ├── index.less
│ │ │ │ ├── modeltree.less
│ │ │ │ ├── node/
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── common.less
│ │ │ │ │ │ ├── incommonls.less
│ │ │ │ │ │ ├── index.less
│ │ │ │ │ │ └── outcommonls.less
│ │ │ │ │ ├── initial/
│ │ │ │ │ │ └── initial.less
│ │ │ │ │ └── node.less
│ │ │ │ ├── nodemodel.less
│ │ │ │ ├── port.less
│ │ │ │ ├── tline.less
│ │ │ │ └── workarea.less
│ │ │ ├── custom.less
│ │ │ └── index.less
│ │ └── utils/
│ │ ├── firefoxCompatible.js
│ │ ├── line.js
│ │ └── tools.js
│ └── main.js
├── static/
│ └── .gitkeep
└── test/
├── e2e/
│ ├── custom-assertions/
│ │ └── elementCount.js
│ ├── nightwatch.conf.js
│ ├── runner.js
│ └── specs/
│ └── test.js
└── unit/
├── .eslintrc
├── jest.conf.js
├── setup.js
└── specs/
└── HelloWorld.spec.js
SYMBOL INDEX (266 symbols across 11 files)
FILE: build/check-versions.js
function exec (line 7) | function exec (cmd) {
FILE: build/dist/vue-task-node.js
function r (line 7) | function r(e){return void 0===e||null===e}
function i (line 7) | function i(e){return void 0!==e&&null!==e}
function o (line 7) | function o(e){return!0===e}
function a (line 7) | function a(e){return"string"==typeof e||"number"==typeof e||"symbol"==ty...
function s (line 7) | function s(e){return null!==e&&"object"==typeof e}
function u (line 7) | function u(e){return"[object Object]"===c.call(e)}
function l (line 7) | function l(e){return"[object RegExp]"===c.call(e)}
function f (line 7) | function f(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t...
function p (line 7) | function p(e){return i(e)&&"function"==typeof e.then&&"function"==typeof...
function d (line 7) | function d(e){return null==e?"":Array.isArray(e)||u(e)&&e.toString===c?J...
function v (line 7) | function v(e){var t=parseFloat(e);return isNaN(t)?e:t}
function h (line 7) | function h(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i<r.len...
function g (line 7) | function g(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(...
function b (line 7) | function b(e,t){return _.call(e,t)}
function $ (line 7) | function $(e){var t=Object.create(null);return function(n){return t[n]||...
function n (line 7) | function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e...
function S (line 7) | function S(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n...
function T (line 7) | function T(e,t){for(var n in t)e[n]=t[n];return e}
function j (line 7) | function j(e){for(var t={},n=0;n<e.length;n++)e[n]&&T(t,e[n]);return t}
function E (line 7) | function E(e,t,n){}
function D (line 7) | function D(e,t){if(e===t)return!0;var n=s(e),r=s(t);if(!n||!r)return!n&&...
function I (line 7) | function I(e,t){for(var n=0;n<e.length;n++)if(D(e[n],t))return n;return-1}
function L (line 7) | function L(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments...
function H (line 7) | function H(e){var t=(e+"").charCodeAt(0);return 36===t||95===t}
function z (line 7) | function z(e,t,n,r){Object.defineProperty(e,t,{value:n,enumerable:!!r,wr...
function se (line 7) | function se(e){return"function"==typeof e&&/native code/.test(e.toString...
function e (line 7) | function e(){this.set=Object.create(null)}
function ve (line 7) | function ve(e){de.push(e),pe.target=e}
function he (line 7) | function he(){de.pop(),pe.target=de[de.length-1]}
function _e (line 7) | function _e(e){return new me(void 0,void 0,void 0,String(e))}
function be (line 7) | function be(e){var t=new me(e.tag,e.data,e.children&&e.children.slice(),...
function ke (line 7) | function ke(e){Ce=e}
function Oe (line 7) | function Oe(e,t){var n;if(s(e)&&!(e instanceof me))return b(e,"__ob__")&...
function Se (line 7) | function Se(e,t,n,r,i){var o=new pe,a=Object.getOwnPropertyDescriptor(e,...
function Te (line 7) | function Te(e,t,n){if(Array.isArray(e)&&f(t))return e.length=Math.max(e....
function je (line 7) | function je(e,t){if(Array.isArray(e)&&f(t))e.splice(t,1);else{var n=e.__...
function Me (line 7) | function Me(e,t){if(!t)return e;for(var n,r,i,o=ue?Reflect.ownKeys(t):Ob...
function Ne (line 7) | function Ne(e,t,n){return n?function(){var r="function"==typeof t?t.call...
function De (line 7) | function De(e,t){var n=t?e?e.concat(t):Array.isArray(t)?t:[t]:e;return n...
function Ie (line 7) | function Ie(e,t,n,r){var i=Object.create(e||null);return t?T(i,t):i}
function Pe (line 7) | function Pe(e,t,n){if("function"==typeof t&&(t=t.options),function(e,t){...
function Fe (line 7) | function Fe(e,t,n,r){if("string"==typeof n){var i=e[t];if(b(i,n))return ...
function Re (line 7) | function Re(e,t,n,r){var i=t[e],o=!b(n,e),a=n[e],s=He(Boolean,i.type);if...
function Be (line 7) | function Be(e){var t=e&&e.toString().match(/^\s*function (\w+)/);return ...
function Ue (line 7) | function Ue(e,t){return Be(e)===Be(t)}
function He (line 7) | function He(e,t){if(!Array.isArray(t))return Ue(t,e)?0:-1;for(var n=0,r=...
function ze (line 7) | function ze(e,t,n){ve();try{if(t)for(var r=t;r=r.$parent;){var i=r.$opti...
function Ve (line 7) | function Ve(e,t,n,r,i){var o;try{(o=n?e.apply(t,n):e.call(t))&&!o._isVue...
function Je (line 7) | function Je(e,t,n){if(B.errorHandler)try{return B.errorHandler.call(null...
function Ke (line 7) | function Ke(e,t,n){if(!q&&!W||"undefined"==typeof console)throw e;consol...
function Xe (line 7) | function Xe(){Ze=!1;var e=Ge.slice(0);Ge.length=0;for(var t=0;t<e.length...
function nt (line 7) | function nt(e,t){var n;if(Ge.push(function(){if(e)try{e.call(t)}catch(e)...
function it (line 7) | function it(e){!function e(t,n){var r,i;var o=Array.isArray(t);if(!o&&!s...
function at (line 7) | function at(e,t){function n(){var e=arguments,r=n.fns;if(!Array.isArray(...
function st (line 7) | function st(e,t,n,i,a,s){var c,u,l,f;for(c in e)u=e[c],l=t[c],f=ot(c),r(...
function ct (line 7) | function ct(e,t,n){var a;e instanceof me&&(e=e.data.hook||(e.data.hook={...
function ut (line 7) | function ut(e,t,n,r,o){if(i(t)){if(b(t,n))return e[n]=t[n],o||delete t[n...
function lt (line 7) | function lt(e){return a(e)?[_e(e)]:Array.isArray(e)?function e(t,n){var ...
function ft (line 7) | function ft(e){return i(e)&&i(e.text)&&!1===e.isComment}
function pt (line 7) | function pt(e,t){if(e){for(var n=Object.create(null),r=ue?Reflect.ownKey...
function dt (line 7) | function dt(e,t){if(!e||!e.length)return{};for(var n={},r=0,i=e.length;r...
function vt (line 7) | function vt(e){return e.isComment&&!e.asyncFactory||" "===e.text}
function ht (line 7) | function ht(e,t,r){var i,o=!e||!!e.$stable,a=e&&e.$key;if(e){if(e._norma...
function mt (line 7) | function mt(e,t,n){var r=function(){var e=arguments.length?n.apply(null,...
function yt (line 7) | function yt(e,t){return function(){return e[t]}}
function gt (line 7) | function gt(e,t){var n,r,o,a,c;if(Array.isArray(e)||"string"==typeof e)f...
function _t (line 7) | function _t(e,t,n,r){var i,o=this.$scopedSlots[e];o?(n=n||{},r&&(n=T(T({...
function bt (line 7) | function bt(e){return Fe(this.$options,"filters",e)||N}
function $t (line 7) | function $t(e,t){return Array.isArray(e)?-1===e.indexOf(t):e!==t}
function xt (line 7) | function xt(e,t,n,r,i){var o=B.keyCodes[t]||n;return i&&r&&!B.keyCodes[t...
function wt (line 7) | function wt(e,t,n,r,i){if(n)if(s(n)){var o;Array.isArray(n)&&(n=j(n));va...
function Ct (line 7) | function Ct(e,t){var n=this._staticTrees||(this._staticTrees=[]),r=n[e];...
function kt (line 7) | function kt(e,t,n){return At(e,"__once__"+t+(n?"_"+n:""),!0),e}
function At (line 7) | function At(e,t,n){if(Array.isArray(e))for(var r=0;r<e.length;r++)e[r]&&...
function Ot (line 7) | function Ot(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=n}
function St (line 7) | function St(e,t){if(t)if(u(t)){var n=e.on=e.on?T({},e.on):{};for(var r i...
function Tt (line 7) | function Tt(e,t,n,r){t=t||{$stable:!n};for(var i=0;i<e.length;i++){var o...
function jt (line 7) | function jt(e,t){for(var n=0;n<t.length;n+=2){var r=t[n];"string"==typeo...
function Et (line 7) | function Et(e,t){return"string"==typeof e?t+e:e}
function Mt (line 7) | function Mt(e){e._o=kt,e._n=v,e._s=d,e._l=gt,e._t=_t,e._q=D,e._i=I,e._m=...
function Nt (line 7) | function Nt(e,t,r,i,a){var s,c=this,u=a.options;b(i,"_uid")?(s=Object.cr...
function Dt (line 7) | function Dt(e,t,n,r,i){var o=be(e);return o.fnContext=n,o.fnOptions=r,t....
function It (line 7) | function It(e,t){for(var n in t)e[w(n)]=t[n]}
function Ft (line 7) | function Ft(e,t,a,c,u){if(!r(e)){var l=a.$options._base;if(s(e)&&(e=l.ex...
function Rt (line 7) | function Rt(e,t){var n=function(n,r){e(n,r),t(n,r)};return n._merged=!0,n}
function Ht (line 7) | function Ht(e,t,n,c,u,l){return(Array.isArray(n)||a(n))&&(u=c,c=n,n=void...
function Jt (line 7) | function Jt(e,t){return(e.__esModule||ue&&"Module"===e[Symbol.toStringTa...
function Kt (line 7) | function Kt(e){return e.isComment&&e.asyncFactory}
function qt (line 7) | function qt(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t...
function Wt (line 7) | function Wt(e,t){zt.$on(e,t)}
function Gt (line 7) | function Gt(e,t){zt.$off(e,t)}
function Zt (line 7) | function Zt(e,t){var n=zt;return function r(){null!==t.apply(null,argume...
function Xt (line 7) | function Xt(e,t,n){zt=e,st(t,n||{},Wt,Gt,Zt,e),zt=void 0}
function Yt (line 7) | function Yt(e){var t=Qt;return Qt=e,function(){Qt=t}}
function en (line 7) | function en(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}
function tn (line 7) | function tn(e,t){if(t){if(e._directInactive=!1,en(e))return}else if(e._d...
function nn (line 7) | function nn(e,t){ve();var n=e.$options[t],r=t+" hook";if(n)for(var i=0,o...
function pn (line 7) | function pn(){var e,t;for(ln=fn(),cn=!0,rn.sort(function(e,t){return e.i...
function mn (line 7) | function mn(e,t,n){hn.get=function(){return this[t][n]},hn.set=function(...
function yn (line 7) | function yn(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){va...
function _n (line 7) | function _n(e,t,n){var r=!oe();"function"==typeof n?(hn.get=r?bn(t):$n(n...
function bn (line 7) | function bn(e){return function(){var t=this._computedWatchers&&this._com...
function $n (line 7) | function $n(e){return function(){return e.call(this,this)}}
function xn (line 7) | function xn(e,t,n,r){return u(n)&&(r=n,n=n.handler),"string"==typeof n&&...
function Cn (line 7) | function Cn(e){var t=e.options;if(e.super){var n=Cn(e.super);if(n!==e.su...
function kn (line 7) | function kn(e){this._init(e)}
function An (line 7) | function An(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,r...
function On (line 7) | function On(e){return e&&(e.Ctor.options.name||e.tag)}
function Sn (line 7) | function Sn(e,t){return Array.isArray(e)?e.indexOf(t)>-1:"string"==typeo...
function Tn (line 7) | function Tn(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var o in n){var a...
function jn (line 7) | function jn(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstanc...
function r (line 7) | function r(){n.$off(e,r),t.apply(n,arguments)}
function Vn (line 7) | function Vn(e){for(var t=e.data,n=e,r=e;i(r.componentInstance);)(r=r.com...
function Jn (line 7) | function Jn(e,t){return{staticClass:Kn(e.staticClass,t.staticClass),clas...
function Kn (line 7) | function Kn(e,t){return e?t?e+" "+t:e:t||""}
function qn (line 7) | function qn(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,o=...
function Qn (line 7) | function Qn(e){return Zn(e)?"svg":"math"===e?"math":void 0}
function tr (line 7) | function tr(e){if("string"==typeof e){var t=document.querySelector(e);re...
function ir (line 7) | function ir(e,t){var n=e.data.ref;if(i(n)){var r=e.context,o=e.component...
function sr (line 7) | function sr(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.i...
function cr (line 7) | function cr(e,t,n){var r,o,a={};for(r=t;r<=n;++r)i(o=e[r].key)&&(a[o]=r)...
function lr (line 7) | function lr(e,t){(e.data.directives||t.data.directives)&&function(e,t){v...
function pr (line 7) | function pr(e,t){var n,r,i=Object.create(null);if(!e)return i;for(n=0;n<...
function dr (line 7) | function dr(e){return e.rawName||e.name+"."+Object.keys(e.modifiers||{})...
function vr (line 7) | function vr(e,t,n,r,i){var o=e.def&&e.def[t];if(o)try{o(n.elm,e,n,r,i)}c...
function mr (line 7) | function mr(e,t){var n=t.componentOptions;if(!(i(n)&&!1===n.Ctor.options...
function yr (line 7) | function yr(e,t,n){e.tagName.indexOf("-")>-1?gr(e,t,n):Rn(t)?zn(n)?e.rem...
function gr (line 7) | function gr(e,t,n){if(zn(n))e.removeAttribute(t);else{if(X&&!Q&&"TEXTARE...
function br (line 7) | function br(e,t){var n=t.elm,o=t.data,a=e.data;if(!(r(o.staticClass)&&r(...
function Tr (line 7) | function Tr(e){var t,n,r,i,o,a=!1,s=!1,c=!1,u=!1,l=0,f=0,p=0,d=0;for(r=0...
function jr (line 7) | function jr(e,t){var n=t.indexOf("(");if(n<0)return'_f("'+t+'")('+e+")";...
function Er (line 7) | function Er(e,t){console.error("[Vue compiler]: "+e)}
function Mr (line 7) | function Mr(e,t){return e?e.map(function(e){return e[t]}).filter(functio...
function Nr (line 7) | function Nr(e,t,n,r,i){(e.props||(e.props=[])).push(zr({name:t,value:n,d...
function Dr (line 7) | function Dr(e,t,n,r,i){(i?e.dynamicAttrs||(e.dynamicAttrs=[]):e.attrs||(...
function Ir (line 7) | function Ir(e,t,n,r){e.attrsMap[t]=n,e.attrsList.push(zr({name:t,value:n...
function Lr (line 7) | function Lr(e,t,n,r,i,o,a,s){(e.directives||(e.directives=[])).push(zr({...
function Pr (line 7) | function Pr(e,t,n){return n?"_p("+t+',"'+e+'")':e+t}
function Fr (line 7) | function Fr(e,t,r,i,o,a,s,c){var u;(i=i||n).right?c?t="("+t+")==='click'...
function Rr (line 7) | function Rr(e,t){return e.rawAttrsMap[":"+t]||e.rawAttrsMap["v-bind:"+t]...
function Br (line 7) | function Br(e,t,n){var r=Ur(e,":"+t)||Ur(e,"v-bind:"+t);if(null!=r)retur...
function Ur (line 7) | function Ur(e,t,n){var r;if(null!=(r=e.attrsMap[t]))for(var i=e.attrsLis...
function Hr (line 7) | function Hr(e,t){for(var n=e.attrsList,r=0,i=n.length;r<i;r++){var o=n[r...
function zr (line 7) | function zr(e,t){return t&&(null!=t.start&&(e.start=t.start),null!=t.end...
function Vr (line 7) | function Vr(e,t,n){var r=n||{},i=r.number,o="$$v";r.trim&&(o="(typeof $$...
function Jr (line 7) | function Jr(e,t){var n=function(e){if(e=e.trim(),$r=e.length,e.indexOf("...
function Kr (line 7) | function Kr(){return xr.charCodeAt(++Cr)}
function qr (line 7) | function qr(){return Cr>=$r}
function Wr (line 7) | function Wr(e){return 34===e||39===e}
function Gr (line 7) | function Gr(e){var t=1;for(kr=Cr;!qr();)if(Wr(e=Kr()))Zr(e);else if(91==...
function Zr (line 7) | function Zr(e){for(var t=e;!qr()&&(e=Kr())!==t;);}
function ei (line 7) | function ei(e,t,n){var r=Xr;return function i(){null!==t.apply(null,argu...
function ni (line 7) | function ni(e,t,n,r){if(ti){var i=ln,o=t;t=o._wrapper=function(e){if(e.t...
function ri (line 7) | function ri(e,t,n,r){(r||Xr).removeEventListener(e,t._wrapper||t,n)}
function ii (line 7) | function ii(e,t){if(!r(e.data.on)||!r(t.data.on)){var n=t.data.on||{},o=...
function si (line 7) | function si(e,t){if(!r(e.data.domProps)||!r(t.data.domProps)){var n,o,a=...
function ci (line 7) | function ci(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t...
function fi (line 7) | function fi(e){var t=pi(e.style);return e.staticStyle?T(e.staticStyle,t):t}
function pi (line 7) | function pi(e){return Array.isArray(e)?j(e):"string"==typeof e?li(e):e}
function _i (line 7) | function _i(e,t){var n=t.data,o=e.data;if(!(r(n.staticStyle)&&r(n.style)...
function xi (line 7) | function xi(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.s...
function wi (line 7) | function wi(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.s...
function Ci (line 7) | function Ci(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&T...
function Di (line 7) | function Di(e){Ni(function(){Ni(e)})}
function Ii (line 7) | function Ii(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n...
function Li (line 7) | function Li(e,t){e._transitionClasses&&g(e._transitionClasses,t),wi(e,t)}
function Pi (line 7) | function Pi(e,t,n){var r=Ri(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!...
function Ri (line 7) | function Ri(e,t){var n,r=window.getComputedStyle(e),i=(r[Ti+"Delay"]||""...
function Bi (line 7) | function Bi(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max.a...
function Ui (line 7) | function Ui(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}
function Hi (line 7) | function Hi(e,t){var n=e.elm;i(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._...
function zi (line 7) | function zi(e,t){var n=e.elm;i(n._enterCb)&&(n._enterCb.cancelled=!0,n._...
function Vi (line 7) | function Vi(e){return"number"==typeof e&&!isNaN(e)}
function Ji (line 7) | function Ji(e){if(r(e))return!1;var t=e.fns;return i(t)?Ji(Array.isArray...
function Ki (line 7) | function Ki(e,t){!0!==t.data.show&&Hi(t)}
function l (line 7) | function l(e){var t=u.parentNode(e);i(t)&&u.removeChild(t,e)}
function f (line 7) | function f(e,t,n,r,a,c,l){if(i(e.elm)&&i(c)&&(e=c[l]=be(e)),e.isRootInse...
function p (line 7) | function p(e,t){i(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingI...
function d (line 7) | function d(e,t,n){i(e)&&(i(n)?u.parentNode(n)===e&&u.insertBefore(e,t,n)...
function v (line 7) | function v(e,t,n){if(Array.isArray(t))for(var r=0;r<t.length;++r)f(t[r],...
function m (line 7) | function m(e){for(;e.componentInstance;)e=e.componentInstance._vnode;ret...
function y (line 7) | function y(e,n){for(var r=0;r<s.create.length;++r)s.create[r](or,e);i(t=...
function g (line 7) | function g(e){var t;if(i(t=e.fnScopeId))u.setStyleScope(e.elm,t);else fo...
function _ (line 7) | function _(e,t,n,r,i,o){for(;r<=i;++r)f(n[r],o,e,t,!1,n,r)}
function b (line 7) | function b(e){var t,n,r=e.data;if(i(r))for(i(t=r.hook)&&i(t=t.destroy)&&...
function $ (line 7) | function $(e,t,n,r){for(;n<=r;++n){var o=t[n];i(o)&&(i(o.tag)?(x(o),b(o)...
function x (line 7) | function x(e,t){if(i(t)||i(e.data)){var n,r=s.remove.length+1;for(i(t)?t...
function w (line 7) | function w(e,t,n,r){for(var o=n;o<r;o++){var a=t[o];if(i(a)&&sr(e,a))ret...
function C (line 7) | function C(e,t,n,a,c,l){if(e!==t){i(t.elm)&&i(a)&&(t=a[c]=be(t));var p=t...
function k (line 7) | function k(e,t,n){if(o(n)&&i(e.parent))e.parent.data.pendingInsert=t;els...
function O (line 7) | function O(e,t,n,r){var a,s=t.tag,c=t.data,u=t.children;if(r=r||c&&c.pre...
function Gi (line 7) | function Gi(e,t,n){Zi(e,t,n),(X||Y)&&setTimeout(function(){Zi(e,t,n)},0)}
function Zi (line 7) | function Zi(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){f...
function Xi (line 7) | function Xi(e,t){return t.every(function(t){return!D(t,e)})}
function Qi (line 7) | function Qi(e){return"_value"in e?e._value:e.value}
function Yi (line 7) | function Yi(e){e.target.composing=!0}
function eo (line 7) | function eo(e){e.target.composing&&(e.target.composing=!1,to(e.target,"i...
function to (line 7) | function to(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,...
function no (line 7) | function no(e){return!e.componentInstance||e.data&&e.data.transition?e:n...
function oo (line 7) | function oo(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abst...
function ao (line 7) | function ao(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];...
function so (line 7) | function so(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{...
function po (line 7) | function po(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._ent...
function vo (line 7) | function vo(e){e.data.newPos=e.elm.getBoundingClientRect()}
function ho (line 7) | function ho(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-...
function bo (line 7) | function bo(e,t){var n=t?_o(t):yo;if(n.test(e)){for(var r,i,o,a=[],s=[],...
function Jo (line 7) | function Jo(e,t){var n=t?Ho:Uo;return e.replace(n,function(e){return Bo[...
function va (line 7) | function va(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:function(e){...
function ha (line 7) | function ha(e,t){Ko=t.warn||Er,Xo=t.isPreTag||M,Qo=t.mustUseProp||M,Yo=t...
function ma (line 7) | function ma(e,t){var n,r;!function(e){var t=Br(e,"key");if(t){e.key=t}}(...
function ya (line 7) | function ya(e){var t;if(t=Ur(e,"v-for")){var n=function(e){var t=e.match...
function ga (line 7) | function ga(e,t){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push...
function _a (line 7) | function _a(e){var t=e.name.replace(ua,"");return t||"#"!==e.name[0]&&(t...
function ba (line 7) | function ba(e){var t=e.match(ca);if(t){var n={};return t.forEach(functio...
function wa (line 7) | function wa(e){return va(e.tag,e.attrsList.slice(),e.parent)}
function Ta (line 7) | function Ta(e,t){e&&(ka=Sa(t.staticKeys||""),Aa=t.isReservedTag||M,funct...
function Pa (line 7) | function Pa(e,t){var n=t?"nativeOn:":"on:",r="",i="";for(var o in e){var...
function Fa (line 7) | function Fa(e){if(!e)return"function(){}";if(Array.isArray(e))return"["+...
function Ra (line 7) | function Ra(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var...
function Ha (line 7) | function Ha(e,t){var n=new Ua(t);return{render:"with(this){return "+(e?z...
function za (line 7) | function za(e,t){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&...
function Va (line 7) | function Va(e,t){e.staticProcessed=!0;var n=t.pre;return e.pre&&(t.pre=e...
function Ja (line 7) | function Ja(e,t){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return Ka(e,...
function Ka (line 7) | function Ka(e,t,n,r){return e.ifProcessed=!0,function e(t,n,r,i){if(!t.l...
function qa (line 7) | function qa(e,t,n,r){var i=e.for,o=e.alias,a=e.iterator1?","+e.iterator1...
function Wa (line 7) | function Wa(e,t){var n="{",r=function(e,t){var n=e.directives;if(!n)retu...
function Ga (line 7) | function Ga(e){return 1===e.type&&("slot"===e.tag||e.children.some(Ga))}
function Za (line 7) | function Za(e,t){var n=e.attrsMap["slot-scope"];if(e.if&&!e.ifProcessed&...
function Xa (line 7) | function Xa(e,t,n,r,i){var o=e.children;if(o.length){var a=o[0];if(1===o...
function Qa (line 7) | function Qa(e){return void 0!==e.for||"template"===e.tag||"slot"===e.tag}
function Ya (line 7) | function Ya(e,t){return 1===e.type?za(e,t):3===e.type&&e.isComment?(r=e,...
function es (line 7) | function es(e){for(var t="",n="",r=0;r<e.length;r++){var i=e[r],o=ts(i.v...
function ts (line 7) | function ts(e){return e.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"...
function ns (line 7) | function ns(e,t){try{return new Function(e)}catch(n){return t.push({err:...
function rs (line 7) | function rs(e){var t=Object.create(null);return function(n,r,i){(r=T({},...
function t (line 7) | function t(t,n){var r=Object.create(e),i=[],o=[],a=function(e,t,n){(n?o:...
function cs (line 7) | function cs(e){return(os=os||document.createElement("div")).innerHTML=e?...
FILE: build/utils.js
function generateLoaders (line 33) | function generateLoaders (loader, loaderOptions) {
FILE: build/webpack.base.conf.js
function resolve (line 7) | function resolve (dir) {
FILE: build/webpack.dev.conf.js
constant HOST (line 13) | const HOST = process.env.HOST
constant PORT (line 14) | const PORT = process.env.PORT && Number(process.env.PORT)
FILE: build/webpack.prod.conf.js
method minChunks (line 96) | minChunks (module) {
FILE: src/lib/mixins/node.js
method updateTemp (line 6) | updateTemp (val) {
FILE: src/lib/mixins/tool.js
method isEmpty (line 3) | isEmpty (obj) {
method getContainersTop (line 9) | getContainersTop (el) {
method getContainersLeft (line 14) | getContainersLeft (el) {
method getBrowserHW (line 19) | getBrowserHW () { // 获取浏览器可视高宽
method transferCss (line 37) | transferCss (vl) { // 去除样式单位
method isCssInUnit (line 45) | isCssInUnit (vl) { // 判断样式是否有单位
FILE: src/lib/store/index.js
method getViPathingData (line 12) | getViPathingData () {
method getViConfig (line 15) | getViConfig () {
method setMViPathingData (line 20) | setMViPathingData (state, name) {
method setMViConfig (line 23) | setMViConfig (state, name) {
method setViPathingData (line 28) | setViPathingData ({commit, state}, name) {
method setViConfig (line 31) | setViConfig ({commit, state}, name) {
FILE: src/lib/utils/line.js
function XYObject (line 1) | function XYObject (x, y) {
method calculatedCurvePathQ (line 13) | calculatedCurvePathQ (Mxy = {}, Txy = {}) {
method calculatedCurvePathL (line 37) | calculatedCurvePathL (Mxy = {}, Txy = {}) {
method calculatedCurvePathML (line 60) | calculatedCurvePathML (Mxy = {}, Txy = {}) {
method drawCurvePath (line 70) | drawCurvePath (Mxy = {}, Txy = {}, type = 'Q', scaling) {
method scalingCount (line 95) | scalingCount (Mxy = {}, Txy = {}, scaling = {ZoomX: 1, ZoomY: 1}) {
method guid (line 102) | guid () {
FILE: src/lib/utils/tools.js
function oneOf (line 2) | function oneOf (value, validList) {
function browsers (line 11) | function browsers () {
function zoomRatio (line 24) | function zoomRatio () {
Condensed preview — 85 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (209K chars).
[
{
"path": ".babelrc",
"chars": 402,
"preview": "{\n \"presets\": [\n [\"env\", {\n \"modules\": false,\n \"targets\": {\n \"browsers\": [\"> 1%\", \"last 2 versions\""
},
{
"path": ".editorconfig",
"chars": 147,
"preview": "root = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_"
},
{
"path": ".eslintignore",
"chars": 51,
"preview": "/build/\n/config/\n/dist/\n/*.js\n/test/unit/coverage/\n"
},
{
"path": ".eslintrc.js",
"chars": 791,
"preview": "// https://eslint.org/docs/user-guide/configuring\n\nmodule.exports = {\n root: true,\n parserOptions: {\n parser: 'babe"
},
{
"path": ".gitignore",
"chars": 213,
"preview": ".DS_Store\nnode_modules/\n/dist/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n/test/unit/coverage/\n/test/e2e/reports/\nse"
},
{
"path": ".postcssrc.js",
"chars": 246,
"preview": "// https://github.com/michael-ciniawsky/postcss-load-config\n\nmodule.exports = {\n \"plugins\": {\n \"postcss-import\": {},"
},
{
"path": "README.md",
"chars": 2398,
"preview": "# vue-task-node\n>vue-task-node 是一个基于Vue的任务节点图绘制插件(vue-task-node is a Vue based task node mapping plug-in)\n\n>在线Demo <br>\n"
},
{
"path": "build/build.js",
"chars": 1198,
"preview": "'use strict'\nrequire('./check-versions')()\n\nprocess.env.NODE_ENV = 'production'\n\nconst ora = require('ora')\nconst rm = r"
},
{
"path": "build/check-versions.js",
"chars": 1290,
"preview": "'use strict'\nconst chalk = require('chalk')\nconst semver = require('semver')\nconst packageConfig = require('../package.j"
},
{
"path": "build/dist/css/vnode.css",
"chars": 7038,
"preview": "*{-webkit-tap-highlight-color:rgba(0,0,0,0)}*,:after,:before{box-sizing:border-box}body{font-family:Helvetica Neue,Helve"
},
{
"path": "build/dist/vue-task-node.js",
"chars": 100278,
"preview": "webpackJsonpvue_task_node([0],{\"+E39\":function(e,t,n){e.exports=!n(\"S82l\")(function(){return 7!=Object.defineProperty({}"
},
{
"path": "build/utils.js",
"chars": 2587,
"preview": "'use strict'\nconst path = require('path')\nconst config = require('../config')\nconst ExtractTextPlugin = require('extract"
},
{
"path": "build/vue-loader.conf.js",
"chars": 553,
"preview": "'use strict'\nconst utils = require('./utils')\nconst config = require('../config')\nconst isProduction = process.env.NODE_"
},
{
"path": "build/webpack.base.conf.js",
"chars": 2486,
"preview": "'use strict'\nconst path = require('path')\nconst utils = require('./utils')\nconst config = require('../config')\nconst vue"
},
{
"path": "build/webpack.dev.conf.js",
"chars": 3004,
"preview": "'use strict'\nconst utils = require('./utils')\nconst webpack = require('webpack')\nconst config = require('../config')\ncon"
},
{
"path": "build/webpack.prod.conf.js",
"chars": 5641,
"preview": "'use strict'\nconst path = require('path')\nconst utils = require('./utils')\nconst webpack = require('webpack')\nconst conf"
},
{
"path": "config/dev.env.js",
"chars": 156,
"preview": "'use strict'\nconst merge = require('webpack-merge')\nconst prodEnv = require('./prod.env')\n\nmodule.exports = merge(prodEn"
},
{
"path": "config/index.js",
"chars": 2287,
"preview": "'use strict'\n// Template version: 1.3.1\n// see http://vuejs-templates.github.io/webpack for documentation.\n\nconst path ="
},
{
"path": "config/prod.env.js",
"chars": 61,
"preview": "'use strict'\nmodule.exports = {\n NODE_ENV: '\"production\"'\n}\n"
},
{
"path": "config/test.env.js",
"chars": 149,
"preview": "'use strict'\nconst merge = require('webpack-merge')\nconst devEnv = require('./dev.env')\n\nmodule.exports = merge(devEnv, "
},
{
"path": "index.html",
"chars": 266,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width,initial"
},
{
"path": "package.json",
"chars": 2753,
"preview": "{\n \"name\": \"vue-task-node\",\n \"version\": \"1.4.0\",\n \"description\": \"TaskNode Plugin! vue-task-node is a Vue based task "
},
{
"path": "src/App.vue",
"chars": 10038,
"preview": "<template>\n <div id=\"app\">\n <div style=\"position: relative;height: 30px\"></div>\n <div style=\"width: 140px\">\n "
},
{
"path": "src/lib/components/depend/ModelTree.vue",
"chars": 836,
"preview": "<template>\n <ul :class=\"classes\">\n <template v-for=\"node in nodes\">\n <tree-node :key=\"node.id\" :node=\"node\" v-i"
},
{
"path": "src/lib/components/depend/TreeNode.vue",
"chars": 800,
"preview": "<template>\n <li>\n <div :class=\"classesDir\" @click=\"open = !open\">\n <span class=\"icon\" :class=\"[open ? 'task-ico"
},
{
"path": "src/lib/components/depend/index.js",
"chars": 66,
"preview": "import ModelTree from './ModelTree.vue'\n\nexport default ModelTree\n"
},
{
"path": "src/lib/components/node/README.md",
"chars": 1,
"preview": "\n"
},
{
"path": "src/lib/components/node/common/common.vue",
"chars": 2430,
"preview": "<template>\n<node :node=\"node\" width=180 height=30 v-on:on-select=\"selectNodeMethod\" v-on:on-drag-ging=\"dragGing\" v-on:on"
},
{
"path": "src/lib/components/node/common/incommonls.vue",
"chars": 899,
"preview": "<template>\n <div :class=\"classes\" ref=\"port\">\n <template v-if=\"in_ports && in_ports.length > 0\" v-for=\"(item,index) "
},
{
"path": "src/lib/components/node/common/index.js",
"chars": 56,
"preview": "import Common from './common.vue'\nexport default Common\n"
},
{
"path": "src/lib/components/node/common/outcommonls.vue",
"chars": 726,
"preview": "<template>\n <div :class=\"classes\">\n <template v-if=\"out_ports && out_ports.length > 0\" v-for=\"(item,index) in out_po"
},
{
"path": "src/lib/components/node/index.js",
"chars": 51,
"preview": "import Node from './node.vue'\n\nexport default Node\n"
},
{
"path": "src/lib/components/node/initial/index.js",
"chars": 59,
"preview": "import Initial from './initial.vue'\nexport default Initial\n"
},
{
"path": "src/lib/components/node/initial/initial.vue",
"chars": 2531,
"preview": "<template>\n <node :node=\"node\" width=30 height=30 v-on:on-select=\"selectNodeMethod\" v-on:on-drag-ging=\"dragGing\" v-on:o"
},
{
"path": "src/lib/components/node/node.vue",
"chars": 2618,
"preview": "<template>\n <g :class=\"classes\">\n <g transform=\"scale(1,1)\" class=\"pane-scalable\">\n <foreignObject :width=\"widt"
},
{
"path": "src/lib/components/nodemodel/index.js",
"chars": 65,
"preview": "import NodeModel from './nodemodel.vue'\nexport default NodeModel\n"
},
{
"path": "src/lib/components/nodemodel/nodemodel.vue",
"chars": 628,
"preview": "<template>\n <div :class=\"classes\" draggable=\"true\" @dragstart='dragStart($event)'>\n <slot></slot>\n </div>\n</templat"
},
{
"path": "src/lib/components/path/README.md",
"chars": 66,
"preview": "```\nnode: {\n id: '',\n positionX: 0,\n positionY: 0,\n ...\n}\n```\n"
},
{
"path": "src/lib/components/path/curvepath.vue",
"chars": 3153,
"preview": "<template>\n <g ref=\"gss\">\n <template v-if=\"con.length > 0\" v-for=\"(item,index) in con\">\n <t-line :key=\"index\" :"
},
{
"path": "src/lib/components/path/index.js",
"chars": 97,
"preview": "import Path from './tline.vue'\nimport CurvePath from './curvepath.vue'\n\nexport {Path, CurvePath}\n"
},
{
"path": "src/lib/components/path/tline.vue",
"chars": 2338,
"preview": "<template>\n <g :class=\"classes\">\n <path :class=\"conWrapCls\" ref=\"wrap\" :d=\"lpath\">\n </path>\n <path :class=\"con"
},
{
"path": "src/lib/components/port/README.md",
"chars": 66,
"preview": "```\nnode: {\n id: '',\n positionX: 0,\n positionY: 0,\n ...\n}\n```\n"
},
{
"path": "src/lib/components/port/index.js",
"chars": 96,
"preview": "import InPort from './inport.vue'\nimport OutPort from './outport.vue'\n\nexport {InPort, OutPort}\n"
},
{
"path": "src/lib/components/port/inport.vue",
"chars": 1558,
"preview": "<template>\n <div :class=\"[isConnected ? isCls:classes]\" :id=\"pid\" @dragover.prevent=dragPortOver($event) @drop.prevent="
},
{
"path": "src/lib/components/port/outport.vue",
"chars": 1554,
"preview": "<template>\n <div :class=\"classes\" :id=\"pid\" @drag.stop='dragPortGing($event)' @dragstart.stop='dragPortStrat($event)' @"
},
{
"path": "src/lib/components/workarea/index.js",
"chars": 62,
"preview": "import WorkArea from './workarea.vue'\nexport default WorkArea\n"
},
{
"path": "src/lib/components/workarea/workarea.vue",
"chars": 2973,
"preview": "<template>\n <div :class=\"classes\" ref=\"svgArea\" :style=\"areaStyles\" @contextmenu.prevent=\"mouseMenu\" @dragover.prevent "
},
{
"path": "src/lib/index.js",
"chars": 1019,
"preview": "'use strict'\nimport WorkArea from '../lib/components/workarea'\nimport {InPort, OutPort} from '../lib/components/port'\nim"
},
{
"path": "src/lib/mixins/README.md",
"chars": 66,
"preview": "```\nnode: {\n id: '',\n positionX: 0,\n positionY: 0,\n ...\n}\n```\n"
},
{
"path": "src/lib/mixins/node.js",
"chars": 741,
"preview": "export default {\n props: {\n updateTem: Function\n },\n methods: {\n updateTemp (val) {\n this.updateTem()\n "
},
{
"path": "src/lib/mixins/tool.js",
"chars": 1448,
"preview": "export default {\n methods: {\n isEmpty (obj) {\n if (obj) {\n return true\n }\n return false\n },"
},
{
"path": "src/lib/store/index.js",
"chars": 711,
"preview": "const state = {\n vi_pathing_data: {\n isShow: false\n },\n vi_config: {\n pathType: 'Q',\n dotted: false,\n sca"
},
{
"path": "src/lib/styles/common/base.less",
"chars": 1445,
"preview": "* {\n box-sizing: border-box;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\n*:after, *::before {\n box-sizing: bor"
},
{
"path": "src/lib/styles/common/iconfont/ionicons-font.less",
"chars": 735,
"preview": "@font-face {\n font-family: @ionicons-font-family;\n src:\n url(\"@{ionicons-font-path}/ionicons.ttf?v=@{ionicons-versi"
},
{
"path": "src/lib/styles/common/iconfont/ionicons-icons.less",
"chars": 2796,
"preview": ".task-icon-9:before {\n content: \"\\e643\";\n}\n\n.task-icon-57:before {\n content: \"\\e61f\";\n}\n\n.task-icon-56:before {\n cont"
},
{
"path": "src/lib/styles/common/iconfont/ionicons-variables.less",
"chars": 125,
"preview": "@ionicons-font-path: \"./fonts\";\n@ionicons-font-family: \"Ionicons\";\n@ionicons-version: \"3.0.0\";\n@ionicons-prefix: task-ic"
},
{
"path": "src/lib/styles/common/iconfont/ionicons.less",
"chars": 81,
"preview": "@import \"ionicons-font\";\n@import \"ionicons-icons\";\n@import \"ionicons-variables\";\n"
},
{
"path": "src/lib/styles/common/index.less",
"chars": 47,
"preview": "@import \"./base\";\n@import \"iconfont/ionicons\";\n"
},
{
"path": "src/lib/styles/components/index.less",
"chars": 194,
"preview": "@import \"./node/node\";\n@import \"./node/common/index\";\n@import \"./node/initial/initial\";\n@import \"./workarea\";\n@import \"."
},
{
"path": "src/lib/styles/components/modeltree.less",
"chars": 314,
"preview": "@modeltree-prefix-cls: ~\"model-tree\";\n\n.@{modeltree-prefix-cls} {\n padding-left: 15px;\n &-node {\n cursor: -webkit-g"
},
{
"path": "src/lib/styles/components/node/common/common.less",
"chars": 999,
"preview": "@common-prefix-cls: ~\"@{css-prefix}common-node\";\n\n.@{common-prefix-cls} {\n width: 180px;\n height: 30px;\n background-c"
},
{
"path": "src/lib/styles/components/node/common/incommonls.less",
"chars": 229,
"preview": "@in-common-prefix-cls: ~\"@{css-prefix}in-common-ls\";\n\n.@{in-common-prefix-cls} {\n display: flex;\n clear: both;\n margi"
},
{
"path": "src/lib/styles/components/node/common/index.less",
"chars": 69,
"preview": "@import \"./common\";\n@import \"./incommonls\";\n@import \"./outcommonls\";\n"
},
{
"path": "src/lib/styles/components/node/common/outcommonls.less",
"chars": 231,
"preview": "@out-common-prefix-cls: ~\"@{css-prefix}out-common-ls\";\n\n.@{out-common-prefix-cls} {\n display: flex;\n margin-top: -5px;"
},
{
"path": "src/lib/styles/components/node/initial/initial.less",
"chars": 794,
"preview": "@initial-prefix-cls: ~\"@{css-prefix}initial-node\";\n\n.@{initial-prefix-cls} {\n width: 30px;\n height: 30px;\n border: 1p"
},
{
"path": "src/lib/styles/components/node/node.less",
"chars": 429,
"preview": "@node-prefix-cls: ~\"@{css-prefix}node\";\n\n.@{node-prefix-cls} {\n .task-node-content{\n position: absolute;\n top:0;\n"
},
{
"path": "src/lib/styles/components/nodemodel.less",
"chars": 449,
"preview": "@nodemodel-prefix-cls: ~\"@{css-prefix}node-model\";\n\n.@{nodemodel-prefix-cls} {\n overflow: hidden;\n text-overflow: elli"
},
{
"path": "src/lib/styles/components/port.less",
"chars": 1159,
"preview": "@port-prefix-cls: ~\"@{css-prefix}port\";\n@inport-prefix-cls: ~\"@{css-prefix}port-in\";\n@outport-prefix-cls: ~\"@{css-prefix"
},
{
"path": "src/lib/styles/components/tline.less",
"chars": 572,
"preview": "@tline-prefix-cls: ~\"@{css-prefix}tline\";\n@hover-prefix-cls: ~\"@{css-prefix}tline-hover\";\n.@{tline-prefix-cls} {\n curso"
},
{
"path": "src/lib/styles/components/workarea.less",
"chars": 611,
"preview": "@workarea-prefix-cls: ~\"@{css-prefix}work-area\";\n\n.@{workarea-prefix-cls} {\n background-color: @body-background;\n "
},
{
"path": "src/lib/styles/custom.less",
"chars": 1268,
"preview": "// Prefix\n@css-prefix : task-;\n@css-prefix-icon : task-icon-;\n\n// Color\n@primary-color : #2d"
},
{
"path": "src/lib/styles/index.less",
"chars": 76,
"preview": "@import \"./common/index\";\n@import \"./components/index\";\n@import \"./custom\";\n"
},
{
"path": "src/lib/utils/firefoxCompatible.js",
"chars": 299,
"preview": "import $ from 'jquery'\nimport {browsers} from './tools.js'\n(window.___NODRAGEVENT = (browsers() === 'Firefox')) &&\n$(doc"
},
{
"path": "src/lib/utils/line.js",
"chars": 3719,
"preview": "function XYObject (x, y) {\n this.x = x\n this.y = y\n}\n\nexport default {\n /**\n * 计算二次贝塞尔曲线 Q线\n * @param Mxy 起点坐标\n "
},
{
"path": "src/lib/utils/tools.js",
"chars": 1139,
"preview": "// 判断参数是否是其中之一\nexport function oneOf (value, validList) {\n for (let i = 0; i < validList.length; i++) {\n if (value ="
},
{
"path": "src/main.js",
"chars": 437,
"preview": "import Vue from 'vue'\nimport Vuex from 'vuex'\nimport App from './App'\nimport {TaskNode, TaskNodeStore} from './lib/index"
},
{
"path": "static/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "test/e2e/custom-assertions/elementCount.js",
"chars": 765,
"preview": "// A custom Nightwatch assertion.\n// The assertion name is the filename.\n// Example usage:\n//\n// browser.assert.elemen"
},
{
"path": "test/e2e/nightwatch.conf.js",
"chars": 1028,
"preview": "require('babel-register')\nvar config = require('../../config')\n\n// http://nightwatchjs.org/gettingstarted#settings-file\n"
},
{
"path": "test/e2e/runner.js",
"chars": 1542,
"preview": "// 1. start the dev server using production config\nprocess.env.NODE_ENV = 'testing'\n\nconst webpack = require('webpack')\n"
},
{
"path": "test/e2e/specs/test.js",
"chars": 561,
"preview": "// For authoring Nightwatch tests, see\n// http://nightwatchjs.org/guide#usage\n\nmodule.exports = {\n 'default e2e tests':"
},
{
"path": "test/unit/.eslintrc",
"chars": 58,
"preview": "{\n \"env\": { \n \"jest\": true\n },\n \"globals\": { \n }\n}\n"
},
{
"path": "test/unit/jest.conf.js",
"chars": 697,
"preview": "const path = require('path')\n\nmodule.exports = {\n rootDir: path.resolve(__dirname, '../../'),\n moduleFileExtensions: ["
},
{
"path": "test/unit/setup.js",
"chars": 56,
"preview": "import Vue from 'vue'\n\nVue.config.productionTip = false\n"
},
{
"path": "test/unit/specs/HelloWorld.spec.js",
"chars": 354,
"preview": "import Vue from 'vue'\nimport HelloWorld from '@/components/HelloWorld'\n\ndescribe('HelloWorld.vue', () => {\n it('should "
}
]
About this extraction
This page contains the full source code of the Liwengbin/vue-task-node GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 85 files (190.5 KB), approximately 66.3k tokens, and a symbol index with 266 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.