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,6 +10,7 @@
10 "test:unit": "vue-cli-service test:unit" 10 "test:unit": "vue-cli-service test:unit"
11 }, 11 },
12 "dependencies": { 12 "dependencies": {
  13 + "ant-design-vue": "^1.3.10",
13 "core-js": "^2.6.5", 14 "core-js": "^2.6.5",
14 "element-ui": "^2.9.1", 15 "element-ui": "^2.9.1",
15 "font-awesome": "4.7.0", 16 "font-awesome": "4.7.0",
front-end/h5/src/components/core/editor.js
1 import Vue from 'vue' 1 import Vue from 'vue'
2 import Element from './models/element' 2 import Element from './models/element'
  3 +import './styles/index.scss'
3 4
4 export default { 5 export default {
5 name: 'Editor', 6 name: 'Editor',
6 components: { 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 data: () => ({ 41 data: () => ({
  42 + activeMenuKey: 'pluginList',
9 pages: [], 43 pages: [],
10 elements: [], 44 elements: [],
11 editingElement: null, 45 editingElement: null,
@@ -20,6 +54,7 @@ export default { @@ -20,6 +54,7 @@ export default {
20 }, 54 },
21 /** 55 /**
22 * !#zh 点击插件,copy 其基础数据到组件树(中间画布) 56 * !#zh 点击插件,copy 其基础数据到组件树(中间画布)
  57 + * #!en click the plugin shortcut, create new Element with the plugin's meta data
23 * pluginInfo {Object}: 插件列表中的基础数据, {name}=pluginInfo 58 * pluginInfo {Object}: 插件列表中的基础数据, {name}=pluginInfo
24 */ 59 */
25 clone ({ name }) { 60 clone ({ name }) {
@@ -40,7 +75,8 @@ export default { @@ -40,7 +75,8 @@ export default {
40 this.mixinPluginCustomComponents2Editor() 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 * @param {Object} group: {children, title, icon} 80 * @param {Object} group: {children, title, icon}
45 */ 81 */
46 renderPluginShortcut (group) { 82 renderPluginShortcut (group) {
@@ -49,39 +85,34 @@ export default { @@ -49,39 +85,34 @@ export default {
49 : this.renderMultiPluginShortcuts(group) 85 : this.renderMultiPluginShortcuts(group)
50 }, 86 },
51 /** 87 /**
52 - * 渲染多个插件的快捷方式 88 + * #!zh 渲染多个插件的快捷方式
  89 + * #!en render shortcuts for multi plugins
53 * @param {Object} group: {children, title, icon} 90 * @param {Object} group: {children, title, icon}
54 */ 91 */
55 renderMultiPluginShortcuts (group) { 92 renderMultiPluginShortcuts (group) {
56 const plugins = group.children 93 const plugins = group.children
57 - return <el-popover 94 + return <a-popover
58 placement="bottom" 95 placement="bottom"
59 - width="400" 96 + class="shortcust-button"
60 trigger="hover"> 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 * #!zh: 渲染单个插件的快捷方式 118 * #!zh: 渲染单个插件的快捷方式
@@ -90,18 +121,11 @@ export default { @@ -90,18 +121,11 @@ export default {
90 */ 121 */
91 renderSinglePluginShortcut ({ children }) { 122 renderSinglePluginShortcut ({ children }) {
92 const [plugin] = children 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 * #!zh: renderCanvas 渲染中间画布 131 * #!zh: renderCanvas 渲染中间画布
@@ -146,24 +170,15 @@ export default { @@ -146,24 +170,15 @@ export default {
146 }, 170 },
147 renderPluginListPanel () { 171 renderPluginListPanel () {
148 return ( 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 renderPropsEditorPanel (h) { 184 renderPropsEditorPanel (h) {
@@ -171,7 +186,7 @@ export default { @@ -171,7 +186,7 @@ export default {
171 const editingElement = this.editingElement 186 const editingElement = this.editingElement
172 const propsConfig = editingElement.editorConfig.propsConfig 187 const propsConfig = editingElement.editorConfig.propsConfig
173 return ( 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 Object.keys(propsConfig).map(propKey => { 191 Object.keys(propsConfig).map(propKey => {
177 const item = propsConfig[propKey] 192 const item = propsConfig[propKey]
@@ -180,56 +195,119 @@ export default { @@ -180,56 +195,119 @@ export default {
180 props: { 195 props: {
181 ...item.prop, 196 ...item.prop,
182 // https://vuejs.org/v2/guide/render-function.html#v-model 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 on: { 200 on: {
186 // https://vuejs.org/v2/guide/render-function.html#v-model 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 return ( 210 return (
193 - <el-form-item label={item.label}> 211 + <a-form-item label={item.label}>
194 { h(item.type, data) } 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 render (h) { 221 render (h) {
204 return ( 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 \ No newline at end of file 42 \ No newline at end of file
front-end/h5/src/components/plugins/lbp-button.js
@@ -11,19 +11,21 @@ export default { @@ -11,19 +11,21 @@ export default {
11 borderWidth, 11 borderWidth,
12 text 12 text
13 } = this 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 return ( 26 return (
15 <button 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 >{text}</button>) 29 >{text}</button>)
28 }, 30 },
29 name: 'lbp-button', 31 name: 'lbp-button',
@@ -84,13 +86,13 @@ export default { @@ -84,13 +86,13 @@ export default {
84 editorConfig: { 86 editorConfig: {
85 propsConfig: { 87 propsConfig: {
86 text: { 88 text: {
87 - type: 'el-input', 89 + type: 'a-input',
88 label: '按钮文字', 90 label: '按钮文字',
89 require: true, 91 require: true,
90 defaultPropValue: '按钮' 92 defaultPropValue: '按钮'
91 }, 93 },
92 fontSize: { 94 fontSize: {
93 - type: 'el-input-number', 95 + type: 'a-input-number',
94 label: '字号(px)', 96 label: '字号(px)',
95 require: true, 97 require: true,
96 prop: { 98 prop: {
@@ -101,7 +103,7 @@ export default { @@ -101,7 +103,7 @@ export default {
101 defaultPropValue: 14 103 defaultPropValue: 14
102 }, 104 },
103 color: { 105 color: {
104 - type: 'el-input', 106 + type: 'a-input',
105 label: '文字颜色', 107 label: '文字颜色',
106 // !#zh 为编辑组件指定 prop 108 // !#zh 为编辑组件指定 prop
107 prop: { 109 prop: {
@@ -111,7 +113,7 @@ export default { @@ -111,7 +113,7 @@ export default {
111 defaultPropValue: 'black' 113 defaultPropValue: 'black'
112 }, 114 },
113 backgroundColor: { 115 backgroundColor: {
114 - type: 'el-input', // lbs-color-picker 116 + type: 'a-input', // lbs-color-picker
115 label: '背景颜色', 117 label: '背景颜色',
116 prop: { 118 prop: {
117 type: 'color' 119 type: 'color'
@@ -120,7 +122,7 @@ export default { @@ -120,7 +122,7 @@ export default {
120 defaultPropValue: '#ffffff' // TODO why logogram for color does't work? 122 defaultPropValue: '#ffffff' // TODO why logogram for color does't work?
121 }, 123 },
122 borderColor: { 124 borderColor: {
123 - type: 'el-input', // lbs-color-picker 125 + type: 'a-input', // lbs-color-picker
124 label: '边框颜色', 126 label: '边框颜色',
125 prop: { 127 prop: {
126 type: 'color' 128 type: 'color'
@@ -129,7 +131,7 @@ export default { @@ -129,7 +131,7 @@ export default {
129 defaultPropValue: '#eeeeee' 131 defaultPropValue: '#eeeeee'
130 }, 132 },
131 borderWidth: { 133 borderWidth: {
132 - type: 'el-input-number', 134 + type: 'a-input-number',
133 label: '边框宽度(px)', 135 label: '边框宽度(px)',
134 require: true, 136 require: true,
135 prop: { 137 prop: {
@@ -140,7 +142,7 @@ export default { @@ -140,7 +142,7 @@ export default {
140 defaultPropValue: 1 142 defaultPropValue: 1
141 }, 143 },
142 borderRadius: { 144 borderRadius: {
143 - type: 'el-input-number', 145 + type: 'a-input-number',
144 label: '圆角(px)', 146 label: '圆角(px)',
145 require: true, 147 require: true,
146 prop: { 148 prop: {
@@ -151,7 +153,7 @@ export default { @@ -151,7 +153,7 @@ export default {
151 defaultPropValue: 0 153 defaultPropValue: 0
152 }, 154 },
153 lineHeight: { 155 lineHeight: {
154 - type: 'el-input-number', 156 + type: 'a-input-number',
155 label: '行高', 157 label: '行高',
156 require: true, 158 require: true,
157 prop: { 159 prop: {
@@ -172,14 +174,14 @@ export default { @@ -172,14 +174,14 @@ export default {
172 'lbs-text-align': { 174 'lbs-text-align': {
173 template: ` 175 template: `
174 <div class="wrap"> 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 <!-- issue #8 --> 180 <!-- issue #8 -->
179 <i :class="['fa', 'fa-align-'+item.value]" aria-hidden="true"></i> 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 </div>`, 185 </div>`,
184 props: { 186 props: {
185 value: { 187 value: {
@@ -227,14 +229,14 @@ export default { @@ -227,14 +229,14 @@ export default {
227 } 229 }
228 }, 230 },
229 template: ` 231 template: `
230 - <el-select v-model="value_" placeholder="类型">  
231 - <el-option 232 + <a-select v-model="value_" placeholder="类型">
  233 + <a-option
232 v-for="item in options" 234 v-for="item in options"
233 :key="item.value" 235 :key="item.value"
234 :label="item.label" 236 :label="item.label"
235 :value="item.value"> 237 :value="item.value">
236 - </el-option>  
237 - </el-select> 238 + </a-option>
  239 + </a-select>
238 `, 240 `,
239 data: () => ({ 241 data: () => ({
240 options: [ 242 options: [
front-end/h5/src/components/plugins/lbp-picture.js
@@ -19,7 +19,7 @@ export default { @@ -19,7 +19,7 @@ export default {
19 propsConfig: { 19 propsConfig: {
20 imgSrc: { 20 imgSrc: {
21 // type: 'picture-picker', 21 // type: 'picture-picker',
22 - type: 'el-input', 22 + type: 'a-input',
23 label: '图片url', 23 label: '图片url',
24 prop: { 24 prop: {
25 type: 'textarea' 25 type: 'textarea'
front-end/h5/src/main.js
@@ -3,13 +3,17 @@ import App from &#39;./App.vue&#39; @@ -3,13 +3,17 @@ import App from &#39;./App.vue&#39;
3 import router from './router' 3 import router from './router'
4 import store from './store/' 4 import store from './store/'
5 import './registerServiceWorker' 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 // !#zh 请注意,务必使用 font-awesome@4.7.0 版本 11 // !#zh 请注意,务必使用 font-awesome@4.7.0 版本
9 import 'font-awesome/css/font-awesome.min.css' 12 import 'font-awesome/css/font-awesome.min.css'
10 13
11 Vue.config.productionTip = false 14 Vue.config.productionTip = false
12 -Vue.use(ElementUI) 15 +Vue.use(Antd)
  16 +// Vue.use(ElementUI)
13 17
14 new Vue({ 18 new Vue({
15 router, 19 router,
front-end/h5/src/views/Editor.vue
@@ -91,14 +91,6 @@ $designerWidth: 320px; @@ -91,14 +91,6 @@ $designerWidth: 320px;
91 $designerHeight: 568px; 91 $designerHeight: 568px;
92 $designerWidthHalf: $designerWidth / 2; 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 .canvas-wrapper { 94 .canvas-wrapper {
103 position: relative; 95 position: relative;
104 top: 5%; 96 top: 5%;
@@ -106,6 +98,7 @@ $designerWidthHalf: $designerWidth / 2; @@ -106,6 +98,7 @@ $designerWidthHalf: $designerWidth / 2;
106 height: $designerHeight; 98 height: $designerHeight;
107 border: 1px #ebeaea solid; 99 border: 1px #ebeaea solid;
108 margin: 0 auto; 100 margin: 0 auto;
  101 + background: #fff;
109 } 102 }
110 103
111 .lb-tabs { 104 .lb-tabs {
front-end/h5/yarn.lock
@@ -2,6 +2,19 @@ @@ -2,6 +2,19 @@
2 # yarn lockfile v1 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 "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": 18 "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35":
6 version "7.0.0" 19 version "7.0.0"
7 resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" 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,6 +1286,13 @@ acorn@^6.0.1, acorn@^6.0.2, acorn@^6.0.7, acorn@^6.1.1:
1273 resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" 1286 resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
1274 integrity sha1-fSWuBbuK0fm2mRCOEJTs14hK3B8= 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 address@^1.0.3: 1296 address@^1.0.3:
1277 version "1.1.0" 1297 version "1.1.0"
1278 resolved "https://registry.npm.taobao.org/address/download/address-1.1.0.tgz#ef8e047847fcd2c5b6f50c16965f924fd99fe709" 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,6 +1385,46 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
1365 dependencies: 1385 dependencies:
1366 color-convert "^1.9.0" 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 any-promise@^1.0.0: 1428 any-promise@^1.0.0:
1369 version "1.3.0" 1429 version "1.3.0"
1370 resolved "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" 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,6 +1530,11 @@ array-reduce@~0.0.0:
1470 resolved "https://registry.npm.taobao.org/array-reduce/download/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" 1530 resolved "https://registry.npm.taobao.org/array-reduce/download/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
1471 integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= 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 array-union@^1.0.1, array-union@^1.0.2: 1538 array-union@^1.0.1, array-union@^1.0.2:
1474 version "1.0.2" 1539 version "1.0.2"
1475 resolved "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 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,6 +1611,13 @@ async-limiter@~1.0.0:
1546 resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" 1611 resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
1547 integrity sha1-ePrtjD0HSrgfIrTphdeehzj3IPg= 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 async-validator@~1.8.1: 1621 async-validator@~1.8.1:
1550 version "1.8.5" 1622 version "1.8.5"
1551 resolved "https://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0" 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,7 +1749,7 @@ babel-generator@^6.18.0, babel-generator@^6.26.0:
1677 source-map "^0.5.7" 1749 source-map "^0.5.7"
1678 trim-right "^1.0.1" 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 version "2.0.3" 1753 version "2.0.3"
1682 resolved "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" 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 integrity sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY= 1755 integrity sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY=
@@ -1800,7 +1872,7 @@ babel-register@^6.26.0: @@ -1800,7 +1872,7 @@ babel-register@^6.26.0:
1800 mkdirp "^0.5.1" 1872 mkdirp "^0.5.1"
1801 source-map-support "^0.4.15" 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 version "6.26.0" 1876 version "6.26.0"
1805 resolved "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 1877 resolved "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
1806 integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= 1878 integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
@@ -2388,6 +2460,11 @@ class-utils@^0.3.5: @@ -2388,6 +2460,11 @@ class-utils@^0.3.5:
2388 isobject "^3.0.0" 2460 isobject "^3.0.0"
2389 static-extend "^0.1.1" 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 clean-css@4.2.x: 2468 clean-css@4.2.x:
2392 version "4.2.1" 2469 version "4.2.1"
2393 resolved "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" 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,11 +2663,23 @@ commondir@^1.0.1:
2586 resolved "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 2663 resolved "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
2587 integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 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 component-emitter@^1.2.1: 2673 component-emitter@^1.2.1:
2590 version "1.3.0" 2674 version "1.3.0"
2591 resolved "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" 2675 resolved "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
2592 integrity sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A= 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 compressible@~2.0.16: 2683 compressible@~2.0.16:
2595 version "2.0.17" 2684 version "2.0.17"
2596 resolved "https://registry.npm.taobao.org/compressible/download/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" 2685 resolved "https://registry.npm.taobao.org/compressible/download/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1"
@@ -3344,6 +3433,18 @@ doctrine@^3.0.0: @@ -3344,6 +3433,18 @@ doctrine@^3.0.0:
3344 dependencies: 3433 dependencies:
3345 esutils "^2.0.2" 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 dom-converter@^0.2: 3448 dom-converter@^0.2:
3348 version "0.2.0" 3449 version "0.2.0"
3349 resolved "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" 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,6 +3457,16 @@ dom-event-types@^1.0.0:
3356 resolved "https://registry.npm.taobao.org/dom-event-types/download/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae" 3457 resolved "https://registry.npm.taobao.org/dom-event-types/download/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae"
3357 integrity sha1-WDCgop4b+Df+UKcM2ApZcjKBPK4= 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 dom-serializer@0: 3470 dom-serializer@0:
3360 version "0.1.1" 3471 version "0.1.1"
3361 resolved "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" 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,6 +3646,11 @@ enhanced-resolve@^4.1.0:
3535 memory-fs "^0.4.0" 3646 memory-fs "^0.4.0"
3536 tapable "^1.0.0" 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 entities@^1.1.1: 3654 entities@^1.1.1:
3539 version "1.1.2" 3655 version "1.1.2"
3540 resolved "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" 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,6 +5354,11 @@ internal-ip@^4.3.0:
5238 default-gateway "^4.2.0" 5354 default-gateway "^4.2.0"
5239 ipaddr.js "^1.9.0" 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 invariant@^2.2.2, invariant@^2.2.4: 5362 invariant@^2.2.2, invariant@^2.2.4:
5242 version "2.2.4" 5363 version "2.2.4"
5243 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" 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,6 +5585,11 @@ is-installed-globally@0.1.0:
5464 global-dirs "^0.1.0" 5585 global-dirs "^0.1.0"
5465 is-path-inside "^1.0.0" 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 is-number@^2.1.0: 5593 is-number@^2.1.0:
5468 version "2.1.0" 5594 version "2.1.0"
5469 resolved "https://registry.npm.taobao.org/is-number/download/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 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,6 +5745,11 @@ isexe@^2.0.0:
5619 resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 5745 resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
5620 integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 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 isobject@^2.0.0: 5753 isobject@^2.0.0:
5623 version "2.1.0" 5754 version "2.1.0"
5624 resolved "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 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,6 +6327,13 @@ json-stringify-safe@~5.0.1:
6196 resolved "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 6327 resolved "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
6197 integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 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 json3@^3.3.2: 6337 json3@^3.3.2:
6200 version "3.3.3" 6338 version "3.3.3"
6201 resolved "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" 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,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 dependencies: 7030 dependencies:
6893 minimist "0.0.8" 7031 minimist "0.0.8"
6894 7032
6895 -moment@2.24.0: 7033 +moment@2.24.0, moment@^2.21.0:
6896 version "2.24.0" 7034 version "2.24.0"
6897 resolved "https://registry.npm.taobao.org/moment/download/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" 7035 resolved "https://registry.npm.taobao.org/moment/download/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
6898 integrity sha1-DQVdU/UFKqZTyfbraLtdEr9cK1s= 7036 integrity sha1-DQVdU/UFKqZTyfbraLtdEr9cK1s=
@@ -6937,6 +7075,11 @@ multicast-dns@^6.0.1: @@ -6937,6 +7075,11 @@ multicast-dns@^6.0.1:
6937 dns-packet "^1.3.1" 7075 dns-packet "^1.3.1"
6938 thunky "^1.0.2" 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 mute-stream@0.0.7: 7083 mute-stream@0.0.7:
6941 version "0.0.7" 7084 version "0.0.7"
6942 resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 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,7 +7363,7 @@ oauth-sign@~0.9.0:
7220 resolved "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 7363 resolved "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
7221 integrity sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU= 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 version "4.1.1" 7367 version "4.1.1"
7225 resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 7368 resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
7226 integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 7369 integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -7299,6 +7442,13 @@ obuf@^1.0.0, obuf@^1.1.2: @@ -7299,6 +7442,13 @@ obuf@^1.0.0, obuf@^1.1.2:
7299 resolved "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" 7442 resolved "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
7300 integrity sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4= 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 on-finished@~2.3.0: 7452 on-finished@~2.3.0:
7303 version "2.3.0" 7453 version "2.3.0"
7304 resolved "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 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,6 +8442,13 @@ querystringify@^2.1.1:
8292 resolved "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" 8442 resolved "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
8293 integrity sha1-YOWl/WSn+L+k0qsu1v30yFutFU4= 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 ramda@0.24.1: 8452 ramda@0.24.1:
8296 version "0.24.1" 8453 version "0.24.1"
8297 resolved "https://registry.npm.taobao.org/ramda/download/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857" 8454 resolved "https://registry.npm.taobao.org/ramda/download/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857"
@@ -8663,7 +8820,7 @@ reselect@^3.0.1: @@ -8663,7 +8820,7 @@ reselect@^3.0.1:
8663 resolved "https://registry.npm.taobao.org/reselect/download/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" 8820 resolved "https://registry.npm.taobao.org/reselect/download/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147"
8664 integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= 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 version "1.5.1" 8824 version "1.5.1"
8668 resolved "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" 8825 resolved "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
8669 integrity sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ= 8826 integrity sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=
@@ -8998,6 +9155,16 @@ shallow-clone@^1.0.0: @@ -8998,6 +9155,16 @@ shallow-clone@^1.0.0:
8998 kind-of "^5.0.0" 9155 kind-of "^5.0.0"
8999 mixin-object "^2.0.1" 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 shebang-command@^1.2.0: 9168 shebang-command@^1.2.0:
9002 version "1.2.0" 9169 version "1.2.0"
9003 resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 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,6 +9513,11 @@ strict-uri-encode@^1.0.0:
9346 resolved "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" 9513 resolved "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
9347 integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= 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 string-length@^2.0.0: 9521 string-length@^2.0.0:
9350 version "2.0.0" 9522 version "2.0.0"
9351 resolved "https://registry.npm.taobao.org/string-length/download/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" 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,6 +9868,11 @@ timsort@^0.3.0:
9696 resolved "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" 9868 resolved "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
9697 integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= 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 tmp@0.1.0: 9876 tmp@0.1.0:
9700 version "0.1.0" 9877 version "0.1.0"
9701 resolved "https://registry.npm.taobao.org/tmp/download/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" 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,6 +10319,11 @@ vue-loader@^15.7.0:
10142 vue-hot-reload-api "^2.3.0" 10319 vue-hot-reload-api "^2.3.0"
10143 vue-style-loader "^4.1.0" 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 vue-router@^3.0.3: 10327 vue-router@^3.0.3:
10146 version "3.0.6" 10328 version "3.0.6"
10147 resolved "https://registry.npm.taobao.org/vue-router/download/vue-router-3.0.6.tgz#2e4f0f9cbb0b96d0205ab2690cfe588935136ac3" 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,6 +10374,13 @@ walker@~1.0.5:
10192 dependencies: 10374 dependencies:
10193 makeerror "1.0.x" 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 watch@~0.18.0: 10384 watch@~0.18.0:
10196 version "0.18.0" 10385 version "0.18.0"
10197 resolved "https://registry.npm.taobao.org/watch/download/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" 10386 resolved "https://registry.npm.taobao.org/watch/download/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986"