diff --git a/.babelrc b/.babelrc index 4504fc6..02de3fc 100644 --- a/.babelrc +++ b/.babelrc @@ -8,7 +8,7 @@ }], "stage-2" ], - "plugins": ["transform-runtime"], + "plugins": ["transform-runtime", "syntax-dynamic-import"], "env": { "test": { "presets": ["env", "stage-2"], diff --git a/README.md b/README.md index 8a3e054..4b9fb81 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,65 @@ -# test-unit +# materialize-vue -> A Vue.js project +> A high quality component library based on materialize & vue 2.x + +[Icon 图标](http://mvui.savoygu.com/#/icon +) + +[Button 按钮](http://mvui.savoygu.com/#/button +) + +... + +comming soon ## Build Setup ``` bash -# install dependencies -npm install +# install dependencies 安装依赖 +npm run bootstrap + +# new component 新增组件 +npm run new componentName [chineseName] + +# remove component 移除组件 +npm run remove componentName + +# build component library entry file 构建组件库入口文件 +npm run build:file -# serve with hot reload at localhost:8080 +# build theme 构建主题 +npm run build:theme + +# use babel transfer es6 utils file to es5 grammer file 使用 babel 转换 utils 语法 +npm run build:utils + +# clean files 清除生成的文件 +npm run clean + +# serve with hot reload at localhost:8080 & develop document 开发文档 npm run dev -# build for production with minification -npm run build +# serve with hot reload at localhost:8080 & develop component 开发组件 +npm run dev:play -# build for production and view the bundle analyzer report -npm run build --report +# build for production with minification 组件库生产代码 +npm run dist -# run unit tests -npm run unit +# build document for production with minification 文档生产代码 +npm run deploy:build -# run e2e tests -npm run e2e +# deploy document to github branch gh-pages 部署文档生产代码到 gh-pages 分支 +npm run deploy -# run all tests -npm test -``` +# release npm 发布到 npm +npm run pub -For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). +# run unit tests 单元测试 +npm run test + +# development unit tests 开发单元测试 +npm run test:watch + +# lint code 代码语法检查 +npm run lint +``` diff --git a/build/bin/build-entry.js b/build/bin/build-entry.js index 92f588c..fe15479 100644 --- a/build/bin/build-entry.js +++ b/build/bin/build-entry.js @@ -12,7 +12,7 @@ var components = require('../../components.json') var path = require('path') var uppercamelcase = require('uppercamelcase') // Pascal case var render = require('json-templater/string') -var endOfLine = require('os').endOfLine // 换行 +var endOfLine = require('os').EOL // 换行 var fs = require('fs') var OUTPUT_PATH = path.join(__dirname, '../../src/index.js') diff --git a/build/bin/build-play.js b/build/bin/build-play.js new file mode 100644 index 0000000..bdd81d5 --- /dev/null +++ b/build/bin/build-play.js @@ -0,0 +1,46 @@ +/** + * 构建 playground App.vue + */ +var render = require('json-templater/string') +var uppercamelcase = require('uppercamelcase') // Pascal Case +var endOfLine = require('os').EOL // 换行 + +// playground 入口模板内容填充 +module.exports = function (componentsFile, componentName) { + var IMPORT_TEMPLATE = ` import {{name}} from './components/{{package}}.vue'` + var REGISTER_TEMPLATE = ` {{name}}Play: {{name}}` + // playground 入口模板 + var MAIN_TEMPLATE = ` +` + + var includeTemplate = [] + var registerTemplate = [] + Object.keys(componentsFile).forEach(function (name) { + var Name = uppercamelcase(name) + + includeTemplate.push(render(IMPORT_TEMPLATE, { + name: Name, + package: name + })) + + registerTemplate.push(render(REGISTER_TEMPLATE, { + name: Name + })) + }) + + return render(MAIN_TEMPLATE, { + include: includeTemplate.join(endOfLine), + register: registerTemplate.join(',' + endOfLine) + }) +} diff --git a/build/bin/new.js b/build/bin/new.js index b71682b..0d9cff2 100644 --- a/build/bin/new.js +++ b/build/bin/new.js @@ -1,6 +1,6 @@ /** * 创建组件 - * 命令: npm run new compnentName + * 命令: npm run new compnentName 中文名称 * 作用: * 1、 添加组件到 components.json * 2、 创建组件目录及 index.js 和 src/main.vue 文件(./packages/componentName) @@ -24,9 +24,26 @@ if (!process.argv[2]) { var path = require('path') var fileSave = require('file-save') var uppercamelcase = require('uppercamelcase') // Pascal Case -var componentName = process.argv[2] +var componentName = process.argv[2] // 组件名称 +var chineseName = process.argv[3] || componentName // 组件中文名称 var ComponentName = uppercamelcase(componentName) -var PackagePath = path.resolve(__dirname, '../../packages', componentName) +var PackagePath = path.resolve(__dirname, '../../packages', componentName) // 组件所在路径 +/* var IMPORT_TEMPLATE = ` import {{name}} from './components/{{package}}.vue'` +var REGISTER_TEMPLATE = ` {{name}}Play: {{name}}` +// playground 入口模板 +var MAIN_TEMPLATE = ` +` */ var Files = [ { filename: 'index.js', @@ -50,9 +67,29 @@ export default ${ComponentName}` } ` }, + { + filename: path.join('../../document/docs/', `${componentName}.md`), + content: `## ${ComponentName} ${chineseName}` + }, { filename: path.join('../../test/unit/specs', `${ComponentName}.spec.js`), content: `` + }, + { + filename: path.join('../../playground/components/', `${componentName}.vue`), + content: ` +` + }, + { + filename: path.join('../../playground/', `App.vue`), + content: `` } ] @@ -69,11 +106,45 @@ fileSave(path.join(__dirname, '../../components.json')) .write(JSON.stringify(componentsFile, null, 2), 'utf8') .end('\n') +// playground 入口模板内容填充 +/* var includeTemplate = [] +var registerTemplate = [] +Object.keys(componentsFile).forEach(function (name) { + var Name = uppercamelcase(name) + + includeTemplate.push(render(IMPORT_TEMPLATE, { + name: Name, + package: name + })) + + registerTemplate.push(render(REGISTER_TEMPLATE, { + name: Name + })) +}) + +Files[Files.length - 1].content = render(MAIN_TEMPLATE, { + include: includeTemplate.join(endOfLine), + register: registerTemplate.join(',' + endOfLine) +}) */ +var buildPlay = require('./build-play.js') +Files[Files.length - 1].content = buildPlay(componentsFile, componentName) + // 创建组件 Files.forEach(function (file) { fileSave(path.join(PackagePath, file.filename)) - .write(file.content, 'utf8') - .end('\n') + .write(file.content, 'utf8') + .end('\n') }) -console.log('DONE!') +// 添加到 nav.config.json +var navConfigFile = require('../../document/nav.config.json') +var groups = navConfigFile[0].groups +groups[groups.length - 1].list.push({ + path: `/${componentName}`, + title: `${ComponentName} ${chineseName}` +}) +fileSave(path.join(__dirname, '../../document/nav.config.json')) + .write(JSON.stringify(navConfigFile, null, ' '), 'utf8') + .end('\n') + +console.log('New DONE!') diff --git a/build/bin/remove.js b/build/bin/remove.js new file mode 100644 index 0000000..1048860 --- /dev/null +++ b/build/bin/remove.js @@ -0,0 +1,75 @@ +/** + * 移除组件 [warning] + * 命令:npm run remove componentName + * 作用:创建组件的逆过程 + */ +console.log() +process.on('exit', function () { + console.log() +}) + +// 没有输入组件名称 +if (!process.argv[2]) { + console.log('[组件名]必填 - Please enter remove component name') + process.exit(1) +} + +var path = require('path') +var rimraf = require('rimraf') +var fileSave = require('file-save') +var componentName = process.argv[2] + +var Files = [ + { + filename: '', + path: `../../packages/${componentName}` + }, + { + filename: `${componentName}.md`, + path: '../../document/docs' + }, + { + filename: `${componentName}.spec.js`, + path: '../../test/unit/specs' + }, + { + filename: `${componentName}.vue`, + path: '../../playground/components' + } +] + +Files.forEach(function (file) { + console.log(path.join(__dirname, file.path, file.filename)) + rimraf(path.join(__dirname, file.path, file.filename), {}, function (err) { + if (err) throw new Error(err) + }) +}) + +// 移除 components.json 中对应组件 +var componentsFile = require('../../components.json') +if (componentsFile[componentName]) { + delete componentsFile[componentName] + fileSave(path.join(__dirname, '../../components.json')) + .write(JSON.stringify(componentsFile, null, 2), 'utf8') + .end('\n') +} + +// 移除 playground 中对应组件 +var buildPlay = require('./build-play.js') +fileSave(path.join(__dirname, '../../playground/App.vue')) + .write(buildPlay(componentsFile, Object.keys(componentsFile).pop()), 'utf8') + .end('\n') + +// 移除 nav.config.json 对应路由 +var navConfigFile = require('../../document/nav.config.json') +var groups = navConfigFile[0].groups +for (let i = 0, len = groups.length; i < len; i++) { + groups[i].list = groups[i].list.filter(item => { + return item.path !== `/${componentName}` + }) +} +fileSave(path.join(__dirname, '../../document/nav.config.json')) + .write(JSON.stringify(navConfigFile, null, ' '), 'utf8') + .end('\n') + +console.log('Remove DONE!') diff --git a/build/strip-tags.js b/build/strip-tags.js new file mode 100644 index 0000000..e3319ad --- /dev/null +++ b/build/strip-tags.js @@ -0,0 +1,34 @@ +/*! + * strip-tags + * + * Copyright (c) 2015 Jon Schlinkert, contributors. + * Licensed under the MIT license. + */ + +var cheerio = require('cheerio') + +// 从字符串 str 中移除指定标签 +exports.strip = function (str, tags) { + var $ = cheerio.load(str, { decodeEntities: false, useHtmlParser2: true }) + + if (!tags || tags.length === 0) { + return str + } + + tags = !Array.isArray(tags) ? [tags] : tags + var len = tags.length + + while (len--) { + $(tags[len]).remove() + } + + return $.html() +}; + +// 从字符串 str 中返回指定标签 +exports.fetch = function (str, tag) { + var $ = cheerio.load(str, { decodeEntities: false }) + if (!tag) return str + + return $(tag).html() +} diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js index 41a94f0..a57b314 100644 --- a/build/webpack.base.conf.js +++ b/build/webpack.base.conf.js @@ -1,6 +1,9 @@ var path = require('path') var config = require('./config') var ExtractTextPlugin = require('extract-text-webpack-plugin') +var slugify = require('transliteration').slugify +var striptags = require('./strip-tags') +var md = require('markdown-it')() var isProd = process.env.NODE_ENV === 'production' function resolve (dir) { @@ -11,6 +14,23 @@ function assetsPath (_path) { return path.posix.join(config.dev.assetsSubDirectory, _path) } +function convert (str) { + str = str.replace(/(&#x)(\w{4});/gi, function ($0) { + return String.fromCharCode(parseInt(encodeURIComponent($0).replace(/(%26%23x)(\w{4})(%3B)/g, '$2'), 16)) + }) + return str +} + +function wrap (render) { + return function () { + return render.apply(this, arguments) + .replace('', '') + .replace('', '') + } +} + module.exports = { resolve: { extensions: ['.js', '.vue', '.json'], @@ -100,6 +120,56 @@ module.exports = { limit: 10000, name: assetsPath('fonts/[name].[hash:7].[ext]') } + }, + { + test: /\.md$/, + loader: 'vue-markdown-loader', + options: { + use: [ + [require('markdown-it-anchor'), { + level: 2, + slugify: slugify, + permalink: true, + permalinkBefore: true, + permalinkHref: function (slug) { + return '#' + slug + } + }], + [require('markdown-it-container'), 'demo', { + validate: function (params) { + return params.trim().match(/^demo\s*(.*)$/) + }, + render: function (tokens, idx) { + var m = tokens[idx].info.trim().match(/^demo\s*(.*)$/) + if (tokens[idx].nesting === 1) { + var description = (m && m.length > 1) ? m[1] : '' + var content = tokens[idx + 1].content + var html = convert(striptags.strip(content, ['script', 'style'])).replace(/(<[^>]*)=""(?=.*>)/g, '$1') + var script = striptags.fetch(content, 'script') + var style = striptags.fetch(content, 'style') + var jsfiddle = { html: html, script: script, style: style } + var descriptionHTML = description ? md.render(description) : '' + + jsfiddle = md.utils.escapeHtml(JSON.stringify(jsfiddle)) + + return ` +
${html}
+ ${descriptionHTML} +
` + } + return `
\n` + } + }], + [require('markdown-it-container'), 'tip'] + ], + preprocess: function (MarkdownIt, source) { + MarkdownIt.renderer.rules.table_open = function () { + return '' + } + MarkdownIt.renderer.rules.fence = wrap(MarkdownIt.renderer.rules.fence) + return source + } + } } ] } diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js index c508511..a463c3d 100644 --- a/build/webpack.dev.conf.js +++ b/build/webpack.dev.conf.js @@ -41,14 +41,15 @@ var webpackConfig = merge(baseWebpackConfig, { ] }) -if (isProd) { +if (isProd) { webpackConfig.output.chunkFilename = isProd ? '[name].[chunkhash:7].js' : '[name].js' webpackConfig.externals = [ { vue: 'Vue', 'vue-router': 'VueRouter' - }, - nodeExternals() + } + // , + // nodeExternals() ] webpackConfig.plugins.push.apply(webpackConfig.plugins, [ new webpack.optimize.UglifyJsPlugin({ @@ -57,7 +58,8 @@ if (isProd) { } }), new ExtractTextPlugin({ - filename: '[name].[contenthash:7].css' + filename: '[name].[contenthash:7].css', + allChunks: true }), // 压缩抽取的 CSS。 我们正在使用此插件,以便可以重复使用来自不同组件的可能重复的CSS。 new OptimizeCSSPlugin({ diff --git a/components.json b/components.json index 1b2a1d3..c836c05 100644 --- a/components.json +++ b/components.json @@ -1,3 +1,4 @@ { - "button": "./packages/button/index.js" + "button": "./packages/button/index.js", + "icon": "./packages/icon/index.js" } diff --git a/document/App.vue b/document/App.vue index 509ee04..48ac5f9 100644 --- a/document/App.vue +++ b/document/App.vue @@ -1,23 +1,143 @@ - - - + a { + color: #4078c0; + text-decoration: none; + } + code { + background-color: #f9fafc; + padding: 0 4px; + border: 1px solid #eaeefb; + border-radius: 4px; + } + button, input, select, textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; + color: inherit; + } + .hljs { + line-height: 1.8; + font-family: Menlo, Monaco, Consolas, Courier, monospace; + font-size: 12px; + padding: 18px 24px; + background-color: #f9fafc; + border: solid 1px #eaeefb; + margin-bottom: 25px; + border-radius: 4px; + -webkit-font-smoothing: auto; + } + .page-container { + width: 1140px; + padding: 55px 30px 0 30px; + margin: 0 auto; + + h2 { + font-size: 28px; + color: #1f2d3d; + margin: 0; + } + h3 { + font-size: 22px; + } + h2, h3, h4, h5 { + font-weight: normal; + color: #1f2f3d; + + &:hover a { + opacity: .4; + } + + a { + float: left; + margin-left: -20px; + opacity: 0; + cursor: pointer; + + &:hover { + opacity: .4; + } + } + } + p { + font-size: 14px; + color: #5e6d82; + line-height: 1.5em; + } + .tip { + padding: 8px 16px; + background-color: #ECF8FF; + border-radius: 4px; + border-left: #50bfff 5px solid; + margin-top: 20px; + + code { + background-color: rgba(#fff, .7); + color: #445368; + } + } + } + \ No newline at end of file diff --git a/document/components/Hello.vue b/document/components/Hello.vue deleted file mode 100644 index 438e263..0000000 --- a/document/components/Hello.vue +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - diff --git a/document/components/demo-block.vue b/document/components/demo-block.vue new file mode 100644 index 0000000..526bcbe --- /dev/null +++ b/document/components/demo-block.vue @@ -0,0 +1,245 @@ + + + diff --git a/document/components/footer-nav.vue b/document/components/footer-nav.vue new file mode 100644 index 0000000..aac6ee2 --- /dev/null +++ b/document/components/footer-nav.vue @@ -0,0 +1,97 @@ + + + \ No newline at end of file diff --git a/document/components/side-nav.vue b/document/components/side-nav.vue new file mode 100644 index 0000000..e073f2e --- /dev/null +++ b/document/components/side-nav.vue @@ -0,0 +1,76 @@ + + + diff --git a/document/docs/button.md b/document/docs/button.md new file mode 100644 index 0000000..51af7a1 --- /dev/null +++ b/document/docs/button.md @@ -0,0 +1,92 @@ +## Button 按钮 + +主要提供了 3 种主要按钮,Raised 按钮是一个标准按钮,意味着行动,并有一定深度,Floating 圆形按钮用于非常重要的功能。Flat 按钮通常用在cards 或 modals中。 + + +### Raised 浮动按钮 + +:::demo 通过 `icon` 属性可以为按钮添加图标,同时利用 `position` 属性更改图标在按钮中的位置。可以通过 `type` 属性为按钮设置颜色。 +```html +Button +Button +Button +Button + +``` +::: + +### Floating action 悬浮响应按钮 + +:::demo 通过设置 `floating` 属性为 `true`变换到悬浮响应按钮。 +```html + + +``` +::: + +### Flat 扁平按钮 + +:::demo 通过设置 `flat` 属性为 `true`变换到扁平按钮。 +```html + + +``` +::: + +### Submit 按钮 + +:::demo 通过设置 `nativeType` 属性为按钮指定类型。 +```html + +``` +::: + +### 大 + +此按钮有更大的高度,可以用于引人注意。 + +:::demo 通过设置 `size` 属性为按钮大小。 +```html +Button +Button +Button +``` +::: + +### 禁用 + +此样式可应用于所有按钮类型。 + +:::demo 通过设置 `disabled` 属性禁用按钮。 +```html +Button +Button +Button + +``` +::: + +### 加载中 + +:::demo `icon`属性的值可以是一个对象,属性可以 `Icon` 组件的所有 `props`。 +```html +加载中 +``` +::: + +### Attributes +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|---------- |-------- |---------- |------------- |-------- | +| floating | 响应悬浮类型按钮 | boolean | — | false | +| flat | 扁平按钮 | boolean | — | false | +| nativeType | 按钮类型 | string | button, submit, reset | button | +| disabled | 是否禁用按钮 | boolean | — | false | +| type | 按钮颜色, 需要是 class | string | — | — | +| size | 按钮大小 | string | large | — | +| icon | 带图标,Icon 组件中的图标名 | string/object | — | — | +| position | 图标位置 | string | — | — | + +### Events +| 事件名称 | 说明 | 回调参数 | +|---------- |-------- |---------- | +| click | 点击按钮时触发 | event | diff --git a/document/docs/icon.md b/document/docs/icon.md new file mode 100644 index 0000000..f4964d9 --- /dev/null +++ b/document/docs/icon.md @@ -0,0 +1,92 @@ + + +## Icon 图标 + +计划只提供组件库使用到的图标集合。如果想使用更多的 Goggle's [material-design-icons](https://github.com/google/material-design-icons) 中的图标,请在 [http://icons.savoygu.com](http://icons.savoygu.com) 上进行查找。 + +### 使用方式 + +:::demo 通过 `spin` 为图标添加旋转动画,`scale` 进行图标缩放,`flip` 进行水平和垂直方向翻转。 +```html +
+ 默认 + +
+
+ linear 旋转 + +
+
+ step(8) 旋转 + +
+
+ 缩放 + +
+
+ 垂直翻转 + +
+
+ 水平翻转 + +
+
+ 反转(白色) + +
+``` +::: + +使用详情参考:[https://github.com/savoygu/vue-md-icons](https://github.com/savoygu/vue-md-icons) + +### Attributes +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|---------- |-------- |---------- |------------- |-------- | +| name | 图标名称 | string | — | — | +| scale | 缩放比例 | number/string | 正整数 | 1 | +| spin | 是否 linear 旋转图标 | boolean | — | false | +| inverse | 是否反转图标 | boolean | — | false | +| pulse | 是否 step(8) 旋转图标 | boolean | — | false | +| flip | 翻转图标 | string | normal, horizontal, vertical | normal | +| label | 屏幕阅读器 | string | — | — | diff --git a/document/dom/class.js b/document/dom/class.js new file mode 100644 index 0000000..baf53f5 --- /dev/null +++ b/document/dom/class.js @@ -0,0 +1,15 @@ +export const hasClass = function (obj, cls) { + return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')) +} + +export const addClass = function (obj, cls) { + if (!hasClass(obj, cls)) obj.className += ' ' + cls +} + +export const removeClass = function (obj, cls) { + if (hasClass(obj, cls)) obj.className = obj.className.replace(new RegExp('(\\s|^)' + cls + '(\\s|$)'), ' ') +} + +export const toggleClass = function (obj, cls) { + hasClass(obj, cls) ? removeClass(obj, cls) : addClass(obj, cls) +} diff --git a/document/index.tpl b/document/index.tpl index a2a7969..8b1ef7c 100644 --- a/document/index.tpl +++ b/document/index.tpl @@ -10,4 +10,18 @@ <% } %> + diff --git a/document/main.js b/document/main.js index 84a4c17..d6e2a3e 100644 --- a/document/main.js +++ b/document/main.js @@ -2,7 +2,29 @@ // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from 'vue' import App from './App' -import router from './router' +import VueRouter from 'vue-router' +import routes from './route.config' +import Mvui from 'main/index.js' +import 'packages/theme-default/src/index.scss' +import { Button } from 'vue-multiple-button' +import 'vue-multiple-button/lib/button.css' +import SideNav from './components/side-nav.vue' +import FooterNav from './components/footer-nav.vue' +import DemoBlock from './components/demo-block.vue' +import 'highlight.js/styles/color-brewer.css' + +Vue.use(Mvui) +Vue.use(VueRouter) +Vue.component('vm-button', Button) +Vue.component('side-nav', SideNav) +Vue.component('footer-nav', FooterNav) +Vue.component('demo-block', DemoBlock) + +const router = new VueRouter({ + mode: 'hash', + base: __dirname, + routes: routes +}) Vue.config.productionTip = false diff --git a/document/mvui/CNAME b/document/mvui/CNAME deleted file mode 100644 index e7fce46..0000000 --- a/document/mvui/CNAME +++ /dev/null @@ -1,4 +0,0 @@ -mvui.savoygu.com -mvui.savoygu.com -mvui.savoygu.com -mvui.savoygu.com diff --git a/document/mvui/document.175246b.js b/document/mvui/document.175246b.js deleted file mode 100644 index 63a1062..0000000 --- a/document/mvui/document.175246b.js +++ /dev/null @@ -1 +0,0 @@ -webpackJsonp([0],[,function(t,e){t.exports=Vue},function(t,e,r){"use strict";(function(t){var a=r(1),n=r.n(a),s=r(19),i=r.n(s),c=r(13),u=r.n(c);n.a.use(i.a),e.a=new i.a({mode:"hash",base:t,routes:[{path:"/",name:"Hello",component:u.a}]})}).call(e,"/")},function(t,e,r){function a(t){r(10)}var n=r(0)(r(7),r(15),a,null,null);t.exports=n.exports},,function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=r(1),n=r.n(a),s=r(3),i=r.n(s),c=r(2);n.a.config.productionTip=!1,new n.a({el:"#app",router:c.a,render:function(t){return t(i.a)}})},,function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"app"}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"hello",data:function(){return{msg:"Welcome to Your Vue.js App"}}}},,function(t,e){},function(t,e){},function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTk2QkI4RkE3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTk2QkI4Rjk3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjU2QTEyNzk3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjU2QTEyN0E3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5WHowqAAAXNElEQVR42uxda4xd1XVe53XvvD2eGQ/lXQcKuDwc2eFlCAGnUn7kT6T86J/+aNTgsWPchJJYciEOCQ8hF+G0hFCIHRSEqAuJBCqRaUEIEbmBppAIBGnESwZje8COZ+y587j3PLq+ffadGJix53HvPevcuz60xPjec89ZZ+39nf04+9vLSZKEFArFzHA1BAqFEkShUIIoFEoQhUIJolAoQRQKJYhCoQRRKJQgCoUSRKFQKEEUCiWIQrFo+Gv/8/YH+f/nsMWSHHMChyhxqPTTdyncWyJ3ScD/ztipiB3wXSqu6P17avN+TyFC5ggv4tRnmoxWTP1+5F+Mz17GPvPl49EKBWd3UsfXllPiso8VcYtmPba3fNuKrBVXrGFCbrdPwXndFL49ltI367roOpSUI4pGypv9s7q+ltj6JxqOQ07Bo/DgxGb2/a8cX0CnAWXJ5etz2TqdHiXHKlKj9w6i9XX8Ic41DmI8FVHhmmXk85MmRhCzJoiTWnig9LfJRHihgydxzAxJhBr7Bh/hK3yu+p9568FliTJF2aKMZfVd/kQOcKP6OBmS9+Rjm4zJ6faoeN0gOUn61MncLX4CJ+MRhe+P/dRxhfew2Df4CF/hs4jWg8vQYUKYMuWyRRkLjeHQ8YP0Z9mekVjA8Qj3VVcuoeDiXu63lkUE0ym6FA5PXBaNVr7qtPumGyPR4Bt8hK/wWUR5chn6XJYoU5StUHL8l+XEx2axhkS6yk+chJuP4rXLyOkIKJkS0B67adcqfL/0Y4pixxSysK6V8Yl9Mz7i3272NRFlhzJsu24Z5l9E9Ahmwfrpoj7uw3fZtktsRZKjIXnndlLxin7+W8ZTBwPf6I+Tg9HwxK2Ob8citbCoBoaxBxMCvsFH+CqjHCtUvLzflKWUcpwB91gupG5f9/Rtx39ZZBtmWyJtphKzHTQW0diP36b4aJmcLj/zGaSkHJPb4SWFi/tOJd8bTqd9s48VBRh4RKeUX/vjgXg8cpyCmz05xkJylxSoa8M5RF0eJaVIIkGOsg2yTc3UgpD94psiWxEOqDNYoOIXuHnGwE5AXUTFi46FTnRw4l/dwEm7/pSxcYnCF/gE3zInh52RRJkVP7/MlKFQcgCbjifHTAQBfsb2qsgBO3e1Cpf3UXBej3nRJKKrxU/rcH/pKzz4vNIQuRJTEmZklbg6EL4SPsE3GQPzinmfhbJDGQolB+r8w58abs5y8DqRt4ABeptLRR7koY9NleybEYw/MPisvF/ayT1/SvDewcnIcG32wfiCAbEvoCZyGaGsitdyz6XdTctQJq6fcT5mloNfYvu5yFZkpEz+RT0UrFoqpxVBV+vQxIrkaPnrbqdvXs6hcjbU+Jq4Nvvwd/BFRNeq2npwWfkX95iyE9p6PM72P/MhCPANTBSKu5WITHcC074Y9CUTkYglKBgcV/aVtlM5Kpp/RHFjDdfka7MP/2wG6m72661QNigjlBXKTGBtsjWKNs5atCf44Uds3xc5YD8Wknd2BxWuGjCzIxLWQzlFj+IjU108OL7bafM5sm5DDdfka/8T+9AJXyTMpqFsUEYoK5SZ0NbjVlvX500Q4Ha2A+JuCcEvhVS8qp/8MzspHhMSfO7mVPaP35BMRp9JsCQldbX+hmvxNfnamzJfqVvtWnGZoGxQRigroYs6UbfvOGHn4ORVkTaIbEWwtqg3MNO+Zql0JGCdVuCayhDuG9uJB7vp+oR17FbZc+NauCauLWLmKkqXr6NsUEYoK6GtxwY6CXXnEs0n2faIHLCPhhR8bikFKwRN+xZddHWu5a7Ol9yCZ2ZwHKdOxufGNeKRqS/hmnLWW1VMmQSrl5oyEkqOPbZu02IJAsic9sU7B+5uF9cOmqUfeLOdOaAZYb/CA+M/Ic9NxUoYMNfD/PT84f7xB807EAnrrbgMUBZt1w1SEpCIqfjF1Om5EuQNth0iu1r8tPLP76LCpX2yWpHDk2dGH018p6brtD5hOHf04cR3okOTZ0lqPVAW3gVdlMhdrfsTW6drRhDgRrYJcbeKZQxTkenvegNt6YBQwrQvOxG+P3ZHEia9TuClS9Br1XKge8XnxLlxjelzZ/2w4tijDMxyoHIsVQg1zvYPcy7KeZx4jG2zyFakFJF7Whu1XT2QvhfJeryeVNdplYPo4Pi9hKd7VVxVC8O5cH4+N65hXgoKuGfEHmWAskjGxI49Ntu6XHOCAD9ie1PcLSepjDNY00fB8m6KpSyJx/jgg9LfJEfLK40818w+LXY5e5zKaMfKl+DcIlSCZp0cd3U59igDI4+WOa2LunvfvDoD9RrcNLqAjDy3yzfrtKqbAkggSDIZmSlYxzz9a8BaJ101zF2rh3BuSTJaCKGMDEGujHbedXch0X2ebbdEkkDC6a9cQoWVguS53P0JP5xcHY1W/tppD9KxgrdAw5QxnwPn4nOukrPeqkzBJb0m9oJltLtt3a07QYD1IkMAeS7/hw0BXMhzJwXJc/eV7kuiyIN8OOGuUhLP06JUeoxz4FxiZLRouTsDM9WO2OdBRtsIgrzHtk3kgH00JO+cTipc2S9jqyCaluf2xwcnfuB6LndHuEsSzdP4N/gtzoFzSZHRIsaQQiPmidyXgttsnW0YQYDvsh2ROGBPxkMqXjNA/qlCFsnZ8UdlX+kfk0pymlnMWH2JOBfz0sWI+C3OMS1dzPphhPVWHOPC5wdMzIUOzFFHb1lwB2ARF+ZOPt0gshWBPLe/wCRZlu6CIkSei/cE0fD4g2ZbVWceyxH5WPwGvzXrrSTJaDnG7oBoGS3qaCULggCPsv1W5IAd8tzLllJwvpx1WthMIfyg9OVotHy1WVQ4V37wsfgNfkuSZLQcW8Q4lruU/RVbRykrggDXiwwN3uQWnXTa1xMkz2W/on2lndNajpNtAGePw2/MOicBMlqs+8K7GBNbjrFgGe2iX0nUgiAvs+0S2YpgndaFPVRc3SdmVanZlfGjifOiw5PrT/oGvPpG/vDkEH4jZ70Vt86rl5rYimmdP41/s3Uzc4Isup9XNxwvz+0tyNAlONPrtO6hctR+QnluKqNt52O3pxvtClhvxTH0egtmEwbBMlrUxU21OFGtCHKYbavIATv3j90z26kIea4QZRtahfhIuT0anrjH7O3rpjNVHzPIaLG3Lh8Tj5TbRQihjlNyehxTwTLarbZOiiEIcBfbPnGhMtroChXW9JN/VqeYdyPEY4nwwPj6ZCL8C1T+T61JhDqRv8MxZgwlJG2BxzEsrBmgeEzseqt9ti6SNIIA8t6wm901eFDZ66d7M4UkQ56LVgTTvvtKaRqFqoTWymjxGb6LpUzrImYcuzaOIWKJmAptPWpaB2sd+V+yvSB1wB6s7qXgwiUyBpbJdBqFq6MjU18mKCKhRsTyEbx558/wnRmYJzLiV+DYBat6JQ/MX7B1UCxBAKHy3IQrH6W7MhY9MWkUMNAN948/8Mm35/jMDIKlpC3gmBWQtsAjifkE61b36kGQP7DdL7KrVZXnXiYpjYKZxj09Gh7f4kB4yIa/8ZmU1brIIYiYIXaJ3Nbjflv3xBME+DZbSVwIzfIIK89dJkSea18Ihu+XflD9yPztCJnW5Ri5VRntpNh8giVb5ygvBIHu9yaRrchYRO6fFU0CSTPQlDLte6zshx9O3g3D3yJajySd4EDaAsQMsRPaetxk61zty+YTCXRqjf9jO19cOLnyYV+p8QffpcreMXJ7BeRgh77Ds6SIYhGbMBgB2tld1DW0nGL4VxbZfKBbdUHdhol1dl7mOi0MOjttGgWT11lAwU9r1mMSsX0oxwSxgYyWOvKXtiAvBPkV239I7GqZdVqX9FDw2V5+UoYipn2nt/WRMK3LMQlW9poYCZ7WfcrWsdwSBNggMrRYdcLdhjas0+q28lzJOc8bOU7jWLh2AwzEyLxclYm6Z2ZuBEE+YLtTZEVA9tzPdBh5biJ3q5rGD8yRjXbNAPkcm0RuyjTUqf3NQBDge2yHJFaGeDyi4tUD5J3WIXmzs8Y9NDgG3un80OCYIDZCHxqHbJ2iZiEIGmnB8twgzYIkd7vMxiBON59GLJyBQLKMdiM1qOPXyMn2f2f7X5EDdshzkUbhAtED0oZMXCAGiIXgtAW/YXusURdr9NsoufLcgmP20zKy2ErrNSNGRuunMUAshL7zABq61q/RBPkd2yNSn57+X3ZTQZA8t7H3H5p7RwwEt6KP2DrUtAQBIIUsiwt99Kf+tydFntuocVhVRltNWyBTRlumGslopRNkhO1mkRVlLCT3jHYzqyU48WSN+1ZWRou0BZDRyp3Ju9nWnaYnCHA3216JlQWy0gKy557dJSaNQn0nKNL1VrhnwTLavbbOUKsQBBApzzVpFHqsPFdIGoW6AfeG7cMwrcv3TC0io80LQZ5me07kU3WkYqSlhYvkpFGoz8C8bO7RyGjlpi14ztaVliMIIFOeizQKbpI+WdsDGfLcWvcmsaK53b4gdUW3lENZXjxrgrzNdq/IAftohbzzOql4eV/zjUUcu96K7w33KFhGi7rxVisTBEBSxWPiiqYqz71mGfmDQuS5tSIHstHyPZnd7+XKaI+RgKSxEggySWmKaXkVaSwi5xSbRmGiSdZpxVZGy/eEexMso73R1o2WJwiwk+11kQNZrNO6oo+Cc7vz39Wy07q4l+CKfnNvQu/ndVsnSAkifcCOAXq7R8W1y9JdRvI87QvfnTRtgdPeujLavBLkv9meEPnUHS2Tf1EPFT67lOKRnE77munrsrkH/+IeydPXqAO/VoLMDMhz5T2irTzXpFHoKeRPnluV0XYX0mlduTLamIRJtKUR5CDbbSIrGPfX/eUdVFyTQ3luku6OaNIW/HmH5LQFt9k6oAQ5Ab7PNiyxkmGndUhRvTNyJM9F1wrZaM9IZbQmG63MocewxIejRIKg+DaKbEXGI3KWBtT2hUFKyonUZeEfB3xkX4vsM3wXvIx/IwmMqCu0WH/B9qLIpzG6Wp/rpWBFj/x1WnaCAb4G7LPgad0XbZmTEmTukDnti0yzgZvKcwNPtDzXyGjZR5ONFincVEbbVAR5je0hkU/lkTL5F3TZzQ2EvjysJr1hH/0LuiVPTz9ky1oJsgB8iwQsN5hplISns5Hn9hXl9eurMlr2zUzrVsQuk5m0ZUxKkIXhKNsWkQN2yHNPhzx3WbqQMRZGYCOjXWZ8FDzjtsWWsRJkEfgh2zvyOvhWnovsucu75GTPtdlo4RN8i+W+s3nHli0pQRaPIXEeVeW53V46YJciz2Uf4IvxiX0juW/9h/JQ8fJCkGfZnpE5YK9QsHIJBZcIkOdW141d3Gt8EiyjfcaWqRKk6Z84kOc6duODjmzluUZGyz4g6Q18UhltaxHkXbbtIgfsRyvknQt5bobZc6dltP3Gl0SudmW7LUslSJ1mPUbFeWVUepDnDpB3SgazRtW0BXxt+ABfhE7rypyVbCKCTLF9U2QrgjQKg3b7zskGv3eI0+XsuDZ8EJy2YJMtQyVIHfEztldFDtghz728j4LzGphGoZq2gK9ZMDuwiH3ngTJ7OG+VLY8EAeTKc9ts9lwk42zEOi2st+JrYZIA1xYso12Xx4qWV4K8xPZzka3ISCrPDVY1YJ1WtfVYZWW0ctdbPW7LTAnSQHyDJCoykEYhTNdpuUsK6YDZqQ85cG5cw6y3CsWmLYBXG/NayfJMkI8oVR/KG7AfC8k7u4MKVw2kM1r1eB2RpDNXuAauJVhGe6stKyVIBrid7YA4r6o5N5BG4cxOI3mtaeWtymj53LiG4FwmKJs78lzB8k4QVIsN4ryqynN7AzP1ShXIc2tYg3GuSpJO6/aKltHK3KWmhQgCPMm2R+SAfTSkANlzV9Rw2rc6MDcyWtHZaPfYsiElSPaQOYVYiSnxiIprB8kpeGn+v8U2mZD8FjxzTpybKjqtqwQ5Od5g2yGyq4Xsued3UeHSvsW3IlUZLZ8L5xSctmCHLRMliCBgN/AJcV7F6SpbjBe8gUWkUaimLeBzmOUsU2JltOMkcbd+JQiNkYB8ErNVbPe0Nmq72i4kXMiwNUnfe+AcOJfgfCWbbVkoQQTiR2xvivPKynODNX0ULF9AGoVq2gL+Lc4hWEaL2N/XTBWq2Qgic3BYled2+ekeVfOV51az0WKNF59DsIx2XbNVpmYkyPNsuyWSBBJYf+USKsxHnlvNRsu/8WXLaHfb2CtBcoD1Ir2CPJf/wxSt2xmkupGT9c6QtoCPNdO66FfJldGub8aK1KwEeY9tm8gB+2hI3jmdVLii/+RbBdktfHAsfpPIfSm4zcZcCZIjfJftiMQBO1IQQBrrn3qCRYZ20SOOMTLacbHrrRDjW5q1EjUzQbiTTzeIbEUgz+232XNne59RfX+CbLT9omW0iHFFCZJPPMr2W5EDdshzL1tKwfkzrNOqrrfi73CMYBntKzbGpATJL64X6RXWZRVtxlnP+VgaBZO2wEu/wzGatkAJUk+8zLZLZCuCdVoXciux+rhVuXYVMD7Dd7Hc9Va7bGyVIE0Amf3kaXnuIHm9qTwXhr/xmWAZbUXk+E4JsmAcZtsqcsAOee6Z7VS08lwY/sZngmW0W21MlSBNhLvY9onzCqtIxipUuKqf3L6iMfyNz4RO6+6zsWwJ+NRawNvep8S1IhMxucie+8VT0o+6PIqPiB17rG+lCtNqBPkl2wts14gbsCONwqVLzT8Fr7d6wcawZeBS60Hm1GSSTu+a6d5EY6cEyQ5/YLtf4oCd4iQ1ma3H/TZ2SpAWwLfZSqSYK0o2ZqQEaQ1AN32T1vs54yYbMyVIC+GBVuwyLLBL+kCr3rzb4oV/vdZ/jZESZHb8iqS9F5GFp2yMlCAtjCENgcZGCTI79rPdqWH4FO60sVGCKOh7bIc0DNM4ZGNCShAFEFKOsyDVARttTJQgGoJpPMb2Gw2DicFjGgYlyExYpyHQGChBZsfv2B5p4ft/xMZAoQSZFZso3TKo1VC2965QgpwQI2w3t+B932zvXaEEOSnuZtvbQve7196zQgkyZ6zXe1UoQWbH02zPtcB9PmfvVaEEmTeG9B6VIIrZ8RbbvU18f/fae1QoQRYMJKU81oT3dYwkJj1VguQOk9REaY2Pw4323hRKkEVjJ9vrTXQ/r9t7UihBaobr9V6UIIrZ8Wu2J5rgPp6w96JQgtQcG2jmhGl5QWzvQaEEqQsOst2WY/9vs/egUILUtZIN59Dv4ZyTWwmSEyDnUx7luRtJar4qJUjT4RdsL+bI3xetzwolSMOwTn1Vgihmx2tsD+XAz4esrwolSMPxLZK9XGPS+qhQgmSCo2xbBPu3xfqoUIJkhh+yvSPQr3esbwolSOYYUp+UIIrZ8SzbM4L8ecb6pFCC6BNbWw8lSB7wLtt2AX5st74olCDikPWskfRZNSVIi2OKst2+c5P1QaEEEYuH2V7N4Lqv2msrlCDisa5FrqkEUSwIL7E93sDrPW6vqVCC5AaN0l/kVZ+iBGlxfMR2awOuc6u9lkIJkjvcwXagjuc/YK+hUILkEgnVdxeRDfYaCiVIbvEk2546nHePPbdCCZJ7rMvJORVKkEzwBtuOGp5vhz2nQgnSNMBu6uM1OM84Nedu80qQFscY1SYfx2Z7LoUSpOlwH9ubi/j9m/YcCiWIDth1YK4EaUU8z7Z7Ab/bbX+rUII0PdY36DcKJUgu8R7btnkcv83+RqEEaRncwnZkDscdsccqlCAthQrbDXM47gZ7rEIJ0nJ4lO2VE3z/ij1GoQRpWaxb4HcKJUhL4GW2XTN8vst+p1CCtDw+Oc6Y6/hEoQRpCRxm23rcv7fazxRKEIXFXZRuwBDZvxUC4GsIREHflguDkyQqaVYotIulUChBFAoliEKhBFEolCAKhRJEoVCCKBRKEIVCCaJQKJQgCoUSRKFQgigUShCFIhP8vwADACog5YM65zugAAAAAElFTkSuQmCC"},function(t,e,r){function a(t){r(11)}var n=r(0)(r(8),r(16),a,"data-v-8e8875f4",null);t.exports=n.exports},,function(t,e,r){t.exports={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{attrs:{id:"app"}},[a("img",{attrs:{src:r(12)}}),t._v(" "),a("router-view")],1)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"hello"},[r("h1",[t._v(t._s(t.msg))]),t._v(" "),r("h2",[t._v("Essential Links")]),t._v(" "),t._m(0),t._v(" "),r("h2",[t._v("Ecosystem")]),t._v(" "),t._m(1),t._v(" "),r("h3")])},staticRenderFns:[function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ul",[r("li",[r("a",{attrs:{href:"https://vuejs.org/",target:"_blank"}},[t._v("Core Docs")])]),t._v(" "),r("li",[r("a",{attrs:{href:"https://forum.vuejs.org/",target:"_blank"}},[t._v("Forum")])]),t._v(" "),r("li",[r("a",{attrs:{href:"https://gitter.im/vuejs/vue",target:"_blank"}},[t._v("Gitter Chat")])]),t._v(" "),r("li",[r("a",{attrs:{href:"https://twitter.com/vuejs",target:"_blank"}},[t._v("Twitter")])]),t._v(" "),r("br"),t._v(" "),r("li",[r("a",{attrs:{href:"http://vuejs-templates.github.io/webpack/",target:"_blank"}},[t._v("Docs for This Template")])])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ul",[r("li",[r("a",{attrs:{href:"http://router.vuejs.org/",target:"_blank"}},[t._v("vue-router")])]),t._v(" "),r("li",[r("a",{attrs:{href:"http://vuex.vuejs.org/",target:"_blank"}},[t._v("vuex")])]),t._v(" "),r("li",[r("a",{attrs:{href:"http://vue-loader.vuejs.org/",target:"_blank"}},[t._v("vue-loader")])]),t._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/vuejs/awesome-vue",target:"_blank"}},[t._v("awesome-vue")])])])}]}},,,function(t,e){t.exports=VueRouter}],[5]); \ No newline at end of file diff --git a/document/mvui/document.83e77ca.css b/document/mvui/document.83e77ca.css deleted file mode 100644 index f6844cf..0000000 --- a/document/mvui/document.83e77ca.css +++ /dev/null @@ -1 +0,0 @@ -#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;margin-top:60px}h1[data-v-8e8875f4],h2[data-v-8e8875f4]{font-weight:400}ul[data-v-8e8875f4]{list-style-type:none;padding:0}li[data-v-8e8875f4]{display:inline-block;margin:0 10px}a[data-v-8e8875f4]{color:#42b983} \ No newline at end of file diff --git a/document/mvui/index.html b/document/mvui/index.html deleted file mode 100644 index da151e6..0000000 --- a/document/mvui/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - document - - -
- - - - - diff --git a/document/mvui/manifest.cef9e0a.js b/document/mvui/manifest.cef9e0a.js deleted file mode 100644 index 0b8c3e9..0000000 --- a/document/mvui/manifest.cef9e0a.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,u,c){for(var i,a,f,l=0,s=[];l1&&void 0!==arguments[1]&&arguments[1];e.installed||o.map(function(e){n.component(e.name,e)})};"undefined"!=typeof window&&window.Vue&&i(window.Vue),n.default={version:"0.0.0",install:i,Button:r.a}},,,function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default={name:"MvButton"}},,,,,function(e,n,t){var r=t(0)(t(9),t(17),null,null,null);e.exports=r.exports},,,function(e,n){e.exports={render:function(){var e=this,n=e.$createElement;return(e._self._c||n)("div",{staticClass:"mv-button"})},staticRenderFns:[]}},function(e,n){e.exports=function(e,n){for(var t=[],r={},o=0;ot.parts.length&&(r.parts.length=t.parts.length)}else{for(var a=[],o=0;o +
+
+
+ +
+
+ + +
+
+
+ + + \ No newline at end of file diff --git a/document/route.config.js b/document/route.config.js new file mode 100644 index 0000000..6f02ca5 --- /dev/null +++ b/document/route.config.js @@ -0,0 +1,81 @@ +import navConfig from './nav.config.json' + +// 页面 +const LOAD_MAP = name => { + // return r => require.ensure([], () => r(require(`./pages/${name}.vue`))) + return () => import(`./pages/${name}.vue`) +} + +/* eslint-disable no-unused-vars */ +const load = function (path) { + return LOAD_MAP(path) +} + +// 组件文档 +const LOAD_DOCS_MAP = name => { // + // return r => require.ensure([], () => r(require(`./docs${name}.md`)), 'md') + return () => import(/* webpackChunkName: "md" */ `./docs${name}.md`) +} + +const loadDocs = function (path) { + return LOAD_DOCS_MAP(path) +} + +const registerRoute = (navConfig) => { + let route = [] + + route.push({ + path: '/', + redirect: '/layout', + component: load('component'), + children: [] + }) + + navConfig.forEach(nav => { + if (nav.groups) { + nav.groups.forEach(group => { + group.list.forEach(item => { + addRoute(item) + }) + }) + } + }) + + function addRoute (page) { + const component = loadDocs(page.path) + let child = { + path: page.path.slice(1), + meta: { + title: page.title || page.name, + description: page.description + }, + name: 'component-' + (page.title || page.name), + component: component.default || component + } + + route[0].children.push(child) + } + + return route +} + +/* eslint-disable no-unused-vars */ +const generateMiscRoutes = function () { + let indexRoute = { + path: '/', + meta: {}, + name: 'home', + redirect: '/component' + // component: load('index') + } + + return [indexRoute] +} + +let route = registerRoute(navConfig) + +console.log(route) + +// route = route.concat(generateMiscRoutes()) + +export default route diff --git a/document/router/index.js b/document/router/index.js deleted file mode 100644 index 074bdd1..0000000 --- a/document/router/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Vue from 'vue' -import Router from 'vue-router' -import Hello from '../components/Hello' - -Vue.use(Router) - -export default new Router({ - mode: 'hash', - base: __dirname, - routes: [ - { - path: '/', - name: 'Hello', - component: Hello - } - ] -}) diff --git a/lib/button.js b/lib/button.js index 157af48..34b11e2 100644 --- a/lib/button.js +++ b/lib/button.js @@ -84,7 +84,7 @@ var Component = __webpack_require__(2)( /* moduleIdentifier (server only) */ null ) -Component.options.__file = "F:\\GitRepository\\mvui\\packages\\button\\src\\main.vue" +Component.options.__file = "F:\\GitRepository\\materialize-vue\\packages\\button\\src\\main.vue" if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} if (Component.options.functional) {console.error("[vue-loader] main.vue: functional components are not supported with templates, they should use render functions.")} @@ -95,9 +95,9 @@ if (false) {(function () { if (!hotAPI.compatible) return module.hot.accept() if (!module.hot.data) { - hotAPI.createRecord("data-v-6892be5a", Component.options) + hotAPI.createRecord("data-v-ae66cdd4", Component.options) } else { - hotAPI.reload("data-v-6892be5a", Component.options) + hotAPI.reload("data-v-ae66cdd4", Component.options) } module.hot.dispose(function (data) { disposed = true @@ -233,7 +233,7 @@ module.exports.render._withStripped = true if (false) { module.hot.accept() if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-6892be5a", module.exports) + require("vue-hot-reload-api").rerender("data-v-ae66cdd4", module.exports) } } diff --git a/lib/index.js b/lib/index.js index f9e2536..12519a1 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.MVUI=t():e.MVUI=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t,n){"use strict";var o=n(3),r=n.n(o);r.a.install=function(e){e.component(r.a.name,r.a)},t.a=r.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n(0),r=[o.a],i=function e(t){arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.installed||r.map(function(e){t.component(e.name,e)})};"undefined"!=typeof window&&window.Vue&&i(window.Vue),t.default={version:"0.0.0",install:i,Button:o.a}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"MvButton"}},function(e,t,n){var o=n(4)(n(2),n(5),null,null,null);o.options.__file="F:\\GitRepository\\mvui\\packages\\button\\src\\main.vue",o.esModule&&Object.keys(o.esModule).some(function(e){return"default"!==e&&"__"!==e.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),o.options.functional&&console.error("[vue-loader] main.vue: functional components are not supported with templates, they should use render functions."),e.exports=o.exports},function(e,t){e.exports=function(e,t,n,o,r){var i,u=e=e||{},s=typeof e.default;"object"!==s&&"function"!==s||(i=e,u=e.default);var a="function"==typeof u?u.options:u;t&&(a.render=t.render,a.staticRenderFns=t.staticRenderFns),o&&(a._scopeId=o);var c;if(r?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},a._ssrRegister=c):n&&(c=n),c){var f=a.functional,d=f?a.render:a.beforeCreate;f?a.render=function(e,t){return c.call(t),d(e,t)}:a.beforeCreate=d?[].concat(d,c):[c]}return{esModule:i,exports:u,options:a}}},function(e,t,n){e.exports={render:function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{staticClass:"mv-button"})},staticRenderFns:[]},e.exports.render._withStripped=!0}])}); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.MVUI=t():e.MVUI=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t,n){"use strict";var o=n(3),r=n.n(o);r.a.install=function(e){e.component(r.a.name,r.a)},t.a=r.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n(0),r=[o.a],i=function e(t){arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.installed||r.map(function(e){t.component(e.name,e)})};"undefined"!=typeof window&&window.Vue&&i(window.Vue),t.default={version:"0.0.0",install:i,Button:o.a}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"MvButton"}},function(e,t,n){var o=n(4)(n(2),n(5),null,null,null);o.options.__file="F:\\GitRepository\\materialize-vue\\packages\\button\\src\\main.vue",o.esModule&&Object.keys(o.esModule).some(function(e){return"default"!==e&&"__"!==e.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),o.options.functional&&console.error("[vue-loader] main.vue: functional components are not supported with templates, they should use render functions."),e.exports=o.exports},function(e,t){e.exports=function(e,t,n,o,r){var i,u=e=e||{},s=typeof e.default;"object"!==s&&"function"!==s||(i=e,u=e.default);var a="function"==typeof u?u.options:u;t&&(a.render=t.render,a.staticRenderFns=t.staticRenderFns),o&&(a._scopeId=o);var c;if(r?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},a._ssrRegister=c):n&&(c=n),c){var f=a.functional,d=f?a.render:a.beforeCreate;f?a.render=function(e,t){return c.call(t),d(e,t)}:a.beforeCreate=d?[].concat(d,c):[c]}return{esModule:i,exports:u,options:a}}},function(e,t,n){e.exports={render:function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{staticClass:"mv-button"})},staticRenderFns:[]},e.exports.render._withStripped=!0}])}); \ No newline at end of file diff --git a/lib/mvui.common.js b/lib/mvui.common.js index 75d8d6e..06e026c 100644 --- a/lib/mvui.common.js +++ b/lib/mvui.common.js @@ -151,7 +151,7 @@ var Component = __webpack_require__(4)( /* moduleIdentifier (server only) */ null ) -Component.options.__file = "F:\\GitRepository\\mvui\\packages\\button\\src\\main.vue" +Component.options.__file = "F:\\GitRepository\\materialize-vue\\packages\\button\\src\\main.vue" if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} if (Component.options.functional) {console.error("[vue-loader] main.vue: functional components are not supported with templates, they should use render functions.")} @@ -162,9 +162,9 @@ if (false) {(function () { if (!hotAPI.compatible) return module.hot.accept() if (!module.hot.data) { - hotAPI.createRecord("data-v-6892be5a", Component.options) + hotAPI.createRecord("data-v-ae66cdd4", Component.options) } else { - hotAPI.reload("data-v-6892be5a", Component.options) + hotAPI.reload("data-v-ae66cdd4", Component.options) } module.hot.dispose(function (data) { disposed = true @@ -284,7 +284,7 @@ module.exports.render._withStripped = true if (false) { module.hot.accept() if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-6892be5a", module.exports) + require("vue-hot-reload-api").rerender("data-v-ae66cdd4", module.exports) } } diff --git a/package.json b/package.json index 503df1b..6fd96b2 100644 --- a/package.json +++ b/package.json @@ -10,36 +10,21 @@ "packages" ], "scripts": { - "//": "使用 yarn 或者 npm 安装依赖", "bootstrap": "yarn || npm i", - "//": "新建组件,比如,新建按钮组件 npm run new button", "new": "node build/bin/new.js", - "//": "构建项目入口 src/index.js", + "remove": "node build/bin/remove.js", "build:file": "node build/bin/build-entry.js", - "//": "使用 gulp 构建主题,并从 packages/theme-default 复制到 lib/theme-default 目录下", "build:theme": "gulp build --gulpfile ./build/bin/build-style.js && cp-cli packages/theme-default/lib lib/theme-default", - "//": "使用 babel 构建工具文件 src/**", "build:utils": "cross-env BABEL_ENV=utils babel src --out-dir lib --ignore src/index.js", - "//": "清除构建生成的文件:lib 目录、组件 lib 目录、测试覆盖率、组件 node_modules 目录", "clean": "rimraf lib && rimraf packages/*/lib && rimraf test/**/coverage && lerna clean --yes", - "//": "开发文档:安装依赖,构建项目入口, 然后开启 webpack dev server", - "dev": "npm run bootstrap && npm run build:file && webpack-dev-server --content-base ./document --open --inline --hot --watch --config ./build/webpack.dev.conf.js", - "//": "开发组件:构建项目入口 -> 然后开启 webpack dev server", - "dev:play": "npm run build:file && cross-env PLAY_ENV=true webpack-dev-server --content-base ./playground --open --inline --hot --watch --config ./build/webpack.dev.conf.js", - "//": "生产构建:清除文件 -> 构建入口文件 -> 执行 eslint -> 构建 commonjs 规范 npm 入口文件、构建单个组件文件、构建 umd 规范 unpkg 入口文件、构建工具文件、构建主题", + "dev": "npm run bootstrap && npm run build:file && webpack-dev-server --content-base ./document --inline --watch --hot --config ./build/webpack.dev.conf.js --quiet --info=false", + "dev:play": "npm run build:file && cross-env PLAY_ENV=true webpack-dev-server --content-base ./playground --inline --watch --hot --config ./build/webpack.dev.conf.js --info=false", "dist": "npm run clean && npm run build:file && npm run lint && webpack --config ./build/webpack.common.conf.js --progress && webpack --config ./build/webpack.component.conf.js --progress && webpack --config ./build/webpack.prod.conf.js --progress && npm run build:utils && npm run build:theme", - "//": "部署构建:构建项目入口文件 -> 开启生产环境,生成文档 document/mvui -> 写入 CNAME", "deploy:build": "npm run build:file && cross-env NODE_ENV='production' webpack --config ./build/webpack.dev.conf.js && echo mvui.savoygu.com>>document/mvui/CNAME", - "//": "部署到 gh-pages:部署构建 -> 上传文档到远程 gh-pages 分支 -> 移除文档生成目录", - "//": "加入 Travis CI 之后,通过 Travis CI 部署到 gh-pages", "deploy": "npm run deploy:build && gh-pages -d document/mvui --remote origin && rimraf document/mvui", - "//": "发布:安装依赖 -> 发布之前对git 进行状态、冲突、版本差异检测 -> 发布到 npm", "pub": "npm run bootstrap && sh buid/git-release.sh && sh build/release.sh", - "//": "单元测试", "test": "npm run lint && cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run", - "//": "单元测试开启", "test:watch": "karma start test/unit/karma.conf.js", - "//": "eslint 检测", "lint": "eslint --ext .js,.vue src packages build test/unit/specs" }, "repository": { @@ -59,7 +44,9 @@ }, "unpkg": "lib/index.js", "style": "lib/theme-default/index.css", - "dependencies": {}, + "dependencies": { + "vue-md-icons": "^1.2.0" + }, "peerDependencies": { "vue": "^2.3.3" }, @@ -71,12 +58,15 @@ "babel-loader": "^7.1.1", "babel-plugin-istanbul": "^4.1.1", "babel-plugin-module-resolver": "^2.7.1", + "babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-plugin-transform-runtime": "^6.22.0", "babel-preset-env": "^1.3.2", "babel-preset-stage-2": "^6.22.0", "chai": "^3.5.0", "chalk": "^2.0.1", + "cheerio": "^0.18.0", "copy-webpack-plugin": "^4.0.1", + "coveralls": "^2.13.1", "cross-env": "^5.0.1", "css-loader": "^0.28.5", "cssnano": "^3.10.0", @@ -95,6 +85,7 @@ "gulp": "^3.9.1", "gulp-cssmin": "^0.2.0", "gulp-sass": "^3.1.0", + "highlight.js": "^9.12.0", "html-webpack-plugin": "^2.28.0", "http-proxy-middleware": "^0.17.3", "inject-loader": "^3.0.0", @@ -110,6 +101,9 @@ "karma-webpack": "^2.0.2", "lerna": "^2.0.0", "lolex": "^1.5.2", + "markdown-it": "^8.4.0", + "markdown-it-anchor": "^4.0.0", + "markdown-it-container": "^2.0.0", "mocha": "^3.2.0", "node-sass": "^4.0.0", "optimize-css-assets-webpack-plugin": "^2.0.0", @@ -121,10 +115,13 @@ "sinon": "^2.1.0", "sinon-chai": "^2.8.0", "style-loader": "^0.18.2", + "transliteration": "^1.6.2", "uppercamelcase": "^3.0.0", "url-loader": "^0.5.8", "vue": "^2.3.3", "vue-loader": "^12.1.0", + "vue-markdown-loader": "^2.1.0", + "vue-multiple-button": "^1.0.3", "vue-router": "^2.6.0", "vue-style-loader": "^3.0.1", "vue-template-compiler": "^2.0.0", diff --git a/packages/button/src/main.vue b/packages/button/src/main.vue index 6135847..ece6d1e 100644 --- a/packages/button/src/main.vue +++ b/packages/button/src/main.vue @@ -1,10 +1,62 @@ - diff --git a/packages/icon/index.js b/packages/icon/index.js new file mode 100644 index 0000000..7b0d804 --- /dev/null +++ b/packages/icon/index.js @@ -0,0 +1,7 @@ +import Icon from './src/main' + +Icon.install = function (Vue) { + Vue.component(Icon.name, Icon) +} + +export default Icon diff --git a/packages/icon/src/main.vue b/packages/icon/src/main.vue new file mode 100644 index 0000000..d37029d --- /dev/null +++ b/packages/icon/src/main.vue @@ -0,0 +1,57 @@ + + + diff --git a/packages/theme-default/src/buttons.scss b/packages/theme-default/src/buttons.scss index 43e1eab..00555c0 100644 --- a/packages/theme-default/src/buttons.scss +++ b/packages/theme-default/src/buttons.scss @@ -3,6 +3,38 @@ @import "https://github.com/global"; @import "https://github.com/typography"; +.mv-button { + .mv-icon { + max-width: 1.6em; + vertical-align: top; + margin-top: calc(15px - .5em); + &.right { + margin-left: 15px; + } + &.left { + margin-right: 15px; + } + } + &.btn-large { + .mv-icon { + width: auto; + height: 1.6em; + vertical-align: top; + margin-top: calc(22px - .5em); + } + } + &.is-loading { + cursor: default; + box-shadow: none; + pointer-events: none; + } + &.btn-floating { + .mv-icon { + margin-top: calc(17px - .5em); + } + } +} + // shared styles .btn, .btn-flat { diff --git a/packages/theme-default/src/icon.scss b/packages/theme-default/src/icon.scss new file mode 100644 index 0000000..54e2842 --- /dev/null +++ b/packages/theme-default/src/icon.scss @@ -0,0 +1,29 @@ +/* fallback */ +.mv-icon { + width: auto; + height: 1.3em; +} +/* +@font-face { + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/materialicons/v29/2fcrYFNaTjcS6g4U3t-Y5ZjZjT5FdEJ140U2DJYC3mY.woff2) format('woff2'); +} + +.material-icons { + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -webkit-font-feature-settings: 'liga'; + -webkit-font-smoothing: antialiased; +} +*/ diff --git a/packages/theme-default/src/index.scss b/packages/theme-default/src/index.scss index a26b642..b93ad40 100644 --- a/packages/theme-default/src/index.scss +++ b/packages/theme-default/src/index.scss @@ -12,6 +12,7 @@ // components @import "https://github.com/global"; @import "https://github.com/badges"; +@import "https://github.com/icon"; @import "https://github.com/icons-material-design"; @import "https://github.com/grid"; @import "https://github.com/navbar"; diff --git a/playground/App.vue b/playground/App.vue index d841aea..f681d88 100644 --- a/playground/App.vue +++ b/playground/App.vue @@ -1,13 +1,15 @@ diff --git a/playground/components/button.vue b/playground/components/button.vue index 56c5936..c730714 100644 --- a/playground/components/button.vue +++ b/playground/components/button.vue @@ -1,8 +1,22 @@ + export default { + methods: { + handleClick () { + console.log('ladsmfkldsafjdslkaf') + } + } + } + \ No newline at end of file diff --git a/playground/components/icon.vue b/playground/components/icon.vue new file mode 100644 index 0000000..61279cd --- /dev/null +++ b/playground/components/icon.vue @@ -0,0 +1,9 @@ + + diff --git a/playground/main.js b/playground/main.js index c0c2ca3..5522338 100644 --- a/playground/main.js +++ b/playground/main.js @@ -1,7 +1,7 @@ import Vue from 'vue' import Mvui from 'main/index.js' import App from './App.vue' -// import '' +import 'packages/theme-default/src/index.scss' Vue.use(Mvui) diff --git a/src/index.js b/src/index.js index 674119e..c5e38e9 100644 --- a/src/index.js +++ b/src/index.js @@ -1,9 +1,11 @@ /* Automatic generated by './build/bin/build-entry.js' */ import Button from '../packages/button/index.js' +import Icon from '../packages/icon/index.js' const components = [ - Button + Button, + Icon ] const install = function (Vue, opts = {}) { @@ -23,5 +25,6 @@ if (typeof window !== 'undefined' && window.Vue) { export default { version: '0.0.0', install, - Button + Button, + Icon } diff --git a/src/utils/dom.js b/src/utils/dom.js new file mode 100644 index 0000000..f647e66 --- /dev/null +++ b/src/utils/dom.js @@ -0,0 +1,36 @@ +/** + * DOM 操作 + */ +// 添加事件监听 +export const on = function (element, event, handler) { + document.addEventListener + ? element.addEventListener(event, handler, false) + : element.attachEvent('on' + event, handler) +} + +// 移除事件监听 +export const off = function (element, event, handler) { + document.removeEventListener + ? element.removeEventListener(event, handler, false) + : element.detachEvent('on' + event, handler) +} + +// 添加 class +export const addClass = function (elm, clz) { + +} + +// 移除 class +export const removeClass = function (elm, clz) { + +} + +// 是否包含 class +export const hasClass = function (elm, clz) { + +} + +// 设置 css +export const css = function () { + +} diff --git a/test/unit/specs/Button.spec.js b/test/unit/specs/Button.spec.js index 518ac53..03444ab 100644 --- a/test/unit/specs/Button.spec.js +++ b/test/unit/specs/Button.spec.js @@ -3,9 +3,7 @@ describe('Button', () => { }) it('icon', () => { - }) it('nativeType', () => { - }) }) diff --git a/test/unit/specs/Icon.spec.js b/test/unit/specs/Icon.spec.js new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/test/unit/specs/Icon.spec.js @@ -0,0 +1 @@ + diff --git a/yarn.lock b/yarn.lock index 3adeed6..92c4000 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,17 @@ # yarn lockfile v1 +CSSselect@~0.4.0: + version "0.4.1" + resolved "https://registry.npmjs.org/CSSselect/-/CSSselect-0.4.1.tgz#f8ab7e1f8418ce63cda6eb7bd778a85d7ec492b2" + dependencies: + CSSwhat "0.4" + domutils "1.4" + +CSSwhat@0.4: + version "0.4.7" + resolved "https://registry.npmjs.org/CSSwhat/-/CSSwhat-0.4.7.tgz#867da0ff39f778613242c44cfea83f0aa4ebdf9b" + JSONStream@^1.0.4: version "1.3.1" resolved "http://registry.npm.taobao.org/JSONStream/download/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" @@ -9,6 +20,10 @@ JSONStream@^1.0.4: jsonparse "^1.2.0" through ">=2.2.7 <3" +abab@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" + abbrev@1: version "1.1.0" resolved "http://registry.npm.taobao.org/abbrev/download/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" @@ -30,12 +45,22 @@ acorn-dynamic-import@^2.0.0: dependencies: acorn "^4.0.3" +acorn-globals@^1.0.4: + version "1.0.9" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" + dependencies: + acorn "^2.1.0" + acorn-jsx@^3.0.0: version "3.0.1" resolved "http://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" dependencies: acorn "^3.0.4" +acorn@^2.1.0, acorn@^2.4.0: + version "2.7.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" + acorn@^3.0.4: version "3.3.0" resolved "http://registry.npm.taobao.org/acorn/download/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" @@ -549,7 +574,7 @@ babel-plugin-syntax-decorators@^6.13.0: babel-plugin-syntax-dynamic-import@^6.18.0: version "6.18.0" - resolved "http://registry.npm.taobao.org/babel-plugin-syntax-dynamic-import/download/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + resolved "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" @@ -1266,6 +1291,28 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" +cheerio@^0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/cheerio/-/cheerio-0.18.0.tgz#4e1c06377e725b740e996e0dfec353863de677fa" + dependencies: + CSSselect "~0.4.0" + dom-serializer "~0.0.0" + entities "~1.1.1" + htmlparser2 "~3.8.1" + lodash "~2.4.1" + +cheerio@^0.20.0: + version "0.20.0" + resolved "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35" + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "~3.8.1" + lodash "^4.1.0" + optionalDependencies: + jsdom "^7.0.2" + chokidar@^1.4.1, chokidar@^1.6.0, chokidar@^1.7.0: version "1.7.0" resolved "http://registry.npm.taobao.org/chokidar/download/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1880,7 +1927,7 @@ css-loader: postcss-value-parser "^3.3.0" source-list-map "^2.0.0" -css-select@^1.1.0: +css-select@^1.1.0, css-select@~1.2.0: version "1.2.0" resolved "http://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" dependencies: @@ -1949,6 +1996,16 @@ csso@~2.3.1: clap "^1.0.9" source-map "^0.5.3" +cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": + version "0.3.2" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" + +"cssstyle@>= 0.2.29 < 0.3.0": + version "0.2.37" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" + dependencies: + cssom "0.3.x" + currently-unhandled@^0.4.1: version "0.4.1" resolved "http://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2185,13 +2242,20 @@ dom-serialize@^2.2.0: extend "^3.0.0" void-elements "^2.0.0" -dom-serializer@0: +dom-serializer@0, dom-serializer@~0.1.0: version "0.1.0" resolved "http://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" dependencies: domelementtype "~1.1.1" entities "~1.1.1" +dom-serializer@~0.0.0: + version "0.0.1" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.0.1.tgz#9589827f1e32d22c37c829adabd59b3247af8eaf" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + domain-browser@^1.1.1: version "1.1.7" resolved "http://registry.npm.taobao.org/domain-browser/download/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" @@ -2210,6 +2274,12 @@ domhandler@2.1: dependencies: domelementtype "1" +domhandler@2.3: + version "2.3.0" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + dependencies: + domelementtype "1" + domhandler@^2.3.0: version "2.4.1" resolved "http://registry.npm.taobao.org/domhandler/download/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" @@ -2222,7 +2292,13 @@ domutils@1.1: dependencies: domelementtype "1" -domutils@1.5.1: +domutils@1.4: + version "1.4.3" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz#0865513796c6b306031850e175516baf80b72a6f" + dependencies: + domelementtype "1" + +domutils@1.5, domutils@1.5.1: version "1.5.1" resolved "http://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" dependencies: @@ -2354,6 +2430,10 @@ ent@~2.2.0: version "2.2.0" resolved "http://registry.npm.taobao.org/ent/download/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" +entities@1.0: + version "1.0.0" + resolved "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" + entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "http://registry.npm.taobao.org/entities/download/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -2440,7 +2520,7 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.0, escape-string-regexp@^1 version "1.0.5" resolved "http://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escodegen@1.8.x: +escodegen@1.8.x, escodegen@^1.6.1: version "1.8.1" resolved "http://registry.npm.taobao.org/escodegen/download/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" dependencies: @@ -3546,6 +3626,10 @@ he@1.1.x, he@^1.1.0: version "1.1.1" resolved "http://registry.npm.taobao.org/he/download/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" +highlight.js@^9.12.0, highlight.js@^9.4.0: + version "9.12.0" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e" + hmac-drbg@^1.0.0: version "1.0.1" resolved "http://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -3636,6 +3720,16 @@ htmlparser2@~3.3.0: domutils "1.1" readable-stream "1.0" +htmlparser2@~3.8.1: + version "3.8.3" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" + dependencies: + domelementtype "1" + domhandler "2.3" + domutils "1.5" + entities "1.0" + readable-stream "1.1" + http-deceiver@^1.2.7: version "1.2.7" resolved "http://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -4155,6 +4249,26 @@ jschardet@^1.4.2: version "1.5.1" resolved "http://registry.npm.taobao.org/jschardet/download/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" +jsdom@^7.0.2: + version "7.2.2" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e" + dependencies: + abab "^1.0.0" + acorn "^2.4.0" + acorn-globals "^1.0.4" + cssom ">= 0.3.0 < 0.4.0" + cssstyle ">= 0.2.29 < 0.3.0" + escodegen "^1.6.1" + nwmatcher ">= 1.3.7 < 2.0.0" + parse5 "^1.5.1" + request "^2.55.0" + sax "^1.1.4" + symbol-tree ">= 3.1.0 < 4.0.0" + tough-cookie "^2.2.0" + webidl-conversions "^2.0.0" + whatwg-url-compat "~0.6.5" + xml-name-validator ">= 2.0.1 < 3.0.0" + jsesc@^1.3.0: version "1.3.0" resolved "http://registry.npm.taobao.org/jsesc/download/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -4424,6 +4538,18 @@ liftoff@^2.1.0: rechoir "^0.6.2" resolve "^1.1.7" +linkify-it@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz#d94a4648f9b1c179d64fa97291268bdb6ce9434f" + dependencies: + uc.micro "^1.0.1" + +linkify-it@~1.2.2: + version "1.2.4" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-1.2.4.tgz#0773526c317c8fd13bd534ee1d180ff88abf881a" + dependencies: + uc.micro "^1.0.1" + load-json-file@^1.0.0: version "1.1.0" resolved "http://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -4738,6 +4864,10 @@ lodash@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" +lodash@~2.4.1: + version "2.4.2" + resolved "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" + log-driver@1.2.5: version "1.2.5" resolved "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" @@ -4825,10 +4955,44 @@ map-stream@>=0.0.4: version "0.1.0" resolved "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" +markdown-it-anchor@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-4.0.0.tgz#e87fb5543e01965adf71506c6bf7b0491841b7e3" + dependencies: + string "^3.3.3" + +markdown-it-container@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-2.0.0.tgz#0019b43fd02eefece2f1960a2895fba81a404695" + +markdown-it@^6.0.5: + version "6.1.1" + resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-6.1.1.tgz#ced037f4473ee9f5153ac414f77dc83c91ba927c" + dependencies: + argparse "^1.0.7" + entities "~1.1.1" + linkify-it "~1.2.2" + mdurl "~1.0.1" + uc.micro "^1.0.1" + +markdown-it@^8.4.0: + version "8.4.0" + resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.0.tgz#e2400881bf171f7018ed1bd9da441dac8af6306d" + dependencies: + argparse "^1.0.7" + entities "~1.1.1" + linkify-it "^2.0.0" + mdurl "^1.0.1" + uc.micro "^1.0.3" + math-expression-evaluator@^1.2.14: version "1.2.17" resolved "http://registry.npm.taobao.org/math-expression-evaluator/download/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" +mdurl@^1.0.1, mdurl@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + media-typer@0.3.0: version "0.3.0" resolved "http://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -5238,6 +5402,10 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "http://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" +"nwmatcher@>= 1.3.7 < 2.0.0": + version "1.4.1" + resolved "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.1.tgz#7ae9b07b0ea804db7e25f05cb5fe4097d4e4949f" + oauth-sign@~0.8.1: version "0.8.2" resolved "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -5476,6 +5644,10 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +parse5@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" + parsejson@0.0.3: version "0.0.3" resolved "http://registry.npm.taobao.org/parsejson/download/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" @@ -6109,6 +6281,15 @@ readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0 isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@1.1: + version "1.1.13" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9: version "2.3.3" resolved "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" @@ -6269,7 +6450,7 @@ request-progress@~2.0.1: dependencies: throttleit "^1.0.0" -request@2, request@^2.79.0, request@^2.81.0, request@~2.81.0: +request@2, request@^2.55.0, request@^2.79.0, request@^2.81.0, request@~2.81.0: version "2.81.0" resolved "http://registry.npm.taobao.org/request/download/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" dependencies: @@ -6451,7 +6632,7 @@ sass-loader: lodash.tail "^4.1.1" pify "^3.0.0" -sax@~1.2.1: +sax@^1.1.4, sax@~1.2.1: version "1.2.4" resolved "http://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -6866,6 +7047,10 @@ string-width@^2.0.0, string-width@^2.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/string/-/string-3.3.3.tgz#5ea211cd92d228e184294990a6cc97b366a77cb0" + string_decoder@^0.10.25, string_decoder@~0.10.x: version "0.10.31" resolved "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -6984,6 +7169,10 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" +"symbol-tree@>= 3.1.0 < 4.0.0": + version "3.2.2" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + table@^3.7.8: version "3.8.3" resolved "http://registry.npm.taobao.org/table/download/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" @@ -7158,12 +7347,22 @@ toposort@^1.0.0: version "1.0.3" resolved "http://registry.npm.taobao.org/toposort/download/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" -tough-cookie@~2.3.0: +tough-cookie@^2.2.0, tough-cookie@~2.3.0: version "2.3.2" resolved "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" dependencies: punycode "^1.4.1" +tr46@~0.0.1: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + +transliteration@^1.6.2: + version "1.6.2" + resolved "https://registry.npmjs.org/transliteration/-/transliteration-1.6.2.tgz#335c91bf70f3b211bb81e8d03992b2078c0dac96" + dependencies: + yargs "^8.0.1" + trim-newlines@^1.0.0: version "1.0.0" resolved "http://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -7227,6 +7426,10 @@ typedarray@^0.0.6: version "0.0.6" resolved "http://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +uc.micro@^1.0.1, uc.micro@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.3.tgz#7ed50d5e0f9a9fb0a573379259f2a77458d50192" + uglify-js@3.0.x: version "3.0.27" resolved "http://registry.npm.taobao.org/uglify-js/download/uglify-js-3.0.27.tgz#a97db8c8ba6b9dba4e2f88d86aa9548fa6320034" @@ -7479,6 +7682,27 @@ vue-loader@^12.1.0: vue-style-loader "^3.0.0" vue-template-es2015-compiler "^1.2.2" +vue-markdown-loader@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/vue-markdown-loader/-/vue-markdown-loader-2.1.0.tgz#112d1921dd56daa29906b7c012623c6c5d6e0d8c" + dependencies: + cheerio "^0.20.0" + highlight.js "^9.4.0" + loader-utils "^0.2.15" + markdown-it "^6.0.5" + +vue-md-icons@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/vue-md-icons/-/vue-md-icons-1.2.0.tgz#be81f1486d93af1903ff149114e0842e9a4e946b" + dependencies: + vue "^2.3.3" + +vue-multiple-button@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/vue-multiple-button/-/vue-multiple-button-1.0.3.tgz#bc34a293bfc84751e1745802f9350c5236c247b2" + dependencies: + vue "^2.3.3" + vue-router@^2.6.0: version "2.7.0" resolved "http://registry.npm.taobao.org/vue-router/download/vue-router-2.7.0.tgz#16d424493aa51c3c8cce8b7c7210ea4c3a89aff1" @@ -7525,6 +7749,10 @@ wcwidth@^1.0.0: dependencies: defaults "^1.0.3" +webidl-conversions@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" + webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.11.0: version "1.12.0" resolved "http://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" @@ -7623,6 +7851,12 @@ websocket-extensions@>=0.1.1: version "0.1.1" resolved "http://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" +whatwg-url-compat@~0.6.5: + version "0.6.5" + resolved "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf" + dependencies: + tr46 "~0.0.1" + whet.extend@~0.9.9: version "0.9.9" resolved "http://registry.npm.taobao.org/whet.extend/download/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" @@ -7727,6 +7961,10 @@ xml-char-classes@^1.0.0: version "1.0.0" resolved "http://registry.npm.taobao.org/xml-char-classes/download/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" +"xml-name-validator@>= 2.0.1 < 3.0.0": + version "2.0.1" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" + xmlhttprequest-ssl@1.5.3: version "1.5.3" resolved "http://registry.npm.taobao.org/xmlhttprequest-ssl/download/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d"