Commit 8b43fd90c9b3b86ceeca3bcfef7a00e4c0fc969c

Authored by ly525
1 parent e799d34b

refactor(core editor): replace element-ui with ant-design-vue

front-end/h5/package.json
... ... @@ -10,6 +10,7 @@
10 10 "test:unit": "vue-cli-service test:unit"
11 11 },
12 12 "dependencies": {
  13 + "ant-design-vue": "^1.3.10",
13 14 "core-js": "^2.6.5",
14 15 "element-ui": "^2.9.1",
15 16 "font-awesome": "4.7.0",
... ...
front-end/h5/src/components/core/editor.js
1 1 import Vue from 'vue'
2 2 import Element from './models/element'
  3 +import './styles/index.scss'
3 4  
4 5 export default {
5 6 name: 'Editor',
6 7 components: {
  8 + ShortcutButton: {
  9 + functional: true,
  10 + props: {
  11 + faIcon: {
  12 + required: true,
  13 + type: String
  14 + },
  15 + title: {
  16 + required: true,
  17 + type: String
  18 + },
  19 + clickFn: {
  20 + required: false,
  21 + type: Function
  22 + }
  23 + },
  24 + render: (h, { props, listeners, slots }) => {
  25 + const onClick = props.clickFn || function () {}
  26 + return (
  27 + <a-button
  28 + class="shortcut-button"
  29 + onClick={onClick}
  30 + >
  31 + <i
  32 + class={['shortcut-icon', 'fa', `fa-${props.faIcon}`]}
  33 + aria-hidden='true'
  34 + />
  35 + <span>{ props.title }</span>
  36 + </a-button>
  37 + )
  38 + }
  39 + }
7 40 },
8 41 data: () => ({
  42 + activeMenuKey: 'pluginList',
9 43 pages: [],
10 44 elements: [],
11 45 editingElement: null,
... ... @@ -20,6 +54,7 @@ export default {
20 54 },
21 55 /**
22 56 * !#zh 点击插件,copy 其基础数据到组件树(中间画布)
  57 + * #!en click the plugin shortcut, create new Element with the plugin's meta data
23 58 * pluginInfo {Object}: 插件列表中的基础数据, {name}=pluginInfo
24 59 */
25 60 clone ({ name }) {
... ... @@ -40,7 +75,8 @@ export default {
40 75 this.mixinPluginCustomComponents2Editor()
41 76 },
42 77 /**
43   - * 在左侧或顶部导航上显示可用的组件快捷方式,用户点击之后,即可将其添加到中间画布上
  78 + * #!zh: 在左侧或顶部导航上显示可用的组件快捷方式,用户点击之后,即可将其添加到中间画布上
  79 + * #!en: render shortcust at the sidebar or the header. if user click the shortcut, the related plugin will be added to the canvas
44 80 * @param {Object} group: {children, title, icon}
45 81 */
46 82 renderPluginShortcut (group) {
... ... @@ -49,39 +85,34 @@ export default {
49 85 : this.renderMultiPluginShortcuts(group)
50 86 },
51 87 /**
52   - * 渲染多个插件的快捷方式
  88 + * #!zh 渲染多个插件的快捷方式
  89 + * #!en render shortcuts for multi plugins
53 90 * @param {Object} group: {children, title, icon}
54 91 */
55 92 renderMultiPluginShortcuts (group) {
56 93 const plugins = group.children
57   - return <el-popover
  94 + return <a-popover
58 95 placement="bottom"
59   - width="400"
  96 + class="shortcust-button"
60 97 trigger="hover">
61   - {
62   - plugins.sort().map(item => (
63   - <el-button
64   - class='ma-0 no-border-radius'
65   - onClick={this.clone.bind(this, item)}
66   - >
67   - <i
68   - class={['fa', `fa-${item.icon}`]}
69   - aria-hidden='true'
70   - style='display: block;font-size: 16px;margin-bottom: 10px;'
71   - />
72   - <span>{ item.title }</span>
73   - </el-button>
74   - ))
75   - }
76   - <el-button slot="reference" class='ma-0 no-border-radius'>
77   - <i
78   - class={['fa', `fa-${group.icon}`]}
79   - aria-hidden='true'
80   - style='display: block;font-size: 16px;margin-bottom: 10px;'
81   - />
82   - <span class="plugin-item__text">{group.title}</span>
83   - </el-button>
84   - </el-popover>
  98 + <a-row slot="content" gutter={20} style={{ width: '400px' }}>
  99 + {
  100 + plugins.sort().map(item => (
  101 + <a-col span={6}>
  102 + <ShortcutButton
  103 + clickFn={this.clone.bind(this, item)}
  104 + title={item.title}
  105 + faIcon={item.icon}
  106 + />
  107 + </a-col>
  108 + ))
  109 + }
  110 + </a-row>
  111 + <ShortcutButton
  112 + title={group.title}
  113 + faIcon={group.icon}
  114 + />
  115 + </a-popover>
85 116 },
86 117 /**
87 118 * #!zh: 渲染单个插件的快捷方式
... ... @@ -90,18 +121,11 @@ export default {
90 121 */
91 122 renderSinglePluginShortcut ({ children }) {
92 123 const [plugin] = children
93   - return <el-button
94   - class='ma-0 no-border-radius'
95   - style={{ width: '100%' }}
96   - onClick={this.clone.bind(this, plugin)}
97   - >
98   - <i
99   - class={['fa', `fa-${plugin.icon}`]}
100   - aria-hidden='true'
101   - style='display: block;font-size: 16px;margin-bottom: 10px;'
102   - />
103   - <span class="plugin-item__text">{ plugin.title }</span>
104   - </el-button>
  124 + return <ShortcutButton
  125 + clickFn={this.clone.bind(this, plugin)}
  126 + title={plugin.title}
  127 + faIcon={plugin.icon}
  128 + />
105 129 },
106 130 /**
107 131 * #!zh: renderCanvas 渲染中间画布
... ... @@ -146,24 +170,15 @@ export default {
146 170 },
147 171 renderPluginListPanel () {
148 172 return (
149   - <el-tabs tab-position="left" class="lb-tabs">
150   - <el-tab-pane label='组件列表'>
151   - <div class="full-height">
152   - <el-row gutter={20}>
153   - {
154   - this.groups.sort().map(group => (
155   - <el-col span={12} style={{ marginTop: '10px' }}>
156   - {this.renderPluginShortcut(group)}
157   - </el-col>
158   - ))
159   - }
160   - </el-row>
161   - </div>
162   - </el-tab-pane>
163   - <el-tab-pane label='页面管理'>
164   - <span>页面管理</span>
165   - </el-tab-pane>
166   - </el-tabs>
  173 + <a-row gutter={20}>
  174 + {
  175 + this.groups.sort().map(group => (
  176 + <a-col span={12} style={{ marginTop: '10px' }}>
  177 + {this.renderPluginShortcut(group)}
  178 + </a-col>
  179 + ))
  180 + }
  181 + </a-row>
167 182 )
168 183 },
169 184 renderPropsEditorPanel (h) {
... ... @@ -171,7 +186,7 @@ export default {
171 186 const editingElement = this.editingElement
172 187 const propsConfig = editingElement.editorConfig.propsConfig
173 188 return (
174   - <el-form ref="form" label-width="100px" size="mini" label-position="left">
  189 + <a-form ref="form" label-width="100px" size="mini" label-position="left">
175 190 {
176 191 Object.keys(propsConfig).map(propKey => {
177 192 const item = propsConfig[propKey]
... ... @@ -180,56 +195,119 @@ export default {
180 195 props: {
181 196 ...item.prop,
182 197 // https://vuejs.org/v2/guide/render-function.html#v-model
183   - ...{ value: editingElement[propKey] || item.defaultPropValue }
  198 + value: editingElement.pluginProps[propKey] || item.defaultPropValue
184 199 },
185 200 on: {
186 201 // https://vuejs.org/v2/guide/render-function.html#v-model
187   - input (value) {
188   - editingElement[propKey] = value
  202 + // input (e) {
  203 + // editingElement.pluginProps[propKey] = e.target ? e.target.value : e
  204 + // }
  205 + change (e) {
  206 + editingElement.pluginProps[propKey] = e.target ? e.target.value : e
189 207 }
190 208 }
191 209 }
192 210 return (
193   - <el-form-item label={item.label}>
  211 + <a-form-item label={item.label}>
194 212 { h(item.type, data) }
195   - </el-form-item>
  213 + </a-form-item>
196 214 )
197 215 })
198 216 }
199   - </el-form>
  217 + </a-form>
200 218 )
201 219 }
202 220 },
203 221 render (h) {
204 222 return (
205   - <div id='designer-page'>
206   - <div class='el-col-5'>
207   - { this.renderPluginListPanel() }
208   - </div>
209   - <div class='el-col-13'>
210   - <div style="text-align: center;">
211   - <el-radio-group value={this.isPreviewMode} onInput={(value) => {
212   - this.isPreviewMode = value
213   - }} size="mini">
214   - <el-radio-button label={false}>Edit</el-radio-button>
215   - <el-radio-button label={true}>Preview</el-radio-button>
216   - </el-radio-group>
217   - </div>
218   - <div class='canvas-wrapper'>
219   - { this.isPreviewMode ? this.renderPreview(h, this.elements) : this.renderCanvas(h, this.elements) }
220   - </div>
221   - </div>
222   - <div class='el-col-6' style="border-left: 1px solid #eee;">
223   - <el-tabs type="border-card" style="height: 100%;">
224   - <el-tab-pane>
225   - <span slot="label"><i class="el-icon-date"></i> 属性</span>
226   - { this.renderPropsEditorPanel(h) }
227   - </el-tab-pane>
228   - <el-tab-pane label="动画">动画</el-tab-pane>
229   - <el-tab-pane label="动作">动作</el-tab-pane>
230   - </el-tabs>
231   - </div>
232   - </div>
  223 + <a-layout id="luban-layout" style={{ height: '100vh' }}>
  224 + <a-layout-header class="header">
  225 + <div class="logo">鲁班 H5</div>
  226 + {/* TODO we can show the plugins shortcuts here
  227 + <a-menu
  228 + theme="dark"
  229 + mode="horizontal"
  230 + defaultSelectedKeys={['2']}
  231 + style={{ lineHeight: '64px', float: 'left', marginLeft: '30%', background: 'transparent' }}
  232 + >
  233 + {
  234 + this.groups.sort().map((group, id) => (
  235 + <a-menu-item key={id} class="transparent-bg">
  236 + {this.renderPluginShortcut(group)}
  237 + </a-menu-item>
  238 + ))
  239 + }
  240 + </a-menu> */}
  241 + <a-menu
  242 + theme="dark"
  243 + mode="horizontal"
  244 + defaultSelectedKeys={['2']}
  245 + style={{ lineHeight: '64px', float: 'right', background: 'transparent' }}
  246 + >
  247 + <a-menu-item key="1" class="transparent-bg"><a-button type="primary" size="small">预览</a-button></a-menu-item>
  248 + <a-menu-item key="2" class="transparent-bg"><a-button size="small">保存</a-button></a-menu-item>
  249 + <a-menu-item key="3" class="transparent-bg"><a-button size="small">发布</a-button></a-menu-item>
  250 + </a-menu>
  251 + </a-layout-header>
  252 + <a-layout>
  253 + <a-layout-sider width="160" style="background: #fff">
  254 + <a-menu onSelect={val => { this.activeMenuKey = val }} mode="inline" defaultSelectedKeys={['pluginList']} style={{ height: '100%', borderRight: 1 }}>
  255 + <a-menu-item key="pluginList">
  256 + <a-icon type="user" />
  257 + <span>组件列表</span>
  258 + </a-menu-item>
  259 + <a-menu-item key="2">
  260 + <a-icon type="video-camera" />
  261 + <span>页面管理</span>
  262 + </a-menu-item>
  263 + <a-menu-item key="3">
  264 + <a-icon type="upload" />
  265 + <span>更多模板</span>
  266 + </a-menu-item>
  267 + </a-menu>
  268 + </a-layout-sider>
  269 + <a-layout-sider width="240" theme='light' style={{ background: '#fff', padding: '0 12px' }}>
  270 + { this.renderPluginListPanel() }
  271 + </a-layout-sider>
  272 + <a-layout style="padding: 0 24px 24px">
  273 + <a-layout-content style={{ padding: '24px', margin: 0, minHeight: '280px' }}>
  274 + <div style="text-align: center;">
  275 + <a-radio-group
  276 + value={this.isPreviewMode}
  277 + onInput={value => {
  278 + this.isPreviewMode = value
  279 + }}
  280 + >
  281 + <a-radio-button label={false} value={false}>Edit</a-radio-button>
  282 + <a-radio-button label={true} value={true}>Preview</a-radio-button>
  283 + </a-radio-group>
  284 + </div>
  285 + <div class='canvas-wrapper'>
  286 + { this.isPreviewMode ? this.renderPreview(h, this.elements) : this.renderCanvas(h, this.elements) }
  287 + </div>
  288 + </a-layout-content>
  289 + </a-layout>
  290 + <a-layout-sider width="240" theme='light' style={{ background: '#fff', padding: '0 12px' }}>
  291 + <a-tabs type="card" style="height: 100%;">
  292 + {/*
  293 + #!zh tab 标题:
  294 + #!en tab title
  295 + ElementUI:label
  296 + Ant Design Vue:tab
  297 + */}
  298 + <a-tab-pane key="属性">
  299 + <span slot="tab">
  300 + <a-icon type="apple" />
  301 + 属性
  302 + </span>
  303 + { this.renderPropsEditorPanel(h) }
  304 + </a-tab-pane>
  305 + <a-tab-pane label="动画" key='动画' tab='动画'>动画</a-tab-pane>
  306 + <a-tab-pane label="动作" key='动作' tab='动作'>动作</a-tab-pane>
  307 + </a-tabs>
  308 + </a-layout-sider>
  309 + </a-layout>
  310 + </a-layout>
233 311 )
234 312 }
235 313 }
... ...
front-end/h5/src/components/core/styles/index.scss 0 → 100644
  1 +#luban-layout {
  2 + .header {
  3 + padding: 0 10px;
  4 +
  5 + .logo {
  6 + width: 120px;
  7 + height: 31px;
  8 + // background: rgba(255,255,255,.2);
  9 + margin: 16px 28px 16px 0;
  10 + float: left;
  11 +
  12 + line-height: 31px;
  13 + text-align: center;
  14 + color: white;
  15 + font-size: 16px;
  16 + }
  17 + }
  18 +
  19 + .shortcut-button {
  20 + width: 100%;
  21 + height: 40px;
  22 +
  23 + .shortcut-icon {
  24 + padding-right: 4px;
  25 + // display: block;
  26 + // font-size: 16px;
  27 + // margin-bottom: 10px;
  28 + }
  29 + }
  30 +
  31 +}
  32 +
  33 +
  34 +
  35 +.transparent-bg {
  36 + background: transparent !important;
  37 +}
  38 +
  39 +.no-border {
  40 + border: none !important;
  41 +}
0 42 \ No newline at end of file
... ...
front-end/h5/src/components/plugins/lbp-button.js
... ... @@ -11,19 +11,21 @@ export default {
11 11 borderWidth,
12 12 text
13 13 } = this
  14 +
  15 + const style = {
  16 + color,
  17 + textAlign,
  18 + backgroundColor,
  19 + fontSize: fontSize,
  20 + lineHeight: lineHeight + 'em',
  21 + borderColor,
  22 + borderRadius: borderRadius + 'px',
  23 + borderWidth: borderWidth + 'px',
  24 + textDecoration: 'none'
  25 + }
14 26 return (
15 27 <button
16   - style={{
17   - color,
18   - textAlign,
19   - backgroundColor,
20   - fontSize: fontSize + 'px',
21   - lineHeight: lineHeight + 'em',
22   - borderColor,
23   - borderRadius: borderRadius + 'px',
24   - borderWidth: borderWidth + 'px',
25   - textDecoration: 'none'
26   - }}
  28 + style={style}
27 29 >{text}</button>)
28 30 },
29 31 name: 'lbp-button',
... ... @@ -84,13 +86,13 @@ export default {
84 86 editorConfig: {
85 87 propsConfig: {
86 88 text: {
87   - type: 'el-input',
  89 + type: 'a-input',
88 90 label: '按钮文字',
89 91 require: true,
90 92 defaultPropValue: '按钮'
91 93 },
92 94 fontSize: {
93   - type: 'el-input-number',
  95 + type: 'a-input-number',
94 96 label: '字号(px)',
95 97 require: true,
96 98 prop: {
... ... @@ -101,7 +103,7 @@ export default {
101 103 defaultPropValue: 14
102 104 },
103 105 color: {
104   - type: 'el-input',
  106 + type: 'a-input',
105 107 label: '文字颜色',
106 108 // !#zh 为编辑组件指定 prop
107 109 prop: {
... ... @@ -111,7 +113,7 @@ export default {
111 113 defaultPropValue: 'black'
112 114 },
113 115 backgroundColor: {
114   - type: 'el-input', // lbs-color-picker
  116 + type: 'a-input', // lbs-color-picker
115 117 label: '背景颜色',
116 118 prop: {
117 119 type: 'color'
... ... @@ -120,7 +122,7 @@ export default {
120 122 defaultPropValue: '#ffffff' // TODO why logogram for color does't work?
121 123 },
122 124 borderColor: {
123   - type: 'el-input', // lbs-color-picker
  125 + type: 'a-input', // lbs-color-picker
124 126 label: '边框颜色',
125 127 prop: {
126 128 type: 'color'
... ... @@ -129,7 +131,7 @@ export default {
129 131 defaultPropValue: '#eeeeee'
130 132 },
131 133 borderWidth: {
132   - type: 'el-input-number',
  134 + type: 'a-input-number',
133 135 label: '边框宽度(px)',
134 136 require: true,
135 137 prop: {
... ... @@ -140,7 +142,7 @@ export default {
140 142 defaultPropValue: 1
141 143 },
142 144 borderRadius: {
143   - type: 'el-input-number',
  145 + type: 'a-input-number',
144 146 label: '圆角(px)',
145 147 require: true,
146 148 prop: {
... ... @@ -151,7 +153,7 @@ export default {
151 153 defaultPropValue: 0
152 154 },
153 155 lineHeight: {
154   - type: 'el-input-number',
  156 + type: 'a-input-number',
155 157 label: '行高',
156 158 require: true,
157 159 prop: {
... ... @@ -172,14 +174,14 @@ export default {
172 174 'lbs-text-align': {
173 175 template: `
174 176 <div class="wrap">
175   - <el-radio-group v-model="value_" size="small">
176   - <el-tooltip effect="dark" :content="item.label" placement="top" :key="index" v-for="(item, index) in textAlignTabs">
177   - <el-radio-button :label="item.value">
  177 + <a-radio-group v-model="value_" size="small">
  178 + <a-tooltip effect="dark" :content="item.label" placement="top" :key="index" v-for="(item, index) in textAlignTabs">
  179 + <a-radio-button :label="item.value">
178 180 <!-- issue #8 -->
179 181 <i :class="['fa', 'fa-align-'+item.value]" aria-hidden="true"></i>
180   - </el-radio-button>
181   - </el-tooltip>
182   - </el-radio-group>
  182 + </a-radio-button>
  183 + </a-tooltip>
  184 + </a-radio-group>
183 185 </div>`,
184 186 props: {
185 187 value: {
... ... @@ -227,14 +229,14 @@ export default {
227 229 }
228 230 },
229 231 template: `
230   - <el-select v-model="value_" placeholder="类型">
231   - <el-option
  232 + <a-select v-model="value_" placeholder="类型">
  233 + <a-option
232 234 v-for="item in options"
233 235 :key="item.value"
234 236 :label="item.label"
235 237 :value="item.value">
236   - </el-option>
237   - </el-select>
  238 + </a-option>
  239 + </a-select>
238 240 `,
239 241 data: () => ({
240 242 options: [
... ...
front-end/h5/src/components/plugins/lbp-picture.js
... ... @@ -19,7 +19,7 @@ export default {
19 19 propsConfig: {
20 20 imgSrc: {
21 21 // type: 'picture-picker',
22   - type: 'el-input',
  22 + type: 'a-input',
23 23 label: '图片url',
24 24 prop: {
25 25 type: 'textarea'
... ...
front-end/h5/src/main.js
... ... @@ -3,13 +3,17 @@ import App from &#39;./App.vue&#39;
3 3 import router from './router'
4 4 import store from './store/'
5 5 import './registerServiceWorker'
6   -import ElementUI from 'element-ui'
7   -import 'element-ui/lib/theme-chalk/index.css'
  6 +// import ElementUI from 'element-ui'
  7 +import Antd from 'ant-design-vue'
  8 +
  9 +// import 'element-ui/lib/theme-chalk/index.css'
  10 +import 'ant-design-vue/dist/antd.css'
8 11 // !#zh 请注意,务必使用 font-awesome@4.7.0 版本
9 12 import 'font-awesome/css/font-awesome.min.css'
10 13  
11 14 Vue.config.productionTip = false
12   -Vue.use(ElementUI)
  15 +Vue.use(Antd)
  16 +// Vue.use(ElementUI)
13 17  
14 18 new Vue({
15 19 router,
... ...
front-end/h5/src/views/Editor.vue
... ... @@ -91,14 +91,6 @@ $designerWidth: 320px;
91 91 $designerHeight: 568px;
92 92 $designerWidthHalf: $designerWidth / 2;
93 93  
94   -#designer-page {
95   - display: flex;
96   - // https://stackoverflow.com/questions/17904088/disable-less-css-overwriting-calc
97   - // less: min-height: ~'calc(100% - 40px)';
98   - min-height: calc(100% - 40px);
99   -
100   -}
101   -
102 94 .canvas-wrapper {
103 95 position: relative;
104 96 top: 5%;
... ... @@ -106,6 +98,7 @@ $designerWidthHalf: $designerWidth / 2;
106 98 height: $designerHeight;
107 99 border: 1px #ebeaea solid;
108 100 margin: 0 auto;
  101 + background: #fff;
109 102 }
110 103  
111 104 .lb-tabs {
... ...
front-end/h5/yarn.lock
... ... @@ -2,6 +2,19 @@
2 2 # yarn lockfile v1
3 3  
4 4  
  5 +"@ant-design/icons-vue@^1.0.1":
  6 + version "1.0.1"
  7 + resolved "https://registry.npm.taobao.org/@ant-design/icons-vue/download/@ant-design/icons-vue-1.0.1.tgz#343579219c04190831c9ca3826aec7361bb8b4d4"
  8 + integrity sha1-NDV5IZwEGQgxyco4Jq7HNhu4tNQ=
  9 + dependencies:
  10 + ant-design-palettes "^1.1.3"
  11 + babel-runtime "^6.26.0"
  12 +
  13 +"@ant-design/icons@^1.1.15":
  14 + version "1.2.1"
  15 + resolved "https://registry.npm.taobao.org/@ant-design/icons/download/@ant-design/icons-1.2.1.tgz#8e19301b1433ec67d6bbd0e892782e2ade561ff9"
  16 + integrity sha1-jhkwGxQz7GfWu9DoknguKt5WH/k=
  17 +
5 18 "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35":
6 19 version "7.0.0"
7 20 resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
... ... @@ -1273,6 +1286,13 @@ acorn@^6.0.1, acorn@^6.0.2, acorn@^6.0.7, acorn@^6.1.1:
1273 1286 resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
1274 1287 integrity sha1-fSWuBbuK0fm2mRCOEJTs14hK3B8=
1275 1288  
  1289 +add-dom-event-listener@^1.0.2:
  1290 + version "1.1.0"
  1291 + resolved "https://registry.npm.taobao.org/add-dom-event-listener/download/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310"
  1292 + integrity sha1-apLbOg3Qq8JU4JXA8dwUrLuq4xA=
  1293 + dependencies:
  1294 + object-assign "4.x"
  1295 +
1276 1296 address@^1.0.3:
1277 1297 version "1.1.0"
1278 1298 resolved "https://registry.npm.taobao.org/address/download/address-1.1.0.tgz#ef8e047847fcd2c5b6f50c16965f924fd99fe709"
... ... @@ -1365,6 +1385,46 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
1365 1385 dependencies:
1366 1386 color-convert "^1.9.0"
1367 1387  
  1388 +ant-design-palettes@^1.1.3:
  1389 + version "1.1.3"
  1390 + resolved "https://registry.npm.taobao.org/ant-design-palettes/download/ant-design-palettes-1.1.3.tgz#84119b1a4d86363adc52a38d587e65336a0a27dd"
  1391 + integrity sha1-hBGbGk2GNjrcUqONWH5lM2oKJ90=
  1392 + dependencies:
  1393 + tinycolor2 "^1.4.1"
  1394 +
  1395 +ant-design-vue@^1.3.10:
  1396 + version "1.3.10"
  1397 + resolved "https://registry.npm.taobao.org/ant-design-vue/download/ant-design-vue-1.3.10.tgz#82813f90888f77dd0e56c8a71e14efa0f8d8e3da"
  1398 + integrity sha1-goE/kIiPd90OVsinHhTvoPjY49o=
  1399 + dependencies:
  1400 + "@ant-design/icons" "^1.1.15"
  1401 + "@ant-design/icons-vue" "^1.0.1"
  1402 + add-dom-event-listener "^1.0.2"
  1403 + array-tree-filter "^2.1.0"
  1404 + async-validator "^1.8.2"
  1405 + babel-helper-vue-jsx-merge-props "^2.0.3"
  1406 + babel-runtime "6.x"
  1407 + classnames "^2.2.5"
  1408 + component-classes "^1.2.6"
  1409 + dom-align "^1.7.0"
  1410 + dom-closest "^0.2.0"
  1411 + dom-scroll-into-view "^1.2.1"
  1412 + enquire.js "^2.1.6"
  1413 + intersperse "^1.0.0"
  1414 + is-negative-zero "^2.0.0"
  1415 + ismobilejs "^0.5.1"
  1416 + json2mq "^0.2.0"
  1417 + lodash "^4.17.5"
  1418 + moment "^2.21.0"
  1419 + mutationobserver-shim "^0.3.2"
  1420 + omit.js "^1.0.0"
  1421 + raf "^3.4.0"
  1422 + resize-observer-polyfill "^1.5.1"
  1423 + shallow-equal "^1.0.0"
  1424 + shallowequal "^1.0.2"
  1425 + vue-ref "^1.0.4"
  1426 + warning "^3.0.0"
  1427 +
1368 1428 any-promise@^1.0.0:
1369 1429 version "1.3.0"
1370 1430 resolved "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
... ... @@ -1470,6 +1530,11 @@ array-reduce@~0.0.0:
1470 1530 resolved "https://registry.npm.taobao.org/array-reduce/download/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
1471 1531 integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=
1472 1532  
  1533 +array-tree-filter@^2.1.0:
  1534 + version "2.1.0"
  1535 + resolved "https://registry.npm.taobao.org/array-tree-filter/download/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190"
  1536 + integrity sha1-hzrAD+yDdJ8lWsjdCDgUtPYykZA=
  1537 +
1473 1538 array-union@^1.0.1, array-union@^1.0.2:
1474 1539 version "1.0.2"
1475 1540 resolved "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
... ... @@ -1546,6 +1611,13 @@ async-limiter@~1.0.0:
1546 1611 resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
1547 1612 integrity sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=
1548 1613  
  1614 +async-validator@^1.8.2:
  1615 + version "1.11.3"
  1616 + resolved "https://registry.npm.taobao.org/async-validator/download/async-validator-1.11.3.tgz?cache=0&sync_timestamp=1561700133414&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-validator%2Fdownload%2Fasync-validator-1.11.3.tgz#23703b19740721d88edbcb6310f6d745da9ec109"
  1617 + integrity sha1-I3A7GXQHIdiO28tjEPbXRdqewQk=
  1618 + dependencies:
  1619 + babel-runtime "6.x"
  1620 +
1549 1621 async-validator@~1.8.1:
1550 1622 version "1.8.5"
1551 1623 resolved "https://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0"
... ... @@ -1677,7 +1749,7 @@ babel-generator@^6.18.0, babel-generator@^6.26.0:
1677 1749 source-map "^0.5.7"
1678 1750 trim-right "^1.0.1"
1679 1751  
1680   -babel-helper-vue-jsx-merge-props@^2.0.0:
  1752 +babel-helper-vue-jsx-merge-props@^2.0.0, babel-helper-vue-jsx-merge-props@^2.0.3:
1681 1753 version "2.0.3"
1682 1754 resolved "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6"
1683 1755 integrity sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY=
... ... @@ -1800,7 +1872,7 @@ babel-register@^6.26.0:
1800 1872 mkdirp "^0.5.1"
1801 1873 source-map-support "^0.4.15"
1802 1874  
1803   -babel-runtime@6.x, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
  1875 +babel-runtime@6.x, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0:
1804 1876 version "6.26.0"
1805 1877 resolved "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
1806 1878 integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
... ... @@ -2388,6 +2460,11 @@ class-utils@^0.3.5:
2388 2460 isobject "^3.0.0"
2389 2461 static-extend "^0.1.1"
2390 2462  
  2463 +classnames@^2.2.5:
  2464 + version "2.2.6"
  2465 + resolved "https://registry.npm.taobao.org/classnames/download/classnames-2.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclassnames%2Fdownload%2Fclassnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
  2466 + integrity sha1-Q5Nb/90pHzJtrQogUwmzjQD2UM4=
  2467 +
2391 2468 clean-css@4.2.x:
2392 2469 version "4.2.1"
2393 2470 resolved "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17"
... ... @@ -2586,11 +2663,23 @@ commondir@^1.0.1:
2586 2663 resolved "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
2587 2664 integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
2588 2665  
  2666 +component-classes@^1.2.6:
  2667 + version "1.2.6"
  2668 + resolved "https://registry.npm.taobao.org/component-classes/download/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691"
  2669 + integrity sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=
  2670 + dependencies:
  2671 + component-indexof "0.0.3"
  2672 +
2589 2673 component-emitter@^1.2.1:
2590 2674 version "1.3.0"
2591 2675 resolved "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
2592 2676 integrity sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=
2593 2677  
  2678 +component-indexof@0.0.3:
  2679 + version "0.0.3"
  2680 + resolved "https://registry.npm.taobao.org/component-indexof/download/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24"
  2681 + integrity sha1-EdCRMSI5648yyPJa6csAL/6NPCQ=
  2682 +
2594 2683 compressible@~2.0.16:
2595 2684 version "2.0.17"
2596 2685 resolved "https://registry.npm.taobao.org/compressible/download/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1"
... ... @@ -3344,6 +3433,18 @@ doctrine@^3.0.0:
3344 3433 dependencies:
3345 3434 esutils "^2.0.2"
3346 3435  
  3436 +dom-align@^1.7.0:
  3437 + version "1.9.0"
  3438 + resolved "https://registry.npm.taobao.org/dom-align/download/dom-align-1.9.0.tgz#27339be5a2301e7d8470bdee54575c835c981654"
  3439 + integrity sha1-JzOb5aIwHn2EcL3uVFdcg1yYFlQ=
  3440 +
  3441 +dom-closest@^0.2.0:
  3442 + version "0.2.0"
  3443 + resolved "https://registry.npm.taobao.org/dom-closest/download/dom-closest-0.2.0.tgz#ebd9f91d1bf22e8d6f477876bbcd3ec90216c0cf"
  3444 + integrity sha1-69n5HRvyLo1vR3h2u80+yQIWwM8=
  3445 + dependencies:
  3446 + dom-matches ">=1.0.1"
  3447 +
3347 3448 dom-converter@^0.2:
3348 3449 version "0.2.0"
3349 3450 resolved "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
... ... @@ -3356,6 +3457,16 @@ dom-event-types@^1.0.0:
3356 3457 resolved "https://registry.npm.taobao.org/dom-event-types/download/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae"
3357 3458 integrity sha1-WDCgop4b+Df+UKcM2ApZcjKBPK4=
3358 3459  
  3460 +dom-matches@>=1.0.1:
  3461 + version "2.0.0"
  3462 + resolved "https://registry.npm.taobao.org/dom-matches/download/dom-matches-2.0.0.tgz#d2728b416a87533980eb089b848d253cf23a758c"
  3463 + integrity sha1-0nKLQWqHUzmA6wibhI0lPPI6dYw=
  3464 +
  3465 +dom-scroll-into-view@^1.2.1:
  3466 + version "1.2.1"
  3467 + resolved "https://registry.npm.taobao.org/dom-scroll-into-view/download/dom-scroll-into-view-1.2.1.tgz#e8f36732dd089b0201a88d7815dc3f88e6d66c7e"
  3468 + integrity sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4=
  3469 +
3359 3470 dom-serializer@0:
3360 3471 version "0.1.1"
3361 3472 resolved "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
... ... @@ -3535,6 +3646,11 @@ enhanced-resolve@^4.1.0:
3535 3646 memory-fs "^0.4.0"
3536 3647 tapable "^1.0.0"
3537 3648  
  3649 +enquire.js@^2.1.6:
  3650 + version "2.1.6"
  3651 + resolved "https://registry.npm.taobao.org/enquire.js/download/enquire.js-2.1.6.tgz#3e8780c9b8b835084c3f60e166dbc3c2a3c89814"
  3652 + integrity sha1-PoeAybi4NQhMP2DhZtvDwqPImBQ=
  3653 +
3538 3654 entities@^1.1.1:
3539 3655 version "1.1.2"
3540 3656 resolved "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
... ... @@ -5238,6 +5354,11 @@ internal-ip@^4.3.0:
5238 5354 default-gateway "^4.2.0"
5239 5355 ipaddr.js "^1.9.0"
5240 5356  
  5357 +intersperse@^1.0.0:
  5358 + version "1.0.0"
  5359 + resolved "https://registry.npm.taobao.org/intersperse/download/intersperse-1.0.0.tgz#f2561fb1cfef9f5277cc3347a22886b4351a5181"
  5360 + integrity sha1-8lYfsc/vn1J3zDNHoiiGtDUaUYE=
  5361 +
5241 5362 invariant@^2.2.2, invariant@^2.2.4:
5242 5363 version "2.2.4"
5243 5364 resolved "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finvariant%2Fdownload%2Finvariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
... ... @@ -5464,6 +5585,11 @@ is-installed-globally@0.1.0:
5464 5585 global-dirs "^0.1.0"
5465 5586 is-path-inside "^1.0.0"
5466 5587  
  5588 +is-negative-zero@^2.0.0:
  5589 + version "2.0.0"
  5590 + resolved "https://registry.npm.taobao.org/is-negative-zero/download/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
  5591 + integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
  5592 +
5467 5593 is-number@^2.1.0:
5468 5594 version "2.1.0"
5469 5595 resolved "https://registry.npm.taobao.org/is-number/download/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
... ... @@ -5619,6 +5745,11 @@ isexe@^2.0.0:
5619 5745 resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
5620 5746 integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
5621 5747  
  5748 +ismobilejs@^0.5.1:
  5749 + version "0.5.2"
  5750 + resolved "https://registry.npm.taobao.org/ismobilejs/download/ismobilejs-0.5.2.tgz#e81bacf6187c532ad8348355f4fecd6e6adfdce1"
  5751 + integrity sha1-6Bus9hh8UyrYNINV9P7Nbmrf3OE=
  5752 +
5622 5753 isobject@^2.0.0:
5623 5754 version "2.1.0"
5624 5755 resolved "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
... ... @@ -6196,6 +6327,13 @@ json-stringify-safe@~5.0.1:
6196 6327 resolved "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
6197 6328 integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
6198 6329  
  6330 +json2mq@^0.2.0:
  6331 + version "0.2.0"
  6332 + resolved "https://registry.npm.taobao.org/json2mq/download/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a"
  6333 + integrity sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=
  6334 + dependencies:
  6335 + string-convert "^0.2.0"
  6336 +
6199 6337 json3@^3.3.2:
6200 6338 version "3.3.3"
6201 6339 resolved "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
... ... @@ -6892,7 +7030,7 @@ mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@
6892 7030 dependencies:
6893 7031 minimist "0.0.8"
6894 7032  
6895   -moment@2.24.0:
  7033 +moment@2.24.0, moment@^2.21.0:
6896 7034 version "2.24.0"
6897 7035 resolved "https://registry.npm.taobao.org/moment/download/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
6898 7036 integrity sha1-DQVdU/UFKqZTyfbraLtdEr9cK1s=
... ... @@ -6937,6 +7075,11 @@ multicast-dns@^6.0.1:
6937 7075 dns-packet "^1.3.1"
6938 7076 thunky "^1.0.2"
6939 7077  
  7078 +mutationobserver-shim@^0.3.2:
  7079 + version "0.3.3"
  7080 + resolved "https://registry.npm.taobao.org/mutationobserver-shim/download/mutationobserver-shim-0.3.3.tgz#65869630bc89d7bf8c9cd9cb82188cd955aacd2b"
  7081 + integrity sha1-ZYaWMLyJ17+MnNnLghiM2VWqzSs=
  7082 +
6940 7083 mute-stream@0.0.7:
6941 7084 version "0.0.7"
6942 7085 resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
... ... @@ -7220,7 +7363,7 @@ oauth-sign@~0.9.0:
7220 7363 resolved "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
7221 7364 integrity sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=
7222 7365  
7223   -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
  7366 +object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
7224 7367 version "4.1.1"
7225 7368 resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
7226 7369 integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
... ... @@ -7299,6 +7442,13 @@ obuf@^1.0.0, obuf@^1.1.2:
7299 7442 resolved "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
7300 7443 integrity sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=
7301 7444  
  7445 +omit.js@^1.0.0:
  7446 + version "1.0.2"
  7447 + resolved "https://registry.npm.taobao.org/omit.js/download/omit.js-1.0.2.tgz#91a14f0eba84066dfa015bf30e474c47f30bc858"
  7448 + integrity sha1-kaFPDrqEBm36AVvzDkdMR/MLyFg=
  7449 + dependencies:
  7450 + babel-runtime "^6.23.0"
  7451 +
7302 7452 on-finished@~2.3.0:
7303 7453 version "2.3.0"
7304 7454 resolved "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
... ... @@ -8292,6 +8442,13 @@ querystringify@^2.1.1:
8292 8442 resolved "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
8293 8443 integrity sha1-YOWl/WSn+L+k0qsu1v30yFutFU4=
8294 8444  
  8445 +raf@^3.4.0:
  8446 + version "3.4.1"
  8447 + resolved "https://registry.npm.taobao.org/raf/download/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
  8448 + integrity sha1-B0LpmkplUvRF1z4+4DKK8P8e3jk=
  8449 + dependencies:
  8450 + performance-now "^2.1.0"
  8451 +
8295 8452 ramda@0.24.1:
8296 8453 version "0.24.1"
8297 8454 resolved "https://registry.npm.taobao.org/ramda/download/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857"
... ... @@ -8663,7 +8820,7 @@ reselect@^3.0.1:
8663 8820 resolved "https://registry.npm.taobao.org/reselect/download/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147"
8664 8821 integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=
8665 8822  
8666   -resize-observer-polyfill@^1.5.0:
  8823 +resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1:
8667 8824 version "1.5.1"
8668 8825 resolved "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
8669 8826 integrity sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=
... ... @@ -8998,6 +9155,16 @@ shallow-clone@^1.0.0:
8998 9155 kind-of "^5.0.0"
8999 9156 mixin-object "^2.0.1"
9000 9157  
  9158 +shallow-equal@^1.0.0:
  9159 + version "1.2.0"
  9160 + resolved "https://registry.npm.taobao.org/shallow-equal/download/shallow-equal-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fshallow-equal%2Fdownload%2Fshallow-equal-1.2.0.tgz#fd828d2029ff4e19569db7e19e535e94e2d1f5cc"
  9161 + integrity sha1-/YKNICn/ThlWnbfhnlNelOLR9cw=
  9162 +
  9163 +shallowequal@^1.0.2:
  9164 + version "1.1.0"
  9165 + resolved "https://registry.npm.taobao.org/shallowequal/download/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
  9166 + integrity sha1-GI1SHelbkIdAT9TctosT3wrk5/g=
  9167 +
9001 9168 shebang-command@^1.2.0:
9002 9169 version "1.2.0"
9003 9170 resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
... ... @@ -9346,6 +9513,11 @@ strict-uri-encode@^1.0.0:
9346 9513 resolved "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
9347 9514 integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
9348 9515  
  9516 +string-convert@^0.2.0:
  9517 + version "0.2.1"
  9518 + resolved "https://registry.npm.taobao.org/string-convert/download/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97"
  9519 + integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=
  9520 +
9349 9521 string-length@^2.0.0:
9350 9522 version "2.0.0"
9351 9523 resolved "https://registry.npm.taobao.org/string-length/download/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed"
... ... @@ -9696,6 +9868,11 @@ timsort@^0.3.0:
9696 9868 resolved "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
9697 9869 integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
9698 9870  
  9871 +tinycolor2@^1.4.1:
  9872 + version "1.4.1"
  9873 + resolved "https://registry.npm.taobao.org/tinycolor2/download/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
  9874 + integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=
  9875 +
9699 9876 tmp@0.1.0:
9700 9877 version "0.1.0"
9701 9878 resolved "https://registry.npm.taobao.org/tmp/download/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877"
... ... @@ -10142,6 +10319,11 @@ vue-loader@^15.7.0:
10142 10319 vue-hot-reload-api "^2.3.0"
10143 10320 vue-style-loader "^4.1.0"
10144 10321  
  10322 +vue-ref@^1.0.4:
  10323 + version "1.0.6"
  10324 + resolved "https://registry.npm.taobao.org/vue-ref/download/vue-ref-1.0.6.tgz#b9b3d7d0e290ee2fd3d50d5d7bdac520806cb265"
  10325 + integrity sha1-ubPX0OKQ7i/T1Q1de9rFIIBssmU=
  10326 +
10145 10327 vue-router@^3.0.3:
10146 10328 version "3.0.6"
10147 10329 resolved "https://registry.npm.taobao.org/vue-router/download/vue-router-3.0.6.tgz#2e4f0f9cbb0b96d0205ab2690cfe588935136ac3"
... ... @@ -10192,6 +10374,13 @@ walker@~1.0.5:
10192 10374 dependencies:
10193 10375 makeerror "1.0.x"
10194 10376  
  10377 +warning@^3.0.0:
  10378 + version "3.0.0"
  10379 + resolved "https://registry.npm.taobao.org/warning/download/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
  10380 + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=
  10381 + dependencies:
  10382 + loose-envify "^1.0.0"
  10383 +
10195 10384 watch@~0.18.0:
10196 10385 version "0.18.0"
10197 10386 resolved "https://registry.npm.taobao.org/watch/download/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986"
... ...