* [example] update examples in weex playground app
diff --git a/src/main/assets/about.weex.js b/src/main/assets/about.weex.js
new file mode 100644
index 0000000..bd4e755
--- /dev/null
+++ b/src/main/assets/about.weex.js
@@ -0,0 +1,4 @@
+// { "framework": "Vue" }
+"use weex:vue";
+
+!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=38)}([function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(3),o=n(11);t.exports=n(4)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(9),o=n(30),i=n(16),a=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){t.exports=!n(10)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(52),o=n(14);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(20)("wks"),o=n(12),i=n(0).Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){var n=t.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(7);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on  "+t);return t}},function(t,e){t.exports=!0},function(t,e,n){var r=n(7);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports={}},function(t,e,n){var r=n(34),o=n(21);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e,n){var r=n(20)("keys"),o=n(12);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e,n){var r=n(0),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(3).f,o=n(1),i=n(6)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){e.f=n(6)},function(t,e,n){var r=n(0),o=n(8),i=n(15),a=n(23),u=n(3).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||u(e,t,{value:a.f(t)})}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fetchNews=e.fetchDoodle=e.readAbout=e.saveAbout=e.fetchAbout=e.readGuide=e.saveGuide=e.fetchGuide=e.readExamples=e.saveExamples=e.fetchExamples=void 0;var r=i(n(42)),o=i(n(27));function i(t){return t&&t.__esModule?t:{default:t}}e.createLink=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[];for(var r in e)"string"==typeof e[r]&&n.push(s(r)+"="+s(e[r]));if("Web"===WXEnvironment.platform)return n.unshift("page="+t+".web.js"),"/?"+n.join("&");return""+function(){var t=weex.config.bundleUrl,e=t.indexOf("your_current_IP")>=0||t.indexOf("file://assets/")>=0,n=t.indexOf("file:///")>=0&&t.indexOf("WeexDemo.app")>0;if(e)return"file://assets/";if(n)return t.substring(0,t.lastIndexOf("/")+1);return""}()+t+".weex.js"+(n.length?"?"+n.join("&"):"")},e.createURL=f,e.i18n=l,e.parseLanguage=d,e.setLanguage=function(t){var e=d(t);e&&u.setItem("WEEX_PLAYGROUND_LANGUAGE",e)},e.clearStorageLanguage=function(){u.removeItem("WEEX_PLAYGROUND_LANGUAGE")},e.getStorageLanguage=v,e.getSystemLanguage=h,e.getLanguage=y,e.jumpTo=function(t,e){y(function(n){u.setItem("CURRENT_DOCUMENT_URL",l(t,n)),c.push({url:f("bf0305c14b511b24a4e616f53926432b",{language:n,title:l(e,n)})})})},e.viewSource=function(t){y(function(e){c.push({url:f("f6ce29faf686eabc38b410bf4828fa5a",{hash:t,language:e})})})},e.setTitleBar=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";if("[object Object]"!==Object.prototype.toString.apply(t))return;var n=weex.requireModule("titleBar");if(t.color||t.backgroundColor)try{n.setStyle({foregroundColor:t.color||"#FFFFFF",backgroundColor:t.backgroundColor||"#00B4FF"})}catch(t){}var r=l(t.title,e);if(r)try{n.setTitle(r)}catch(t){}},e.fetchData=x,e.saveData=b,e.readData=_;var a=weex.requireModule("stream"),u=weex.requireModule("storage"),c=weex.requireModule("navigator"),s="function"==typeof encodeURIComponent?encodeURIComponent:"function"==typeof encodeURI?encodeURI:function(t){return t};function f(t,e){if("Web"===WXEnvironment.platform)return"http://dotwe.org/raw/htmlVue/"+t;var n="http://dotwe.org/raw/dist/"+t+".bundle.wx",r=function(t){if(!t||"object"!==(void 0===t?"undefined":(0,o.default)(t)))return"";var e=[];for(var n in t)"string"==typeof t[n]&&e.push(s(n)+"="+s(t[n]));return e.join("&")}(e);return"TB"===WXEnvironment.appName?n+"?_wx_tpl="+n+"&"+r:"WXSample"===WXEnvironment.appName?n+"?"+r:n+"?wx_weex=true&"+r}function l(t,e){return"string"==typeof t?t:"[object Object]"===Object.prototype.toString.call(t)?t[this&&this.language||e||"en"]:void 0}var p=/(en|zh)\_?\w*/i;function d(t){var e=p.exec(t+"");return e&&e[1]?e[1]:""}function v(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if("function"!==!(void 0===t||(0,o.default)(t)))try{u.getItem("WEEX_PLAYGROUND_LANGUAGE",function(n){if("success"===n.result){var r=d(n.data);r?t(r):e()}else e(n)})}catch(t){e(t)}}function h(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if("function"!==!(void 0===t||(0,o.default)(t)))if("web"===WXEnvironment.platform.toLowerCase()){var n=d(window.navigator.language);n?t(n):e()}else try{var r=weex.requireModule("locale")||weex.requireModule("local"),i=!1,a=d(r.getLanguage(function(n){var r=d(n);r?i||t(r):e()}));a?(i=!0,t(a)):e()}catch(t){e(t)}}var g=/.+[\?\&]{1}language=([\d\w]+)[\?\&]?.*/i;function y(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},e=g.exec(weex.config.bundleUrl||""),n=d(e&&e[1]);n?t(n):v(t,function(){h(t,function(){t("en")})})}var m={doodle:"WEEX_PLAYGROUND_APP_DOODLE",guide:"WEEX_PLAYGROUND_APP_GUIDE",examples:"WEEX_PLAYGROUND_APP_EXAMPLES",news:"WEEX_PLAYGROUND_APP_NEWS",about:"WEEX_PLAYGROUND_APP_ABOUT"};function x(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){};try{a.fetch({url:"http://dotwe.org/query/weex-playground-app",method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded"},type:"json",body:"name="+t},function(t){t.ok&&t.data&&t.data.success?e(t.data):n(t)})}catch(t){n(t)}}function b(t,e){var n=m[t];n&&e&&"object"===(void 0===e?"undefined":(0,o.default)(e))&&(e.timestamp=Date.now(),u.setItem(n,(0,r.default)(e)))}function _(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=m[t];if(!r)return n();try{u.getItem(r,function(r){if("success"===r.result){var o=JSON.parse(r.data);if(o&&Array.isArray(o[t]))return e(o[t])}n(r)})}catch(t){n(t)}}e.fetchExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["examples"].concat(e))},e.saveExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["examples"].concat(e))},e.readExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return _.apply(void 0,["examples"].concat(e))},e.fetchGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["guide"].concat(e))},e.saveGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["guide"].concat(e))},e.readGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return _.apply(void 0,["guide"].concat(e))},e.fetchAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["about"].concat(e))},e.saveAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["about"].concat(e))},e.readAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return _.apply(void 0,["about"].concat(e))},e.fetchDoodle=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["doodle"].concat(e))},e.fetchNews=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["news"].concat(e))}},function(t,e,n){"use strict";e.__esModule=!0;var r=a(n(44)),o=a(n(63)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(t){return typeof t}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":typeof t};function a(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof o.default&&"symbol"===i(r.default)?function(t){return void 0===t?"undefined":i(t)}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":void 0===t?"undefined":i(t)}},function(t,e,n){"use strict";var r=n(15),o=n(29),i=n(32),a=n(2),u=n(1),c=n(17),s=n(50),f=n(22),l=n(57),p=n(6)("iterator"),d=!([].keys&&"next"in[].keys()),v=function(){return this};t.exports=function(t,e,n,h,g,y,m){s(n,e,h);var x,b,_,w=function(t){if(!d&&t in j)return j[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",O="values"==g,E=!1,j=t.prototype,A=j[p]||j["@@iterator"]||g&&j[g],L=!d&&A||w(g),C=g?O?w("entries"):L:void 0,P="Array"==e?j.entries||A:A;if(P&&(_=l(P.call(new t)))!==Object.prototype&&_.next&&(f(_,S,!0),r||u(_,p)||a(_,p,v)),O&&A&&"values"!==A.name&&(E=!0,L=function(){return A.call(this)}),r&&!m||!d&&!E&&j[p]||a(j,p,L),c[e]=L,c[S]=v,g)if(x={values:O?L:w("values"),keys:y?L:w("keys"),entries:C},m)for(b in x)b in j||i(j,b,x[b]);else o(o.P+o.F*(d||E),e,x);return x}},function(t,e,n){var r=n(0),o=n(8),i=n(48),a=n(2),u="prototype",c=function(t,e,n){var s,f,l,p=t&c.F,d=t&c.G,v=t&c.S,h=t&c.P,g=t&c.B,y=t&c.W,m=d?o:o[e]||(o[e]={}),x=m[u],b=d?r:v?r[e]:(r[e]||{})[u];d&&(n=e);for(s in n)(f=!p&&b&&void 0!==b[s])&&s in m||(l=f?b[s]:n[s],m[s]=d&&"function"!=typeof b[s]?n[s]:g&&f?i(l,r):y&&b[s]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[u]=t[u],e}(l):h&&"function"==typeof l?i(Function.call,l):l,h&&((m.virtual||(m.virtual={}))[s]=l,t&c.R&&x&&!x[s]&&a(x,s,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){t.exports=!n(4)&&!n(10)(function(){return 7!=Object.defineProperty(n(31)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(7),o=n(0).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,e,n){t.exports=n(2)},function(t,e,n){var r=n(9),o=n(51),i=n(21),a=n(19)("IE_PROTO"),u=function(){},c=function(){var t,e=n(31)("iframe"),r=i.length;for(e.style.display="none",n(56).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(u.prototype=r(t),n=new u,u.prototype=null,n[a]=t):n=c(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(1),o=n(5),i=n(53)(!1),a=n(19)("IE_PROTO");t.exports=function(t,e){var n,u=o(t),c=0,s=[];for(n in u)n!=a&&r(u,n)&&s.push(n);for(;e.length>c;)r(u,n=e[c++])&&(~i(s,n)||s.push(n));return s}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(34),o=n(21).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){"use strict";var r=i(n(39)),o=i(n(79));function i(t){return t&&t.__esModule?t:{default:t}}Vue.mixin(o.default),r.default.el="#root",new Vue(r.default)},function(t,e,n){var r,o,i=[];i.push(n(40)),r=n(41);var a=n(78);if(o=r=r||{},"object"!=typeof r.default&&"function"!=typeof r.default||(Object.keys(r).some(function(t){return"default"!==t&&"__esModule"!==t})&&console.error("named exports are not supported in *.vue files."),o=r=r.default),"function"==typeof o&&(o=o.options),o.__file="/Users/Hanks/Codes/work/weex-vue-examples/src/pages/About.vue",o.render=a.render,o.staticRenderFns=a.staticRenderFns,o._scopeId="data-v-6a7331ce",o.style=o.style||{},i.forEach(function(t){for(var e in t)o.style[e]=t[e]}),"object"==typeof weex&&weex&&weex.document)try{weex.document.registerStyleSheets(o._scopeId,i)}catch(t){}t.exports=r},function(t,e){t.exports={list:{backgroundColor:"#F5F5F5"},item:{paddingTop:"30",paddingBottom:"30",paddingLeft:"60",paddingRight:"40",borderBottomWidth:"1",borderBottomStyle:"solid",borderBottomColor:"#E6E6E6",backgroundColor:"#FFFFFF",flexDirection:"row",justifyContent:"space-between",alignItems:"center"},"item-1":{borderTopWidth:"1",borderTopStyle:"solid",borderTopColor:"#E6E6E6"},"item-title":{fontSize:"42",color:"#606060"},"item-value":{fontSize:"36",color:"#999999"},"arrow-icon":{width:"22",height:"36"},copyright:{marginTop:"50",paddingBottom:"20"},"copyright-text":{fontSize:"22",color:"#A0A0A0",textAlign:"center"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(26)),i=n(74),a=(r=i)&&r.__esModule?r:{default:r};var u=weex.requireModule("picker"),c=new BroadcastChannel("language"),s={en:"Follow System",zh:"跟随系统"};e.default={components:{AppInfoCard:a.default},data:function(){return{language:"en",followSystem:!0,navigationBarOptions:{title:{zh:"关于 Weex",en:"About Weex"}},tips:{LANGUAGE:{en:"Language",zh:"语言"}},items:[{title:{en:"Weex Official Website",zh:"Weex 官方网站"},link:{en:"http://weex-project.io/",zh:"http://weex-project.io/cn/"}},{title:{en:"Apache Software Foundation",zh:"Apache 软件基金会"},link:"http://www.apache.org/"},{title:{en:"Who is using Weex",zh:"谁在使用 Weex"},link:{en:"http://weex-project.io/who-is-using-weex.html",zh:"http://weex-project.io/cn/who-is-using-weex.html"}},{title:{en:"Contribution",zh:"参与贡献"},link:{en:"http://weex-project.io/guide/contributing.html",zh:"http://weex-project.io/cn/guide/contributing.html"}},{title:{en:"Release Note",zh:"版本变更"},link:{en:"http://weex-project.io/releasenote.html",zh:"http://weex-project.io/cn/releasenote.html"}},{title:{en:"FAQ",zh:"常见问题"},link:{en:"http://weex-project.io/faq.html",zh:"http://weex-project.io/cn/faq.html"}}]}},watch:{language:function(){this.followSystem||o.setLanguage(this.language),c.postMessage({language:this.language})}},computed:{languageName:function(){return this.followSystem?this.i18n(s):this.i18n({en:"English",zh:"简体中文"})}},created:function(){var t=this;o.readAbout(function(e){t.items=e}),o.getStorageLanguage(function(e){return t.followSystem=!1},function(){return t.followSystem=!0})},methods:{chooseLanguage:function(){var t=this,e=["","en","zh"],n=this.followSystem?0:e.indexOf(this.language);u.pick({index:n,items:[this.i18n(s),"English","中文"]},function(n){var r=n.result,i=n.data;if("success"===r){var a=e[i];a?(t.followSystem=!1,t.language=a,t.$forceUpdate()):(t.followSystem=!0,o.clearStorageLanguage(),o.getSystemLanguage(function(e){t.language=e,t.$forceUpdate()},function(e){t.language="en"}))}})}}}},function(t,e,n){t.exports={default:n(43),__esModule:!0}},function(t,e,n){var r=n(8),o=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function(t){return o.stringify.apply(o,arguments)}},function(t,e,n){t.exports={default:n(45),__esModule:!0}},function(t,e,n){n(46),n(59),t.exports=n(23).f("iterator")},function(t,e,n){"use strict";var r=n(47)(!0);n(28)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(13),o=n(14);t.exports=function(t){return function(e,n){var i,a,u=String(o(e)),c=r(n),s=u.length;return c<0||c>=s?t?"":void 0:(i=u.charCodeAt(c))<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?t?u.charAt(c):i:t?u.slice(c,c+2):a-56320+(i-55296<<10)+65536}}},function(t,e,n){var r=n(49);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){"use strict";var r=n(33),o=n(11),i=n(22),a={};n(2)(a,n(6)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},function(t,e,n){var r=n(3),o=n(9),i=n(18);t.exports=n(4)?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),u=a.length,c=0;u>c;)r.f(t,n=a[c++],e[n]);return t}},function(t,e,n){var r=n(35);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e,n){var r=n(5),o=n(54),i=n(55);t.exports=function(t){return function(e,n,a){var u,c=r(e),s=o(c.length),f=i(a,s);if(t&&n!=n){for(;s>f;)if((u=c[f++])!=u)return!0}else for(;s>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}}},function(t,e,n){var r=n(13),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(13),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},function(t,e,n){var r=n(0).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(1),o=n(58),i=n(19)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,n){var r=n(14);t.exports=function(t){return Object(r(t))}},function(t,e,n){n(60);for(var r=n(0),o=n(2),i=n(17),a=n(6)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c<u.length;c++){var s=u[c],f=r[s],l=f&&f.prototype;l&&!l[a]&&o(l,a,s),i[s]=i.Array}},function(t,e,n){"use strict";var r=n(61),o=n(62),i=n(17),a=n(5);t.exports=n(28)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){t.exports={default:n(64),__esModule:!0}},function(t,e,n){n(65),n(71),n(72),n(73),t.exports=n(8).Symbol},function(t,e,n){"use strict";var r=n(0),o=n(1),i=n(4),a=n(29),u=n(32),c=n(66).KEY,s=n(10),f=n(20),l=n(22),p=n(12),d=n(6),v=n(23),h=n(24),g=n(67),y=n(68),m=n(9),x=n(7),b=n(5),_=n(16),w=n(11),S=n(33),O=n(69),E=n(70),j=n(3),A=n(18),L=E.f,C=j.f,P=O.f,M=r.Symbol,T=r.JSON,k=T&&T.stringify,F="prototype",D=d("_hidden"),N=d("toPrimitive"),R={}.propertyIsEnumerable,W=f("symbol-registry"),U=f("symbols"),I=f("op-symbols"),G=Object[F],z="function"==typeof M,X=r.QObject,B=!X||!X[F]||!X[F].findChild,V=i&&s(function(){return 7!=S(C({},"a",{get:function(){return C(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=L(G,e);r&&delete G[e],C(t,e,n),r&&t!==G&&C(G,e,r)}:C,q=function(t){var e=U[t]=S(M[F]);return e._k=t,e},J=z&&"symbol"==typeof M.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof M},Y=function(t,e,n){return t===G&&Y(I,e,n),m(t),e=_(e,!0),m(n),o(U,e)?(n.enumerable?(o(t,D)&&t[D][e]&&(t[D][e]=!1),n=S(n,{enumerable:w(0,!1)})):(o(t,D)||C(t,D,w(1,{})),t[D][e]=!0),V(t,e,n)):C(t,e,n)},H=function(t,e){m(t);for(var n,r=g(e=b(e)),o=0,i=r.length;i>o;)Y(t,n=r[o++],e[n]);return t},K=function(t){var e=R.call(this,t=_(t,!0));return!(this===G&&o(U,t)&&!o(I,t))&&(!(e||!o(this,t)||!o(U,t)||o(this,D)&&this[D][t])||e)},$=function(t,e){if(t=b(t),e=_(e,!0),t!==G||!o(U,e)||o(I,e)){var n=L(t,e);return!n||!o(U,e)||o(t,D)&&t[D][e]||(n.enumerable=!0),n}},Q=function(t){for(var e,n=P(b(t)),r=[],i=0;n.length>i;)o(U,e=n[i++])||e==D||e==c||r.push(e);return r},Z=function(t){for(var e,n=t===G,r=P(n?I:b(t)),i=[],a=0;r.length>a;)!o(U,e=r[a++])||n&&!o(G,e)||i.push(U[e]);return i};z||(u((M=function(){if(this instanceof M)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===G&&e.call(I,n),o(this,D)&&o(this[D],t)&&(this[D][t]=!1),V(this,t,w(1,n))};return i&&B&&V(G,t,{configurable:!0,set:e}),q(t)})[F],"toString",function(){return this._k}),E.f=$,j.f=Y,n(37).f=O.f=Q,n(25).f=K,n(36).f=Z,i&&!n(15)&&u(G,"propertyIsEnumerable",K,!0),v.f=function(t){return q(d(t))}),a(a.G+a.W+a.F*!z,{Symbol:M});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)d(tt[et++]);for(var nt=A(d.store),rt=0;nt.length>rt;)h(nt[rt++]);a(a.S+a.F*!z,"Symbol",{for:function(t){return o(W,t+="")?W[t]:W[t]=M(t)},keyFor:function(t){if(!J(t))throw TypeError(t+" is not a symbol!");for(var e in W)if(W[e]===t)return e},useSetter:function(){B=!0},useSimple:function(){B=!1}}),a(a.S+a.F*!z,"Object",{create:function(t,e){return void 0===e?S(t):H(S(t),e)},defineProperty:Y,defineProperties:H,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:Z}),T&&a(a.S+a.F*(!z||s(function(){var t=M();return"[null]"!=k([t])||"{}"!=k({a:t})||"{}"!=k(Object(t))})),"JSON",{stringify:function(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(x(e)||void 0!==t)&&!J(t))return y(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!J(e))return e}),r[1]=e,k.apply(T,r)}}),M[F][N]||n(2)(M[F],N,M[F].valueOf),l(M,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},function(t,e,n){var r=n(12)("meta"),o=n(7),i=n(1),a=n(3).f,u=0,c=Object.isExtensible||function(){return!0},s=!n(10)(function(){return c(Object.preventExtensions({}))}),f=function(t){a(t,r,{value:{i:"O"+ ++u,w:{}}})},l=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!c(t))return"F";if(!e)return"E";f(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!c(t))return!0;if(!e)return!1;f(t)}return t[r].w},onFreeze:function(t){return s&&l.NEED&&c(t)&&!i(t,r)&&f(t),t}}},function(t,e,n){var r=n(18),o=n(36),i=n(25);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,u=n(t),c=i.f,s=0;u.length>s;)c.call(t,a=u[s++])&&e.push(a);return e}},function(t,e,n){var r=n(35);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(5),o=n(37).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(r(t))}},function(t,e,n){var r=n(25),o=n(11),i=n(5),a=n(16),u=n(1),c=n(30),s=Object.getOwnPropertyDescriptor;e.f=n(4)?s:function(t,e){if(t=i(t),e=a(e,!0),c)try{return s(t,e)}catch(t){}if(u(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e){},function(t,e,n){n(24)("asyncIterator")},function(t,e,n){n(24)("observable")},function(t,e,n){var r,o,i=[];i.push(n(75)),r=n(76);var a=n(77);if(o=r=r||{},"object"!=typeof r.default&&"function"!=typeof r.default||(Object.keys(r).some(function(t){return"default"!==t&&"__esModule"!==t})&&console.error("named exports are not supported in *.vue files."),o=r=r.default),"function"==typeof o&&(o=o.options),o.__file="/Users/Hanks/Codes/work/weex-vue-examples/src/components/AppInfoCard.vue",o.render=a.render,o.staticRenderFns=a.staticRenderFns,o._scopeId="data-v-6e3be69f",o.style=o.style||{},i.forEach(function(t){for(var e in t)o.style[e]=t[e]}),"object"==typeof weex&&weex&&weex.document)try{weex.document.registerStyleSheets(o._scopeId,i)}catch(t){}t.exports=r},function(t,e){t.exports={card:{width:"650",justifyContent:"center",borderWidth:"1",borderColor:"#DDDDDD",borderRadius:"20",paddingTop:"50",paddingRight:"50",paddingBottom:"50",paddingLeft:"50",marginTop:"50",marginRight:"50",marginBottom:"50",marginLeft:"50",backgroundColor:"#FFFFFF"},title:{fontSize:"34",textAlign:"center",color:"#808080",marginBottom:"20"},version:{fontSize:"80",textAlign:"center",marginBottom:"30",color:"#323232"},group:{marginTop:"10",flexDirection:"row"},label:{width:"260",fontSize:"32",textAlign:"right",color:"#888888"},value:{width:"230",paddingLeft:"50",fontSize:"32",color:"#414141"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=n(27),i=(r=o)&&r.__esModule?r:{default:r};var a="- invalid -";e.default={data:function(){return{version:a,jsfmVersion:a,platform:a,osVersion:a,deviceModel:a}},created:function(){try{this.jsfmVersion=getJSFMVersion()}catch(t){this.jsfmVersion="≤ 0.15.6"}"object"===("undefined"==typeof WXEnvironment?"undefined":(0,i.default)(WXEnvironment))&&(this.version=WXEnvironment.weexVersion||"- - -",this.platform=WXEnvironment.platform||"- - -",this.osVersion=WXEnvironment.osVersion||"- - -",this.deviceModel=WXEnvironment.deviceModel||"- - -")}}},function(t,e){t.exports={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:["card"]},[e("div",{staticClass:["info"]},[e("text",{staticClass:["title"]},[this._v("Weex SDK Version")]),e("text",{staticClass:["version"]},[this._v(this._s(this.version))]),e("div",{staticClass:["group"]},[e("text",{staticClass:["label"]},[this._v("JS Framework")]),e("text",{staticClass:["value"]},[this._v(this._s(this.jsfmVersion))])]),e("div",{staticClass:["group"]},[e("text",{staticClass:["label"]},[this._v("platform")]),e("text",{staticClass:["value"]},[this._v(this._s(this.platform))])]),e("div",{staticClass:["group"]},[e("text",{staticClass:["label"]},[this._v("osVersion")]),e("text",{staticClass:["value"]},[this._v(this._s(this.osVersion))])]),e("div",{staticClass:["group"]},[e("text",{staticClass:["label"]},[this._v("deviceModel")]),e("text",{staticClass:["value"]},[this._v(this._s(this.deviceModel))])])])])},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("list",{staticClass:["list"]},[n("cell",{appendAsTree:!0,attrs:{append:"tree"}},[n("app-info-card")],1),t._l(t.items,function(e,r){return n("cell",{key:r,class:["item-cell","item-cell-"+(r+1)],appendAsTree:!0,attrs:{append:"tree"}},[e.link?n("div",{class:["item","item-"+(r+1)],on:{click:function(n){t.jumpTo(e.link,e.title)}}},[n("text",{staticClass:["item-title"]},[t._v(t._s(t.i18n(e.title)))]),n("image",{staticClass:["arrow-icon"],attrs:{src:"https://gw.alicdn.com/tfs/TB1iL2fkLDH8KJjy1XcXXcpdXXa-32-49.png"}})]):t._e()])}),n("cell",{staticClass:["item-cell"],appendAsTree:!0,attrs:{append:"tree"}},[n("div",{staticClass:["item"],on:{click:t.chooseLanguage}},[n("text",{staticClass:["item-title"]},[t._v(t._s(t.i18n(t.tips.LANGUAGE)))]),n("text",{staticClass:["item-value"]},[t._v(t._s(t.languageName))])])]),t._m(0)],2)},staticRenderFns:[function(){var t=this.$createElement,e=this._self._c||t;return e("cell",{appendAsTree:!0,attrs:{append:"tree"}},[e("div",{staticClass:["copyright"]},[e("text",{staticClass:["copyright-text"]},[this._v("Copyright(c) 2017 The Apache Software Foundation.")]),e("text",{staticClass:["copyright-text"]},[this._v("Licensed under the Apache License, Version 2.0")])])])}]},t.exports.render._withStripped=!0},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(26));var o=weex.requireModule("storage");e.default={filters:{i18n:r.i18n,url:r.createURL,link:r.createLink},methods:{createLink:r.createLink,createURL:r.createURL,i18n:r.i18n,getLanguage:r.getLanguage,fetchData:r.fetchData,saveData:r.saveData,readData:r.readData,jumpTo:r.jumpTo},created:function(){var t=this;r.getLanguage(function(e){t.language=e,r.setTitleBar(t.navigationBarOptions,e)}),new BroadcastChannel("language").onmessage=function(e){e.data&&e.data.language&&(t.language=e.data.language)}},beforeDestroy:function(){o.removeItem("CURRENT_DOCUMENT_URL"),o.removeItem("CURRENT_SOURCE_HASH")}}}]);
\ No newline at end of file
diff --git a/src/main/assets/examples.weex.js b/src/main/assets/examples.weex.js
new file mode 100644
index 0000000..2fcb1a1
--- /dev/null
+++ b/src/main/assets/examples.weex.js
@@ -0,0 +1,4 @@
+// { "framework": "Vue" }
+"use weex:vue";
+
+!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=37)}([function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(3),o=n(11);t.exports=n(4)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(9),o=n(29),i=n(17),a=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){t.exports=!n(10)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(52),o=n(15);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(21)("wks"),o=n(12),i=n(0).Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){var n=t.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(7);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fetchNews=e.fetchDoodle=e.readAbout=e.saveAbout=e.fetchAbout=e.readGuide=e.saveGuide=e.fetchGuide=e.readExamples=e.saveExamples=e.fetchExamples=void 0;var r=i(n(41)),o=i(n(43));function i(t){return t&&t.__esModule?t:{default:t}}e.createLink=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[];for(var r in e)"string"==typeof e[r]&&n.push(f(r)+"="+f(e[r]));if("Web"===WXEnvironment.platform)return n.unshift("page="+t+".web.js"),"/?"+n.join("&");return""+function(){var t=weex.config.bundleUrl,e=t.indexOf("your_current_IP")>=0||t.indexOf("file://assets/")>=0,n=t.indexOf("file:///")>=0&&t.indexOf("WeexDemo.app")>0;if(e)return"file://assets/";if(n)return t.substring(0,t.lastIndexOf("/")+1);return""}()+t+".weex.js"+(n.length?"?"+n.join("&"):"")},e.createURL=s,e.i18n=l,e.parseLanguage=d,e.setLanguage=function(t){var e=d(t);e&&u.setItem("WEEX_PLAYGROUND_LANGUAGE",e)},e.clearStorageLanguage=function(){u.removeItem("WEEX_PLAYGROUND_LANGUAGE")},e.getStorageLanguage=v,e.getSystemLanguage=g,e.getLanguage=h,e.jumpTo=function(t,e){h(function(n){u.setItem("CURRENT_DOCUMENT_URL",l(t,n)),c.push({url:s("bf0305c14b511b24a4e616f53926432b",{language:n,title:l(e,n)})})})},e.viewSource=function(t){h(function(e){c.push({url:s("f6ce29faf686eabc38b410bf4828fa5a",{hash:t,language:e})})})},e.setTitleBar=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";if("[object Object]"!==Object.prototype.toString.apply(t))return;var n=weex.requireModule("titleBar");if(t.color||t.backgroundColor)try{n.setStyle({foregroundColor:t.color||"#FFFFFF",backgroundColor:t.backgroundColor||"#00B4FF"})}catch(t){}var r=l(t.title,e);if(r)try{n.setTitle(r)}catch(t){}},e.fetchData=b,e.saveData=x,e.readData=_;var a=weex.requireModule("stream"),u=weex.requireModule("storage"),c=weex.requireModule("navigator"),f="function"==typeof encodeURIComponent?encodeURIComponent:"function"==typeof encodeURI?encodeURI:function(t){return t};function s(t,e){if("Web"===WXEnvironment.platform)return"http://dotwe.org/raw/htmlVue/"+t;var n="http://dotwe.org/raw/dist/"+t+".bundle.wx",r=function(t){if(!t||"object"!==(void 0===t?"undefined":(0,o.default)(t)))return"";var e=[];for(var n in t)"string"==typeof t[n]&&e.push(f(n)+"="+f(t[n]));return e.join("&")}(e);return"TB"===WXEnvironment.appName?n+"?_wx_tpl="+n+"&"+r:"WXSample"===WXEnvironment.appName?n+"?"+r:n+"?wx_weex=true&"+r}function l(t,e){return"string"==typeof t?t:"[object Object]"===Object.prototype.toString.call(t)?t[this&&this.language||e||"en"]:void 0}var p=/(en|zh)\_?\w*/i;function d(t){var e=p.exec(t+"");return e&&e[1]?e[1]:""}function v(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if("function"!==!(void 0===t||(0,o.default)(t)))try{u.getItem("WEEX_PLAYGROUND_LANGUAGE",function(n){if("success"===n.result){var r=d(n.data);r?t(r):e()}else e(n)})}catch(t){e(t)}}function g(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if("function"!==!(void 0===t||(0,o.default)(t)))if("web"===WXEnvironment.platform.toLowerCase()){var n=d(window.navigator.language);n?t(n):e()}else try{var r=weex.requireModule("locale")||weex.requireModule("local"),i=!1,a=d(r.getLanguage(function(n){var r=d(n);r?i||t(r):e()}));a?(i=!0,t(a)):e()}catch(t){e(t)}}var y=/.+[\?\&]{1}language=([\d\w]+)[\?\&]?.*/i;function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},e=y.exec(weex.config.bundleUrl||""),n=d(e&&e[1]);n?t(n):v(t,function(){g(t,function(){t("en")})})}var m={doodle:"WEEX_PLAYGROUND_APP_DOODLE",guide:"WEEX_PLAYGROUND_APP_GUIDE",examples:"WEEX_PLAYGROUND_APP_EXAMPLES",news:"WEEX_PLAYGROUND_APP_NEWS",about:"WEEX_PLAYGROUND_APP_ABOUT"};function b(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){};try{a.fetch({url:"http://dotwe.org/query/weex-playground-app",method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded"},type:"json",body:"name="+t},function(t){t.ok&&t.data&&t.data.success?e(t.data):n(t)})}catch(t){n(t)}}function x(t,e){var n=m[t];n&&e&&"object"===(void 0===e?"undefined":(0,o.default)(e))&&(e.timestamp=Date.now(),u.setItem(n,(0,r.default)(e)))}function _(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=m[t];if(!r)return n();try{u.getItem(r,function(r){if("success"===r.result){var o=JSON.parse(r.data);if(o&&Array.isArray(o[t]))return e(o[t])}n(r)})}catch(t){n(t)}}e.fetchExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["examples"].concat(e))},e.saveExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["examples"].concat(e))},e.readExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return _.apply(void 0,["examples"].concat(e))},e.fetchGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["guide"].concat(e))},e.saveGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["guide"].concat(e))},e.readGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return _.apply(void 0,["guide"].concat(e))},e.fetchAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["about"].concat(e))},e.saveAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["about"].concat(e))},e.readAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return _.apply(void 0,["about"].concat(e))},e.fetchDoodle=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["doodle"].concat(e))},e.fetchNews=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["news"].concat(e))}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on  "+t);return t}},function(t,e){t.exports=!0},function(t,e,n){var r=n(7);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports={}},function(t,e,n){var r=n(33),o=n(22);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e,n){var r=n(21)("keys"),o=n(12);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e,n){var r=n(0),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(3).f,o=n(1),i=n(6)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){e.f=n(6)},function(t,e,n){var r=n(0),o=n(8),i=n(16),a=n(24),u=n(3).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||u(e,t,{value:a.f(t)})}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){"use strict";var r=n(16),o=n(28),i=n(31),a=n(2),u=n(1),c=n(18),f=n(50),s=n(23),l=n(57),p=n(6)("iterator"),d=!([].keys&&"next"in[].keys()),v=function(){return this};t.exports=function(t,e,n,g,y,h,m){f(n,e,g);var b,x,_,w=function(t){if(!d&&t in A)return A[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",O="values"==y,E=!1,A=t.prototype,C=A[p]||A["@@iterator"]||y&&A[y],j=!d&&C||w(y),L=y?O?w("entries"):j:void 0,T="Array"==e?A.entries||C:C;if(T&&(_=l(T.call(new t)))!==Object.prototype&&_.next&&(s(_,S,!0),r||u(_,p)||a(_,p,v)),O&&C&&"values"!==C.name&&(E=!0,j=function(){return C.call(this)}),r&&!m||!d&&!E&&A[p]||a(A,p,j),c[e]=j,c[S]=v,y)if(b={values:O?j:w("values"),keys:h?j:w("keys"),entries:L},m)for(x in b)x in A||i(A,x,b[x]);else o(o.P+o.F*(d||E),e,b);return b}},function(t,e,n){var r=n(0),o=n(8),i=n(48),a=n(2),u="prototype",c=function(t,e,n){var f,s,l,p=t&c.F,d=t&c.G,v=t&c.S,g=t&c.P,y=t&c.B,h=t&c.W,m=d?o:o[e]||(o[e]={}),b=m[u],x=d?r:v?r[e]:(r[e]||{})[u];d&&(n=e);for(f in n)(s=!p&&x&&void 0!==x[f])&&f in m||(l=s?x[f]:n[f],m[f]=d&&"function"!=typeof x[f]?n[f]:y&&s?i(l,r):h&&x[f]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[u]=t[u],e}(l):g&&"function"==typeof l?i(Function.call,l):l,g&&((m.virtual||(m.virtual={}))[f]=l,t&c.R&&b&&!b[f]&&a(b,f,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){t.exports=!n(4)&&!n(10)(function(){return 7!=Object.defineProperty(n(30)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(7),o=n(0).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,e,n){t.exports=n(2)},function(t,e,n){var r=n(9),o=n(51),i=n(22),a=n(20)("IE_PROTO"),u=function(){},c=function(){var t,e=n(30)("iframe"),r=i.length;for(e.style.display="none",n(56).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(u.prototype=r(t),n=new u,u.prototype=null,n[a]=t):n=c(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(1),o=n(5),i=n(53)(!1),a=n(20)("IE_PROTO");t.exports=function(t,e){var n,u=o(t),c=0,f=[];for(n in u)n!=a&&r(u,n)&&f.push(n);for(;e.length>c;)r(u,n=e[c++])&&(~i(f,n)||f.push(n));return f}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(33),o=n(22).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){"use strict";var r=i(n(38)),o=i(n(79));function i(t){return t&&t.__esModule?t:{default:t}}Vue.mixin(o.default),r.default.el="#root",new Vue(r.default)},function(t,e,n){var r,o,i=[];i.push(n(39)),r=n(40);var a=n(78);if(o=r=r||{},"object"!=typeof r.default&&"function"!=typeof r.default||(Object.keys(r).some(function(t){return"default"!==t&&"__esModule"!==t})&&console.error("named exports are not supported in *.vue files."),o=r=r.default),"function"==typeof o&&(o=o.options),o.__file="/Users/Hanks/Codes/work/weex-vue-examples/src/pages/Examples.vue",o.render=a.render,o.staticRenderFns=a.staticRenderFns,o._scopeId="data-v-25a5be6d",o.style=o.style||{},i.forEach(function(t){for(var e in t)o.style[e]=t[e]}),"object"==typeof weex&&weex&&weex.document)try{weex.document.registerStyleSheets(o._scopeId,i)}catch(t){}t.exports=r},function(t,e){t.exports={"example-list":{width:"750",position:"absolute",top:0,bottom:"100",backgroundColor:"#F5F5F5"},"group-info":{backgroundColor:"#FFFFFF"},loading:{flex:1,justifyContent:"center",alignItems:"center"},"loading-text":{fontSize:"60",color:"#BBBBBB"},"group-title":{width:"750",paddingTop:"20",paddingBottom:"35",fontSize:"40",textAlign:"center",color:"#00B4FF",backgroundImage:"linear-gradient(to bottom, #E3F5FB, #F9FEFF)"},"group-desc":{fontSize:"28",color:"#999999",marginTop:"10",marginLeft:"30",marginRight:"40"},"doc-link":{fontSize:"26",color:"rgba(0,189,255,0.6)",textAlign:"right",marginTop:"10",marginRight:"60",marginBottom:"20"},section:{paddingBottom:"30"},tabbar:{width:"750",position:"fixed",bottom:0,height:"100",flexDirection:"row",justifyContent:"space-around",alignItems:"flex-end",backgroundColor:"#E6E6E6"},"tab-cell":{width:"186",height:"100",borderTopWidth:"2",borderTopStyle:"solid",borderTopColor:"#DDDDDD",justifyContent:"center",backgroundColor:"#FCFCFC",transitionProperty:"backgroundColor",transitionDuration:200},"@TRANSITION":{"tab-cell":{property:"backgroundColor",duration:200},"tab-name":{property:"color,fontSize",duration:100}},"active-tab-cell":{borderTopColor:"rgba(0,189,255,0.8)",backgroundColor:"#BDECFF"},"tab-name":{textAlign:"center",color:"#666666",transitionProperty:"color,fontSize",transitionDuration:100},"tab-name-zh":{fontSize:"36"},"tab-name-en":{fontSize:"30"},"active-tab-name-zh":{color:"#00B4FF",fontSize:"42",fontWeight:"bold"},"active-tab-name-en":{color:"#00B4FF",fontSize:"30",fontWeight:"bold"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=n(13),i=n(74),a=(r=i)&&r.__esModule?r:{default:r};var u=[],c=!1;e.default={components:{ExampleScroller:a.default},data:function(){return{navigationBarOptions:{title:{zh:"使用 Weex 的例子",en:"Weex Examples"}},examples:u,showLoading:!1,language:"en",activeTab:"component",activeGroup:"div",tips:{VIEW_SOURCE:{en:"view source",zh:"查看源码"},READ_MORE:{en:"read more",zh:"查看更多"}}}},beforeCreate:function(){var t=this;(0,o.readExamples)(function(e){t.examples=e,"web"!==WXEnvironment.platform.toLowerCase()&&(c=!0)}),(0,o.fetchExamples)(function(e){(0,o.saveExamples)(e),c||(t.examples=e.examples)}),setTimeout(function(){t.showLoading=!0},400)},computed:{tabs:function(){return this.examples.map(function(t){return{type:t.type,name:t.name}})},currentTab:function(){var t=this;return this.examples.filter(function(e){return e.type===t.activeTab})[0]}},methods:{toggleTab:function(t){this.activeTab=t,this.activeGroup=this.currentTab.group[0].type}}}},function(t,e,n){t.exports={default:n(42),__esModule:!0}},function(t,e,n){var r=n(8),o=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function(t){return o.stringify.apply(o,arguments)}},function(t,e,n){"use strict";e.__esModule=!0;var r=a(n(44)),o=a(n(63)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(t){return typeof t}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":typeof t};function a(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof o.default&&"symbol"===i(r.default)?function(t){return void 0===t?"undefined":i(t)}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":void 0===t?"undefined":i(t)}},function(t,e,n){t.exports={default:n(45),__esModule:!0}},function(t,e,n){n(46),n(59),t.exports=n(24).f("iterator")},function(t,e,n){"use strict";var r=n(47)(!0);n(27)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(14),o=n(15);t.exports=function(t){return function(e,n){var i,a,u=String(o(e)),c=r(n),f=u.length;return c<0||c>=f?t?"":void 0:(i=u.charCodeAt(c))<55296||i>56319||c+1===f||(a=u.charCodeAt(c+1))<56320||a>57343?t?u.charAt(c):i:t?u.slice(c,c+2):a-56320+(i-55296<<10)+65536}}},function(t,e,n){var r=n(49);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){"use strict";var r=n(32),o=n(11),i=n(23),a={};n(2)(a,n(6)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},function(t,e,n){var r=n(3),o=n(9),i=n(19);t.exports=n(4)?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),u=a.length,c=0;u>c;)r.f(t,n=a[c++],e[n]);return t}},function(t,e,n){var r=n(34);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e,n){var r=n(5),o=n(54),i=n(55);t.exports=function(t){return function(e,n,a){var u,c=r(e),f=o(c.length),s=i(a,f);if(t&&n!=n){for(;f>s;)if((u=c[s++])!=u)return!0}else for(;f>s;s++)if((t||s in c)&&c[s]===n)return t||s||0;return!t&&-1}}},function(t,e,n){var r=n(14),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(14),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},function(t,e,n){var r=n(0).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(1),o=n(58),i=n(20)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,n){var r=n(15);t.exports=function(t){return Object(r(t))}},function(t,e,n){n(60);for(var r=n(0),o=n(2),i=n(18),a=n(6)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c<u.length;c++){var f=u[c],s=r[f],l=s&&s.prototype;l&&!l[a]&&o(l,a,f),i[f]=i.Array}},function(t,e,n){"use strict";var r=n(61),o=n(62),i=n(18),a=n(5);t.exports=n(27)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){t.exports={default:n(64),__esModule:!0}},function(t,e,n){n(65),n(71),n(72),n(73),t.exports=n(8).Symbol},function(t,e,n){"use strict";var r=n(0),o=n(1),i=n(4),a=n(28),u=n(31),c=n(66).KEY,f=n(10),s=n(21),l=n(23),p=n(12),d=n(6),v=n(24),g=n(25),y=n(67),h=n(68),m=n(9),b=n(7),x=n(5),_=n(17),w=n(11),S=n(32),O=n(69),E=n(70),A=n(3),C=n(19),j=E.f,L=A.f,T=O.f,P=r.Symbol,F=r.JSON,D=F&&F.stringify,k="prototype",R=d("_hidden"),M=d("toPrimitive"),I={}.propertyIsEnumerable,N=s("symbol-registry"),U=s("symbols"),W=s("op-symbols"),G=Object[k],B="function"==typeof P,z=r.QObject,X=!z||!z[k]||!z[k].findChild,V=i&&f(function(){return 7!=S(L({},"a",{get:function(){return L(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=j(G,e);r&&delete G[e],L(t,e,n),r&&t!==G&&L(G,e,r)}:L,q=function(t){var e=U[t]=S(P[k]);return e._k=t,e},Y=B&&"symbol"==typeof P.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof P},H=function(t,e,n){return t===G&&H(W,e,n),m(t),e=_(e,!0),m(n),o(U,e)?(n.enumerable?(o(t,R)&&t[R][e]&&(t[R][e]=!1),n=S(n,{enumerable:w(0,!1)})):(o(t,R)||L(t,R,w(1,{})),t[R][e]=!0),V(t,e,n)):L(t,e,n)},J=function(t,e){m(t);for(var n,r=y(e=x(e)),o=0,i=r.length;i>o;)H(t,n=r[o++],e[n]);return t},K=function(t){var e=I.call(this,t=_(t,!0));return!(this===G&&o(U,t)&&!o(W,t))&&(!(e||!o(this,t)||!o(U,t)||o(this,R)&&this[R][t])||e)},$=function(t,e){if(t=x(t),e=_(e,!0),t!==G||!o(U,e)||o(W,e)){var n=j(t,e);return!n||!o(U,e)||o(t,R)&&t[R][e]||(n.enumerable=!0),n}},Q=function(t){for(var e,n=T(x(t)),r=[],i=0;n.length>i;)o(U,e=n[i++])||e==R||e==c||r.push(e);return r},Z=function(t){for(var e,n=t===G,r=T(n?W:x(t)),i=[],a=0;r.length>a;)!o(U,e=r[a++])||n&&!o(G,e)||i.push(U[e]);return i};B||(u((P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===G&&e.call(W,n),o(this,R)&&o(this[R],t)&&(this[R][t]=!1),V(this,t,w(1,n))};return i&&X&&V(G,t,{configurable:!0,set:e}),q(t)})[k],"toString",function(){return this._k}),E.f=$,A.f=H,n(36).f=O.f=Q,n(26).f=K,n(35).f=Z,i&&!n(16)&&u(G,"propertyIsEnumerable",K,!0),v.f=function(t){return q(d(t))}),a(a.G+a.W+a.F*!B,{Symbol:P});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)d(tt[et++]);for(var nt=C(d.store),rt=0;nt.length>rt;)g(nt[rt++]);a(a.S+a.F*!B,"Symbol",{for:function(t){return o(N,t+="")?N[t]:N[t]=P(t)},keyFor:function(t){if(!Y(t))throw TypeError(t+" is not a symbol!");for(var e in N)if(N[e]===t)return e},useSetter:function(){X=!0},useSimple:function(){X=!1}}),a(a.S+a.F*!B,"Object",{create:function(t,e){return void 0===e?S(t):J(S(t),e)},defineProperty:H,defineProperties:J,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:Z}),F&&a(a.S+a.F*(!B||f(function(){var t=P();return"[null]"!=D([t])||"{}"!=D({a:t})||"{}"!=D(Object(t))})),"JSON",{stringify:function(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(b(e)||void 0!==t)&&!Y(t))return h(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!Y(e))return e}),r[1]=e,D.apply(F,r)}}),P[k][M]||n(2)(P[k],M,P[k].valueOf),l(P,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},function(t,e,n){var r=n(12)("meta"),o=n(7),i=n(1),a=n(3).f,u=0,c=Object.isExtensible||function(){return!0},f=!n(10)(function(){return c(Object.preventExtensions({}))}),s=function(t){a(t,r,{value:{i:"O"+ ++u,w:{}}})},l=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!c(t))return"F";if(!e)return"E";s(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!c(t))return!0;if(!e)return!1;s(t)}return t[r].w},onFreeze:function(t){return f&&l.NEED&&c(t)&&!i(t,r)&&s(t),t}}},function(t,e,n){var r=n(19),o=n(35),i=n(26);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,u=n(t),c=i.f,f=0;u.length>f;)c.call(t,a=u[f++])&&e.push(a);return e}},function(t,e,n){var r=n(34);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(5),o=n(36).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(r(t))}},function(t,e,n){var r=n(26),o=n(11),i=n(5),a=n(17),u=n(1),c=n(29),f=Object.getOwnPropertyDescriptor;e.f=n(4)?f:function(t,e){if(t=i(t),e=a(e,!0),c)try{return f(t,e)}catch(t){}if(u(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e){},function(t,e,n){n(25)("asyncIterator")},function(t,e,n){n(25)("observable")},function(t,e,n){var r,o,i=[];i.push(n(75)),r=n(76);var a=n(77);if(o=r=r||{},"object"!=typeof r.default&&"function"!=typeof r.default||(Object.keys(r).some(function(t){return"default"!==t&&"__esModule"!==t})&&console.error("named exports are not supported in *.vue files."),o=r=r.default),"function"==typeof o&&(o=o.options),o.__file="/Users/Hanks/Codes/work/weex-vue-examples/src/components/ExampleScroller.vue",o.render=a.render,o.staticRenderFns=a.staticRenderFns,o._scopeId="data-v-d9e80478",o.style=o.style||{},i.forEach(function(t){for(var e in t)o.style[e]=t[e]}),"object"==typeof weex&&weex&&weex.document)try{weex.document.registerStyleSheets(o._scopeId,i)}catch(t){}t.exports=r},function(t,e){t.exports={scroller:{flexDirection:"row",backgroundColor:"#FDFDFD",paddingTop:"20",paddingRight:"20",paddingBottom:"20",paddingLeft:"20",height:"600"},"example-box":{justifyContent:"space-between",alignItems:"center",paddingLeft:"6",paddingRight:"6",width:"310"},screenshot:{width:"270",height:"422",borderWidth:"1",borderColor:"#DDDDDD"},title:{height:"75",justifyContent:"center"},"title-text":{fontSize:"32",textAlign:"center",color:"#606060",paddingTop:"10",paddingBottom:"10"},"example-tips":{fontSize:"28",textAlign:"center",color:"#A5A5A5",paddingTop:"10",paddingBottom:"10"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(13);e.default={methods:{viewSource:r.viewSource},props:{language:{type:String,default:"en"},examples:{type:Array,required:!0}},data:function(){return{VIEW_SOURCE:{en:"view source",zh:"查看源码"}}}}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("scroller",{staticClass:["scroller"],attrs:{scrollDirection:"horizontal"}},t._l(t.examples,function(e,r){return n("div",{key:r,staticClass:["example-box"]},[n("div",{staticClass:["title"]},[n("text",{staticClass:["title-text"]},[t._v(t._s(t.i18n(e.title)))])]),n("div",{staticStyle:{alignItems:"center"}},[n("a",{attrs:{href:t._f("url")(t.i18n(e.hash))}},[n("image",{staticClass:["screenshot"],attrs:{src:t.i18n(e.screenshot)}})]),n("text",{staticClass:["example-tips"],on:{click:function(n){t.viewSource(t.i18n(e.hash))}}},[t._v(t._s(t.i18n(t.VIEW_SOURCE)))])])])}))},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:["wrapper"]},[t.examples&&t.examples.length?n("list",{staticClass:["example-list"]},[t._l(t.currentTab.group,function(e){return[e&&e.title||e.name?n("cell",{key:e.type,ref:e.type,refInFor:!0,staticClass:["group-info"],appendAsTree:!0,attrs:{append:"tree"}},[n("text",{staticClass:["group-title"]},[t._v(t._s(t.i18n(e.title||e.name)))]),e.desc?n("text",{staticClass:["group-desc"]},[t._v(t._s(t.i18n(e.desc)))]):t._e(),e.desc&&e.docLink?n("text",{staticClass:["doc-link"],on:{click:function(n){t.jumpTo(t.i18n(e.docLink))}}},[t._v(t._s(t.i18n(t.tips.READ_MORE))+" >>")]):t._e()]):t._e(),n("cell",{key:e.type+"-examples",staticClass:["section"],appendAsTree:!0,attrs:{append:"tree"}},[n("example-scroller",{attrs:{language:t.language,examples:e.examples}})],1)]})],2):t.showLoading?n("div",{staticClass:["loading"]},[n("text",{staticClass:["loading-text"]},[t._v("loading ...")])]):t._e(),t.tabs&&t.tabs.length?n("div",{staticClass:["tabbar"]},t._l(t.tabs,function(e){return n("div",{key:e.type,class:["tab-cell",e.type===t.activeTab?"active-tab-cell":""],on:{click:function(n){t.toggleTab(e.type)}}},[n("text",{class:["tab-name","tab-name-"+t.language,e.type===t.activeTab?"active-tab-name-"+t.language:""]},[t._v(t._s(t.i18n(e.name)))])])})):t._e()])},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(13));var o=weex.requireModule("storage");e.default={filters:{i18n:r.i18n,url:r.createURL,link:r.createLink},methods:{createLink:r.createLink,createURL:r.createURL,i18n:r.i18n,getLanguage:r.getLanguage,fetchData:r.fetchData,saveData:r.saveData,readData:r.readData,jumpTo:r.jumpTo},created:function(){var t=this;r.getLanguage(function(e){t.language=e,r.setTitleBar(t.navigationBarOptions,e)}),new BroadcastChannel("language").onmessage=function(e){e.data&&e.data.language&&(t.language=e.data.language)}},beforeDestroy:function(){o.removeItem("CURRENT_DOCUMENT_URL"),o.removeItem("CURRENT_SOURCE_HASH")}}}]);
\ No newline at end of file
diff --git a/src/main/assets/guide.weex.js b/src/main/assets/guide.weex.js
new file mode 100644
index 0000000..9133156
--- /dev/null
+++ b/src/main/assets/guide.weex.js
@@ -0,0 +1,4 @@
+// { "framework": "Vue" }
+"use weex:vue";
+
+!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:o})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=37)}([function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){var o=n(9),r=n(29),i=n(17),a=Object.defineProperty;t.f=n(2)?Object.defineProperty:function(e,t,n){if(o(e),t=i(t,!0),o(n),r)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){e.exports=!n(10)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var o=n(1),r=n(11);e.exports=n(2)?function(e,t,n){return o.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var o=n(52),r=n(14);e.exports=function(e){return o(r(e))}},function(e,t,n){var o=n(21)("wks"),r=n(12),i=n(0).Symbol,a="function"==typeof i;(e.exports=function(e){return o[e]||(o[e]=a&&i[e]||(a?i:r)("Symbol."+e))}).store=o},function(e,t){var n=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){var o=n(8);e.exports=function(e){if(!o(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=0,o=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},function(e,t){var n=Math.ceil,o=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?o:n)(e)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on  "+e);return e}},function(e,t){e.exports=!0},function(e,t,n){var o=n(0),r=n(7),i=n(48),a=n(4),s="prototype",c=function(e,t,n){var l,u,p,d=e&c.F,f=e&c.G,h=e&c.S,v=e&c.P,g=e&c.B,m=e&c.W,S=f?r:r[t]||(r[t]={}),y=S[s],z=f?o:h?o[t]:(o[t]||{})[s];f&&(n=t);for(l in n)(u=!d&&z&&void 0!==z[l])&&l in S||(p=u?z[l]:n[l],S[l]=f&&"function"!=typeof z[l]?n[l]:g&&u?i(p,o):m&&z[l]==p?function(e){var t=function(t,n,o){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,o)}return e.apply(this,arguments)};return t[s]=e[s],t}(p):v&&"function"==typeof p?i(Function.call,p):p,v&&((S.virtual||(S.virtual={}))[l]=p,e&c.R&&y&&!y[l]&&a(y,l,p)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){var o=n(8);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports={}},function(e,t,n){var o=n(33),r=n(22);e.exports=Object.keys||function(e){return o(e,r)}},function(e,t,n){var o=n(21)("keys"),r=n(12);e.exports=function(e){return o[e]||(o[e]=r(e))}},function(e,t,n){var o=n(0),r=o["__core-js_shared__"]||(o["__core-js_shared__"]={});e.exports=function(e){return r[e]||(r[e]={})}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var o=n(1).f,r=n(3),i=n(6)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,i)&&o(e,i,{configurable:!0,value:t})}},function(e,t,n){t.f=n(6)},function(e,t,n){var o=n(0),r=n(7),i=n(15),a=n(24),s=n(1).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=i?{}:o.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fetchNews=t.fetchDoodle=t.readAbout=t.saveAbout=t.fetchAbout=t.readGuide=t.saveGuide=t.fetchGuide=t.readExamples=t.saveExamples=t.fetchExamples=void 0;var o=i(n(41)),r=i(n(43));function i(e){return e&&e.__esModule?e:{default:e}}t.createLink=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[];for(var o in t)"string"==typeof t[o]&&n.push(l(o)+"="+l(t[o]));if("Web"===WXEnvironment.platform)return n.unshift("page="+e+".web.js"),"/?"+n.join("&");return""+function(){var e=weex.config.bundleUrl,t=e.indexOf("your_current_IP")>=0||e.indexOf("file://assets/")>=0,n=e.indexOf("file:///")>=0&&e.indexOf("WeexDemo.app")>0;if(t)return"file://assets/";if(n)return e.substring(0,e.lastIndexOf("/")+1);return""}()+e+".weex.js"+(n.length?"?"+n.join("&"):"")},t.createURL=u,t.i18n=p,t.parseLanguage=f,t.setLanguage=function(e){var t=f(e);t&&s.setItem("WEEX_PLAYGROUND_LANGUAGE",t)},t.clearStorageLanguage=function(){s.removeItem("WEEX_PLAYGROUND_LANGUAGE")},t.getStorageLanguage=h,t.getSystemLanguage=v,t.getLanguage=m,t.jumpTo=function(e,t){m(function(n){s.setItem("CURRENT_DOCUMENT_URL",p(e,n)),c.push({url:u("bf0305c14b511b24a4e616f53926432b",{language:n,title:p(t,n)})})})},t.viewSource=function(e){m(function(t){c.push({url:u("f6ce29faf686eabc38b410bf4828fa5a",{hash:e,language:t})})})},t.setTitleBar=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";if("[object Object]"!==Object.prototype.toString.apply(e))return;var n=weex.requireModule("titleBar");if(e.color||e.backgroundColor)try{n.setStyle({foregroundColor:e.color||"#FFFFFF",backgroundColor:e.backgroundColor||"#00B4FF"})}catch(e){}var o=p(e.title,t);if(o)try{n.setTitle(o)}catch(e){}},t.fetchData=y,t.saveData=z,t.readData=x;var a=weex.requireModule("stream"),s=weex.requireModule("storage"),c=weex.requireModule("navigator"),l="function"==typeof encodeURIComponent?encodeURIComponent:"function"==typeof encodeURI?encodeURI:function(e){return e};function u(e,t){if("Web"===WXEnvironment.platform)return"http://dotwe.org/raw/htmlVue/"+e;var n="http://dotwe.org/raw/dist/"+e+".bundle.wx",o=function(e){if(!e||"object"!==(void 0===e?"undefined":(0,r.default)(e)))return"";var t=[];for(var n in e)"string"==typeof e[n]&&t.push(l(n)+"="+l(e[n]));return t.join("&")}(t);return"TB"===WXEnvironment.appName?n+"?_wx_tpl="+n+"&"+o:"WXSample"===WXEnvironment.appName?n+"?"+o:n+"?wx_weex=true&"+o}function p(e,t){return"string"==typeof e?e:"[object Object]"===Object.prototype.toString.call(e)?e[this&&this.language||t||"en"]:void 0}var d=/(en|zh)\_?\w*/i;function f(e){var t=d.exec(e+"");return t&&t[1]?t[1]:""}function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if("function"!==!(void 0===e||(0,r.default)(e)))try{s.getItem("WEEX_PLAYGROUND_LANGUAGE",function(n){if("success"===n.result){var o=f(n.data);o?e(o):t()}else t(n)})}catch(e){t(e)}}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if("function"!==!(void 0===e||(0,r.default)(e)))if("web"===WXEnvironment.platform.toLowerCase()){var n=f(window.navigator.language);n?e(n):t()}else try{var o=weex.requireModule("locale")||weex.requireModule("local"),i=!1,a=f(o.getLanguage(function(n){var o=f(n);o?i||e(o):t()}));a?(i=!0,e(a)):t()}catch(e){t(e)}}var g=/.+[\?\&]{1}language=([\d\w]+)[\?\&]?.*/i;function m(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},t=g.exec(weex.config.bundleUrl||""),n=f(t&&t[1]);n?e(n):h(e,function(){v(e,function(){e("en")})})}var S={doodle:"WEEX_PLAYGROUND_APP_DOODLE",guide:"WEEX_PLAYGROUND_APP_GUIDE",examples:"WEEX_PLAYGROUND_APP_EXAMPLES",news:"WEEX_PLAYGROUND_APP_NEWS",about:"WEEX_PLAYGROUND_APP_ABOUT"};function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){};try{a.fetch({url:"http://dotwe.org/query/weex-playground-app",method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded"},type:"json",body:"name="+e},function(e){e.ok&&e.data&&e.data.success?t(e.data):n(e)})}catch(e){n(e)}}function z(e,t){var n=S[e];n&&t&&"object"===(void 0===t?"undefined":(0,r.default)(t))&&(t.timestamp=Date.now(),s.setItem(n,(0,o.default)(t)))}function x(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=S[e];if(!o)return n();try{s.getItem(o,function(o){if("success"===o.result){var r=JSON.parse(o.data);if(r&&Array.isArray(r[e]))return t(r[e])}n(o)})}catch(e){n(e)}}t.fetchExamples=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return y.apply(void 0,["examples"].concat(t))},t.saveExamples=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return z.apply(void 0,["examples"].concat(t))},t.readExamples=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return x.apply(void 0,["examples"].concat(t))},t.fetchGuide=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return y.apply(void 0,["guide"].concat(t))},t.saveGuide=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return z.apply(void 0,["guide"].concat(t))},t.readGuide=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return x.apply(void 0,["guide"].concat(t))},t.fetchAbout=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return y.apply(void 0,["about"].concat(t))},t.saveAbout=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return z.apply(void 0,["about"].concat(t))},t.readAbout=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return x.apply(void 0,["about"].concat(t))},t.fetchDoodle=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return y.apply(void 0,["doodle"].concat(t))},t.fetchNews=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return y.apply(void 0,["news"].concat(t))}},function(e,t,n){"use strict";var o=n(15),r=n(16),i=n(31),a=n(4),s=n(3),c=n(18),l=n(50),u=n(23),p=n(57),d=n(6)("iterator"),f=!([].keys&&"next"in[].keys()),h=function(){return this};e.exports=function(e,t,n,v,g,m,S){l(n,t,v);var y,z,x,_=function(e){if(!f&&e in j)return j[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},b=t+" Iterator",w="values"==g,L=!1,j=e.prototype,C=j[d]||j["@@iterator"]||g&&j[g],k=!f&&C||_(g),O=g?w?_("entries"):k:void 0,E="Array"==t?j.entries||C:C;if(E&&(x=p(E.call(new e)))!==Object.prototype&&x.next&&(u(x,b,!0),o||s(x,d)||a(x,d,h)),w&&C&&"values"!==C.name&&(L=!0,k=function(){return C.call(this)}),o&&!S||!f&&!L&&j[d]||a(j,d,k),c[t]=k,c[b]=h,g)if(y={values:w?k:_("values"),keys:m?k:_("keys"),entries:O},S)for(z in y)z in j||i(j,z,y[z]);else r(r.P+r.F*(f||L),t,y);return y}},function(e,t,n){e.exports=!n(2)&&!n(10)(function(){return 7!=Object.defineProperty(n(30)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var o=n(8),r=n(0).document,i=o(r)&&o(r.createElement);e.exports=function(e){return i?r.createElement(e):{}}},function(e,t,n){e.exports=n(4)},function(e,t,n){var o=n(9),r=n(51),i=n(22),a=n(20)("IE_PROTO"),s=function(){},c=function(){var e,t=n(30)("iframe"),o=i.length;for(t.style.display="none",n(56).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),c=e.F;o--;)delete c.prototype[i[o]];return c()};e.exports=Object.create||function(e,t){var n;return null!==e?(s.prototype=o(e),n=new s,s.prototype=null,n[a]=e):n=c(),void 0===t?n:r(n,t)}},function(e,t,n){var o=n(3),r=n(5),i=n(53)(!1),a=n(20)("IE_PROTO");e.exports=function(e,t){var n,s=r(e),c=0,l=[];for(n in s)n!=a&&o(s,n)&&l.push(n);for(;t.length>c;)o(s,n=t[c++])&&(~i(l,n)||l.push(n));return l}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var o=n(33),r=n(22).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return o(e,r)}},function(e,t,n){"use strict";var o=i(n(38)),r=i(n(84));function i(e){return e&&e.__esModule?e:{default:e}}Vue.mixin(r.default),o.default.el="#root",new Vue(o.default)},function(e,t,n){var o,r,i=[];i.push(n(39)),o=n(40);var a=n(83);if(r=o=o||{},"object"!=typeof o.default&&"function"!=typeof o.default||(Object.keys(o).some(function(e){return"default"!==e&&"__esModule"!==e})&&console.error("named exports are not supported in *.vue files."),r=o=o.default),"function"==typeof r&&(r=r.options),r.__file="/Users/Hanks/Codes/work/weex-vue-examples/src/pages/Guide.vue",r.render=a.render,r.staticRenderFns=a.staticRenderFns,r._scopeId="data-v-c247a1f0",r.style=r.style||{},i.forEach(function(e){for(var t in e)r.style[t]=e[t]}),"object"==typeof weex&&weex&&weex.document)try{weex.document.registerStyleSheets(r._scopeId,i)}catch(e){}e.exports=o},function(e,t){e.exports={size:{width:"750",height:"320"},center:{alignItems:"center",justifyContent:"center"},slider:{width:"750",height:"400",boxShadow:"0 5px 10px rgba(0, 0, 0, 0.2)",marginBottom:"10"},"slider-title":{width:"750",paddingTop:0,paddingRight:"30",paddingBottom:"30",paddingLeft:"30",fontSize:"46",textAlign:"center",color:"#FFFFFF"},indicator:{position:"absolute",left:0,right:0,bottom:0,width:"750",height:"30",itemSize:"12",itemColor:"#DDDDDD",itemSelectedColor:"rgb(0,180,255)"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n(27),r=a(n(74)),i=a(n(78));function a(e){return e&&e.__esModule?e:{default:e}}var s=!1;t.default={components:{Lesson:r.default},data:function(){return{language:"en",navigationBarOptions:{title:{zh:"Weex 入门",en:"Weex Guide"}},lenssonIndex:0,sliders:i.default}},computed:{chosenLesson:function(){return this.sliders[this.lenssonIndex]}},watch:{lenssonIndex:function(){this.navigationBarOptions.backgroundColor=this.chosenLesson.mainColor,this.navigationBarOptions.title=this.chosenLesson.title},navigationBarOptions:function(){(0,o.setTitleBar)(this.navigationBarOptions,this.language)}},beforeCreate:function(){var e=this;(0,o.readGuide)(function(t){e.sliders=t,"web"!==WXEnvironment.platform.toLowerCase()&&(s=!0)}),(0,o.fetchGuide)(function(t){(0,o.saveGuide)(t),s||(e.sliders=t.guide)})}}},function(e,t,n){e.exports={default:n(42),__esModule:!0}},function(e,t,n){var o=n(7),r=o.JSON||(o.JSON={stringify:JSON.stringify});e.exports=function(e){return r.stringify.apply(r,arguments)}},function(e,t,n){"use strict";t.__esModule=!0;var o=a(n(44)),r=a(n(63)),i="function"==typeof r.default&&"symbol"==typeof o.default?function(e){return typeof e}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":typeof e};function a(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof r.default&&"symbol"===i(o.default)?function(e){return void 0===e?"undefined":i(e)}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":void 0===e?"undefined":i(e)}},function(e,t,n){e.exports={default:n(45),__esModule:!0}},function(e,t,n){n(46),n(59),e.exports=n(24).f("iterator")},function(e,t,n){"use strict";var o=n(47)(!0);n(28)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=o(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var o=n(13),r=n(14);e.exports=function(e){return function(t,n){var i,a,s=String(r(t)),c=o(n),l=s.length;return c<0||c>=l?e?"":void 0:(i=s.charCodeAt(c))<55296||i>56319||c+1===l||(a=s.charCodeAt(c+1))<56320||a>57343?e?s.charAt(c):i:e?s.slice(c,c+2):a-56320+(i-55296<<10)+65536}}},function(e,t,n){var o=n(49);e.exports=function(e,t,n){if(o(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){"use strict";var o=n(32),r=n(11),i=n(23),a={};n(4)(a,n(6)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=o(a,{next:r(1,n)}),i(e,t+" Iterator")}},function(e,t,n){var o=n(1),r=n(9),i=n(19);e.exports=n(2)?Object.defineProperties:function(e,t){r(e);for(var n,a=i(t),s=a.length,c=0;s>c;)o.f(e,n=a[c++],t[n]);return e}},function(e,t,n){var o=n(34);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==o(e)?e.split(""):Object(e)}},function(e,t,n){var o=n(5),r=n(54),i=n(55);e.exports=function(e){return function(t,n,a){var s,c=o(t),l=r(c.length),u=i(a,l);if(e&&n!=n){for(;l>u;)if((s=c[u++])!=s)return!0}else for(;l>u;u++)if((e||u in c)&&c[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var o=n(13),r=Math.min;e.exports=function(e){return e>0?r(o(e),9007199254740991):0}},function(e,t,n){var o=n(13),r=Math.max,i=Math.min;e.exports=function(e,t){return(e=o(e))<0?r(e+t,0):i(e,t)}},function(e,t,n){var o=n(0).document;e.exports=o&&o.documentElement},function(e,t,n){var o=n(3),r=n(58),i=n(20)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=r(e),o(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,n){var o=n(14);e.exports=function(e){return Object(o(e))}},function(e,t,n){n(60);for(var o=n(0),r=n(4),i=n(18),a=n(6)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c<s.length;c++){var l=s[c],u=o[l],p=u&&u.prototype;p&&!p[a]&&r(p,a,l),i[l]=i.Array}},function(e,t,n){"use strict";var o=n(61),r=n(62),i=n(18),a=n(5);e.exports=n(28)(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,r(1)):r(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){e.exports={default:n(64),__esModule:!0}},function(e,t,n){n(65),n(71),n(72),n(73),e.exports=n(7).Symbol},function(e,t,n){"use strict";var o=n(0),r=n(3),i=n(2),a=n(16),s=n(31),c=n(66).KEY,l=n(10),u=n(21),p=n(23),d=n(12),f=n(6),h=n(24),v=n(25),g=n(67),m=n(68),S=n(9),y=n(8),z=n(5),x=n(17),_=n(11),b=n(32),w=n(69),L=n(70),j=n(1),C=n(19),k=L.f,O=j.f,E=w.f,F=o.Symbol,N=o.JSON,W=N&&N.stringify,M="prototype",A=f("_hidden"),J=f("toPrimitive"),P={}.propertyIsEnumerable,U=u("symbol-registry"),D=u("symbols"),G=u("op-symbols"),T=Object[M],B="function"==typeof F,I=o.QObject,R=!I||!I[M]||!I[M].findChild,V=i&&l(function(){return 7!=b(O({},"a",{get:function(){return O(this,"a",{value:7}).a}})).a})?function(e,t,n){var o=k(T,t);o&&delete T[t],O(e,t,n),o&&e!==T&&O(T,t,o)}:O,X=function(e){var t=D[e]=b(F[M]);return t._k=e,t},H=B&&"symbol"==typeof F.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof F},Y=function(e,t,n){return e===T&&Y(G,t,n),S(e),t=x(t,!0),S(n),r(D,t)?(n.enumerable?(r(e,A)&&e[A][t]&&(e[A][t]=!1),n=b(n,{enumerable:_(0,!1)})):(r(e,A)||O(e,A,_(1,{})),e[A][t]=!0),V(e,t,n)):O(e,t,n)},q=function(e,t){S(e);for(var n,o=g(t=z(t)),r=0,i=o.length;i>r;)Y(e,n=o[r++],t[n]);return e},K=function(e){var t=P.call(this,e=x(e,!0));return!(this===T&&r(D,e)&&!r(G,e))&&(!(t||!r(this,e)||!r(D,e)||r(this,A)&&this[A][e])||t)},Q=function(e,t){if(e=z(e),t=x(t,!0),e!==T||!r(D,t)||r(G,t)){var n=k(e,t);return!n||!r(D,t)||r(e,A)&&e[A][t]||(n.enumerable=!0),n}},$=function(e){for(var t,n=E(z(e)),o=[],i=0;n.length>i;)r(D,t=n[i++])||t==A||t==c||o.push(t);return o},Z=function(e){for(var t,n=e===T,o=E(n?G:z(e)),i=[],a=0;o.length>a;)!r(D,t=o[a++])||n&&!r(T,t)||i.push(D[t]);return i};B||(s((F=function(){if(this instanceof F)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(n){this===T&&t.call(G,n),r(this,A)&&r(this[A],e)&&(this[A][e]=!1),V(this,e,_(1,n))};return i&&R&&V(T,e,{configurable:!0,set:t}),X(e)})[M],"toString",function(){return this._k}),L.f=Q,j.f=Y,n(36).f=w.f=$,n(26).f=K,n(35).f=Z,i&&!n(15)&&s(T,"propertyIsEnumerable",K,!0),h.f=function(e){return X(f(e))}),a(a.G+a.W+a.F*!B,{Symbol:F});for(var ee="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),te=0;ee.length>te;)f(ee[te++]);for(var ne=C(f.store),oe=0;ne.length>oe;)v(ne[oe++]);a(a.S+a.F*!B,"Symbol",{for:function(e){return r(U,e+="")?U[e]:U[e]=F(e)},keyFor:function(e){if(!H(e))throw TypeError(e+" is not a symbol!");for(var t in U)if(U[t]===e)return t},useSetter:function(){R=!0},useSimple:function(){R=!1}}),a(a.S+a.F*!B,"Object",{create:function(e,t){return void 0===t?b(e):q(b(e),t)},defineProperty:Y,defineProperties:q,getOwnPropertyDescriptor:Q,getOwnPropertyNames:$,getOwnPropertySymbols:Z}),N&&a(a.S+a.F*(!B||l(function(){var e=F();return"[null]"!=W([e])||"{}"!=W({a:e})||"{}"!=W(Object(e))})),"JSON",{stringify:function(e){for(var t,n,o=[e],r=1;arguments.length>r;)o.push(arguments[r++]);if(n=t=o[1],(y(t)||void 0!==e)&&!H(e))return m(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!H(t))return t}),o[1]=t,W.apply(N,o)}}),F[M][J]||n(4)(F[M],J,F[M].valueOf),p(F,"Symbol"),p(Math,"Math",!0),p(o.JSON,"JSON",!0)},function(e,t,n){var o=n(12)("meta"),r=n(8),i=n(3),a=n(1).f,s=0,c=Object.isExtensible||function(){return!0},l=!n(10)(function(){return c(Object.preventExtensions({}))}),u=function(e){a(e,o,{value:{i:"O"+ ++s,w:{}}})},p=e.exports={KEY:o,NEED:!1,fastKey:function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,o)){if(!c(e))return"F";if(!t)return"E";u(e)}return e[o].i},getWeak:function(e,t){if(!i(e,o)){if(!c(e))return!0;if(!t)return!1;u(e)}return e[o].w},onFreeze:function(e){return l&&p.NEED&&c(e)&&!i(e,o)&&u(e),e}}},function(e,t,n){var o=n(19),r=n(35),i=n(26);e.exports=function(e){var t=o(e),n=r.f;if(n)for(var a,s=n(e),c=i.f,l=0;s.length>l;)c.call(e,a=s[l++])&&t.push(a);return t}},function(e,t,n){var o=n(34);e.exports=Array.isArray||function(e){return"Array"==o(e)}},function(e,t,n){var o=n(5),r=n(36).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?function(e){try{return r(e)}catch(e){return a.slice()}}(e):r(o(e))}},function(e,t,n){var o=n(26),r=n(11),i=n(5),a=n(17),s=n(3),c=n(29),l=Object.getOwnPropertyDescriptor;t.f=n(2)?l:function(e,t){if(e=i(e),t=a(t,!0),c)try{return l(e,t)}catch(e){}if(s(e,t))return r(!o.f.call(e,t),e[t])}},function(e,t){},function(e,t,n){n(25)("asyncIterator")},function(e,t,n){n(25)("observable")},function(e,t,n){var o,r,i=[];i.push(n(75)),o=n(76);var a=n(77);if(r=o=o||{},"object"!=typeof o.default&&"function"!=typeof o.default||(Object.keys(o).some(function(e){return"default"!==e&&"__esModule"!==e})&&console.error("named exports are not supported in *.vue files."),r=o=o.default),"function"==typeof r&&(r=r.options),r.__file="/Users/Hanks/Codes/work/weex-vue-examples/src/components/Lesson.vue",r.render=a.render,r.staticRenderFns=a.staticRenderFns,r._scopeId="data-v-712a3d30",r.style=r.style||{},i.forEach(function(e){for(var t in e)r.style[t]=e[t]}),"object"==typeof weex&&weex&&weex.document)try{weex.document.registerStyleSheets(r._scopeId,i)}catch(e){}e.exports=o},function(e,t){e.exports={center:{alignItems:"center",justifyContent:"center"},title:{fontSize:"60",textAlign:"center",marginTop:"60",marginBottom:"60",color:"#606060"},lesson:{borderBottomWidth:"1",borderBottomStyle:"solid",borderBottomColor:"#EEEEEE",flexDirection:"row",alignItems:"center"},"lesson-zh":{width:"600"},"lesson-en":{width:"630"},"lesson-index":{color:"#777777",textAlign:"right",paddingRight:"30"},"lesson-title":{paddingTop:"35",paddingBottom:"35"},"lesson-index-zh":{fontSize:"46",width:"120"},"lesson-title-zh":{fontSize:"42",width:"480"},"lesson-index-en":{fontSize:"42",width:"100"},"lesson-title-en":{fontSize:"38",width:"530"},footer:{height:"120",paddingTop:"40"},copyright:{fontSize:"22",color:"#A0A0A0",textAlign:"center"}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={props:["mainColor","title","copyright","lessons"],data:function(){return{language:"en"}}}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:["wrapper"]},[n("div",{staticClass:["center"]},[n("text",{staticClass:["title"]},[e._v(e._s(e.i18n(e.title)))])]),e._l(e.lessons,function(t,o){return n("div",{key:o,staticClass:["center"]},[n("div",{class:["lesson","lesson-"+e.language],on:{click:function(n){e.jumpTo(t.docLink,t.title)}}},[n("text",{class:["lesson-index","lesson-index-"+e.language]},[e._v(e._s(o+1)+".")]),n("text",{class:["lesson-title","lesson-title-"+e.language],style:{color:e.mainColor}},[e._v(e._s(e.i18n(t.title)))])])])}),n("div",{staticClass:["footer","center"]},[n("text",{staticClass:["copyright"]},[e._v(e._s(e.i18n(e.copyright)))])])],2)},staticRenderFns:[]},e.exports.render._withStripped=!0},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o,r,i,a,s=n(79),c=(o=s)&&o.__esModule?o:{default:o};t.default=[{subject:"weex",mainColor:"#00B4FF",title:{zh:"学习 Weex",en:"Learn Weex"},poster:"https://gw.alicdn.com/tfs/TB1.8Vdl9_I8KJjy0FoXXaFnVXa-3799-1615.png",posterBg:"#E5F7FF",posterStyle:{width:"650px",height:"304px"},copyright:{zh:"来自 http://weex-project.io/cn/",en:"From http://weex-project.io/"},lessons:[{title:{zh:"快速入门",en:"Getting Started"},docLink:{zh:"http://weex-project.io/cn/guide/index.html",en:"http://weex-project.io/guide/index.html"}},{title:{zh:"工作原理",en:"How it Works"},docLink:{zh:"http://weex-project.io/cn/guide/intro/how-it-works.html",en:"http://weex-project.io/guide/intro/how-it-works.html"}},{title:{zh:"与 Web 平台的差异",en:"Platform difference with Web"},docLink:{zh:"http://weex-project.io/cn/references/platform-difference.html",en:"http://weex-project.io/references/platform-difference.html"}},{title:{zh:"集成 Weex 到已有应用",en:"Integrate to Your App"},docLink:{zh:"http://weex-project.io/cn/guide/integrate-to-your-app.html",en:"http://weex-project.io/guide/integrate-to-your-app.html"}},{title:{zh:"搭建开发环境",en:"Set Up Dev Environment"},docLink:{zh:"http://weex-project.io/cn/guide/set-up-env.html",en:"http://weex-project.io/guide/set-up-env.html"}},{title:{zh:"通用样式",en:"Common Styles"},docLink:{zh:"http://weex-project.io/cn/references/common-style.html",en:"http://weex-project.io/references/common-style.html"}},{title:{zh:"通用事件",en:"Common Events"},docLink:{zh:"http://weex-project.io/cn/references/common-event.html",en:"http://weex-project.io/references/common-event.html"}},{title:{zh:"Weex 实例变量",en:'The "weex" Variable'},docLink:{zh:"http://weex-project.io/cn/references/weex-variable.html",en:"http://weex-project.io/references/weex-variable.html"}},{title:{zh:"内置组件",en:"Built-in Components"},docLink:{zh:"http://weex-project.io/cn/references/components/index.html",en:"http://weex-project.io/references/components/index.html"}},{title:{zh:"内置模块",en:"Built-in Modules"},docLink:{zh:"http://weex-project.io/cn/references/modules/index.html",en:"http://weex-project.io/references/modules/index.html"}},{title:{zh:"扩展 Android 组件/模块",en:"Extend Android"},docLink:{zh:"http://weex-project.io/cn/references/advanced/extend-to-android.html",en:"http://weex-project.io/references/advanced/extend-to-android.html"}},{title:{zh:"扩展 iOS 组件/模块",en:"Extend iOS"},docLink:{zh:"http://weex-project.io/cn/references/advanced/extend-to-ios.html",en:"http://weex-project.io/references/advanced/extend-to-ios.html"}},{title:{zh:"使用 weex-toolkit",en:"Use weex-toolkit"},docLink:{zh:"http://weex-project.io/cn/guide/tools/toolkit.html",en:"http://weex-project.io/guide/tools/toolkit.html"}},{title:{zh:"如何参与贡献",en:"How to Contribute"},docLink:{zh:"http://weex-project.io/cn/guide/contributing.html",en:"http://weex-project.io/guide/contributing.html"}}]},(r={subject:"vue",mainColor:"#42b983",title:{zh:"学习 Vue.js",en:"Learn Vue.js"},poster:"https://gw.alicdn.com/tfs/TB1J_uKcMMPMeJjy1XdXXasrXXa-400-400.png",posterBg:"#E7FBF2",posterStyle:{width:"300px",height:"300px"}},(0,c.default)(r,"title",{zh:"学习 Vue.js",en:"Learn Vue.js"}),(0,c.default)(r,"copyright",{zh:"来自 https://cn.vuejs.org/",en:"From https://vuejs.org/"}),(0,c.default)(r,"lessons",[{title:{zh:"Vue.js 是什么?",en:"What is Vue.js ?"},docLink:{zh:"https://cn.vuejs.org/v2/guide/index.html",en:"https://vuejs.org/v2/guide/index.html"}},{title:{zh:"单文件组件",en:"Single File Components"},docLink:{zh:"https://cn.vuejs.org/v2/guide/single-file-components.html",en:"https://vuejs.org/v2/guide/single-file-components.html"}},{title:{zh:"模板语法",en:"Template Syntax"},docLink:{zh:"https://cn.vuejs.org/v2/guide/syntax.html",en:"https://vuejs.org/v2/guide/syntax.html"}},{title:{zh:"Class 与 Style 绑定",en:"Class and Style Bindings"},docLink:{zh:"https://cn.vuejs.org/v2/guide/class-and-style.html",en:"https://vuejs.org/v2/guide/class-and-style.html"}},{title:{zh:"条件渲染",en:"Conditional Rendering"},docLink:{zh:"https://cn.vuejs.org/v2/guide/conditional.html",en:"https://vuejs.org/v2/guide/conditional.html"}},{title:{zh:"列表渲染",en:"List Rendering"},docLink:{zh:"https://cn.vuejs.org/v2/guide/list.html",en:"https://vuejs.org/v2/guide/list.html"}},{title:{zh:"事件处理",en:"Event Handling"},docLink:{zh:"https://cn.vuejs.org/v2/guide/events.html",en:"https://vuejs.org/v2/guide/events.html"}},{title:{zh:"表单输入绑定",en:"Form Input Bindings"},docLink:{zh:"https://cn.vuejs.org/v2/guide/forms.html",en:"https://vuejs.org/v2/guide/forms.html"}},{title:{zh:"Vue 实例",en:"The Vue Instance"},docLink:{zh:"https://cn.vuejs.org/v2/guide/instance.html",en:"https://vuejs.org/v2/guide/instance.html"}},{title:{zh:"在 Weex 中的差异",en:"Difference in Weex"},docLink:{zh:"http://weex-project.io/cn/references/vue/difference-with-web.html",en:"http://weex-project.io/references/vue/difference-with-web.html"}},{title:{zh:"混合(mixins)",en:"Mixins"},docLink:{zh:"https://cn.vuejs.org/v2/guide/mixins.html",en:"https://vuejs.org/v2/guide/mixins.html"}},{title:{zh:"过滤器(filters)",en:"Filters"},docLink:{zh:"https://cn.vuejs.org/v2/guide/filters.html",en:"https://vuejs.org/v2/guide/filters.html"}},{title:{zh:"插件(plugins)",en:"Plugins"},docLink:{zh:"https://cn.vuejs.org/v2/guide/plugins.html",en:"https://vuejs.org/v2/guide/plugins.html"}},{title:{zh:"自定义指令",en:"Custom Directives"},docLink:{zh:"https://cn.vuejs.org/v2/guide/custom-directive.html",en:"https://vuejs.org/v2/guide/custom-directive.html"}},{title:{zh:"状态管理",en:"State Management"},docLink:{zh:"https://cn.vuejs.org/v2/guide/state-management.html",en:"https://vuejs.org/v2/guide/state-management.html"}},{title:{zh:"深入响应式原理",en:"Reactivity in Depth"},docLink:{zh:"https://cn.vuejs.org/v2/guide/reactivity.html",en:"https://vuejs.org/v2/guide/reactivity.html"}},{title:{zh:"渲染函数",en:"Render Functions"},docLink:{zh:"https://cn.vuejs.org/v2/guide/render-function.html",en:"https://vuejs.org/v2/guide/render-function.html"}},{title:{zh:"TypeScript 支持",en:"TypeScript Support"},docLink:{zh:"https://cn.vuejs.org/v2/guide/typescript.html",en:"https://vuejs.org/v2/guide/typescript.html"}},{title:"API",docLink:{zh:"https://cn.vuejs.org/v2/api/",en:"https://vuejs.org/v2/api/"}}]),r),(i={subject:"javascript",mainColor:"#F7BD2A",title:{zh:"学习 Javascript",en:"Learn Javascript"},poster:"https://gw.alicdn.com/tfs/TB1bT98hMoQMeJjy0FpXXcTxpXa-1500-700.png",posterBg:"#FAF3EB",posterStyle:{width:"750px",height:"350px"}},(0,c.default)(i,"title",{zh:"学习 Javascript",en:"Learn Javascript"}),(0,c.default)(i,"copyright",{zh:"来自 MDN (Mozilla Developer Network)",en:"From MDN (Mozilla Developer Network)"}),(0,c.default)(i,"lessons",[{title:{zh:"什么是 Javascript ?",en:"What is Javascript ?"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/What_is_JavaScript",en:"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript"}},{title:{zh:"JavaScript基础",en:"JavaScript basics"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web/JavaScript_basics",en:"https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics"}},{title:{zh:"重新介绍 JavaScript",en:"A re-introduction to JavaScript"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/A_re-introduction_to_JavaScript",en:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript"}},{title:{zh:"语法和数据类型",en:"Grammar and types"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Grammar_and_types#Variable_scope",en:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variable_scope"}},{title:{zh:"数据类型和数据结构",en:"Data types and data structures"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures",en:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures"}},{title:{zh:"变量",en:"Variables"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Variables",en:"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Variables"}},{title:{zh:"数字和操作符",en:"Numbers and operators"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Math",en:"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Math"}},{title:{zh:"字符串",en:"Handling text"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Strings",en:"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Strings"}},{title:{zh:"常用的 String 方法",en:"Useful string methods"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Useful_string_methods",en:"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Useful_string_methods"}},{title:{zh:"数组",en:"Arrays"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Arrays",en:"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Arrays"}},{title:{zh:"函数",en:"Functions"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Functions",en:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions"}},{title:{zh:"JavaScript 对象基础",en:"JavaScript object basics"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Basics",en:"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Basics"}},{title:{zh:"使用对象",en:"Working with objects"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Working_with_Objects",en:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects"}},{title:{zh:"使用 JSON 数据",en:"Working with JSON"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/JSON",en:"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON"}},{title:{zh:"对象模型的细节",en:"Details of the object model"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Details_of_the_Object_Model",en:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model"}},{title:{zh:"对象原型",en:"Object prototypes"},docLink:{zh:"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object_prototypes",en:"https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Object_prototypes"}},{title:{zh:"JavaScript 中的继承",en:"Inheritance in JavaScript"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Inheritance",en:"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Inheritance"}},{title:{zh:"继承与原型链",en:"Inheritance and the prototype chain"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain",en:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain"}},{title:{zh:"严格模式",en:"Strict mode"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode",en:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode"}},{title:{zh:"内存管理",en:"Memory Management"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management",en:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management"}},{title:{zh:"并发模型与事件循环",en:"Concurrency model and Event Loop"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/EventLoop",en:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop"}},{title:{zh:"JavaScript 标准库",en:"Standard built-in objects"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects",en:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects"}}]),i),(a={subject:"css",mainColor:"#F56FC6",title:{zh:"学习 CSS",en:"Learn CSS"},titleColor:"#FFFFFF",poster:"https://gw.alicdn.com/tfs/TB1k6anhMMPMeJjy1XdXXasrXXa-427-190.jpg",posterBg:"#FFA2DE",posterStyle:{width:"517px",height:"230px"}},(0,c.default)(a,"title",{zh:"学习 CSS",en:"Learn CSS"}),(0,c.default)(a,"copyright",{zh:"来自 MDN (Mozilla Developer Network)",en:"From MDN (Mozilla Developer Network)"}),(0,c.default)(a,"lessons",[{title:{zh:"什么是 CSS ?",en:"What is CSS ?"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Getting_started/What_is_CSS",en:"https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started/What_is_CSS"}},{title:{zh:"CSS 语法",en:"CSS Syntax"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Syntax",en:"https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Syntax"}},{title:{zh:"CSS的值和单位",en:"CSS Values and Units"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Values_and_units",en:"https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Values_and_units"}},{title:{zh:"盒模型",en:"The Box Model"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Box_model",en:"https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Box_model"}},{title:{zh:"盒模型的属性",en:"Box Model Properties"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Box_Model",en:"https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model"}},{title:{zh:"定位布局",en:"Positioning"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/%E5%AE%9A%E4%BD%8Dx",en:"https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/positioning"}},{title:{zh:"定位布局的属性",en:"CSS Positioning"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Positioning",en:"https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning"}},{title:{zh:"Flexbox 布局",en:"Flexbox Layout"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/Flexbox",en:"https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox"}},{title:{zh:"Flexbox 布局的属性",en:"CSS Flexible Box Layout"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout",en:"https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout"}},{title:{zh:"Weex 中的通用样式",en:"Common Styles in Weex"},docLink:{zh:"http://weex-project.io/cn/references/common-style.html",en:"http://weex-project.io/references/common-style.html"}},{title:{zh:"Weex 中的文本样式",en:"Text Styles in Weex"},docLink:{zh:"http://weex-project.io/cn/references/text-style.html",en:"http://weex-project.io/references/text-style.html"}},{title:{zh:"块格式化上下文(BFC)",en:"Block Formatting Context"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Block_formatting_context",en:"https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context"}},{title:{zh:"视觉格式化模型",en:"Visual Formatting Model"},docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Visual_formatting_model",en:"https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Visual_formatting_model"}},{title:"CSS Reference",docLink:{zh:"https://developer.mozilla.org/zh-CN/docs/Web/CSS/Reference",en:"https://developer.mozilla.org/en-US/docs/Web/CSS/Reference"}}]),a)]},function(e,t,n){"use strict";t.__esModule=!0;var o,r=n(80),i=(o=r)&&o.__esModule?o:{default:o};t.default=function(e,t,n){return t in e?(0,i.default)(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){e.exports={default:n(81),__esModule:!0}},function(e,t,n){n(82);var o=n(7).Object;e.exports=function(e,t,n){return o.defineProperty(e,t,n)}},function(e,t,n){var o=n(16);o(o.S+o.F*!n(2),"Object",{defineProperty:n(1).f})},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("scroller",{staticClass:["wrapper"]},[n("slider",{staticClass:["slider"],attrs:{autoPlay:"true"}},[e._l(e.sliders,function(t,o){return n("div",{key:t.subject,staticClass:["center"],style:{backgroundColor:t.posterBg},on:{click:function(t){e.lenssonIndex=o}}},[n("div",{staticClass:["center","size"]},[n("image",{style:t.posterStyle,attrs:{resize:"cover",src:t.poster}})]),n("text",{staticClass:["slider-title"],style:{color:t.titleColor||t.mainColor}},[e._v(e._s(e.i18n(t.title)))])])}),n("indicator",{staticClass:["indicator"]})],2),n("lesson",{attrs:{mainColor:e.chosenLesson.mainColor,title:e.chosenLesson.title,lessons:e.chosenLesson.lessons,copyright:e.chosenLesson.copyright}})],1)},staticRenderFns:[]},e.exports.render._withStripped=!0},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(27));var r=weex.requireModule("storage");t.default={filters:{i18n:o.i18n,url:o.createURL,link:o.createLink},methods:{createLink:o.createLink,createURL:o.createURL,i18n:o.i18n,getLanguage:o.getLanguage,fetchData:o.fetchData,saveData:o.saveData,readData:o.readData,jumpTo:o.jumpTo},created:function(){var e=this;o.getLanguage(function(t){e.language=t,o.setTitleBar(e.navigationBarOptions,t)}),new BroadcastChannel("language").onmessage=function(t){t.data&&t.data.language&&(e.language=t.data.language)}},beforeDestroy:function(){r.removeItem("CURRENT_DOCUMENT_URL"),r.removeItem("CURRENT_SOURCE_HASH")}}}]);
\ No newline at end of file
diff --git a/src/main/assets/landing.weex.js b/src/main/assets/landing.weex.js
new file mode 100644
index 0000000..db307ad
--- /dev/null
+++ b/src/main/assets/landing.weex.js
@@ -0,0 +1,4 @@
+// { "framework": "Vue" }
+"use weex:vue";
+
+!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=37)}([function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(3),o=n(11);t.exports=n(4)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(9),o=n(29),i=n(17),u=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return u(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){t.exports=!n(10)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(55),o=n(15);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(21)("wks"),o=n(12),i=n(0).Symbol,u="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=u&&i[t]||(u?i:o)("Symbol."+t))}).store=r},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){var n=t.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(7);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fetchNews=e.fetchDoodle=e.readAbout=e.saveAbout=e.fetchAbout=e.readGuide=e.saveGuide=e.fetchGuide=e.readExamples=e.saveExamples=e.fetchExamples=void 0;var r=i(n(44)),o=i(n(46));function i(t){return t&&t.__esModule?t:{default:t}}e.createLink=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[];for(var r in e)"string"==typeof e[r]&&n.push(f(r)+"="+f(e[r]));if("Web"===WXEnvironment.platform)return n.unshift("page="+t+".web.js"),"/?"+n.join("&");return""+function(){var t=weex.config.bundleUrl,e=t.indexOf("your_current_IP")>=0||t.indexOf("file://assets/")>=0,n=t.indexOf("file:///")>=0&&t.indexOf("WeexDemo.app")>0;if(e)return"file://assets/";if(n)return t.substring(0,t.lastIndexOf("/")+1);return""}()+t+".weex.js"+(n.length?"?"+n.join("&"):"")},e.createURL=s,e.i18n=l,e.parseLanguage=d,e.setLanguage=function(t){var e=d(t);e&&a.setItem("WEEX_PLAYGROUND_LANGUAGE",e)},e.clearStorageLanguage=function(){a.removeItem("WEEX_PLAYGROUND_LANGUAGE")},e.getStorageLanguage=v,e.getSystemLanguage=h,e.getLanguage=y,e.jumpTo=function(t,e){y(function(n){a.setItem("CURRENT_DOCUMENT_URL",l(t,n)),c.push({url:s("bf0305c14b511b24a4e616f53926432b",{language:n,title:l(e,n)})})})},e.viewSource=function(t){y(function(e){c.push({url:s("f6ce29faf686eabc38b410bf4828fa5a",{hash:t,language:e})})})},e.setTitleBar=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";if("[object Object]"!==Object.prototype.toString.apply(t))return;var n=weex.requireModule("titleBar");if(t.color||t.backgroundColor)try{n.setStyle({foregroundColor:t.color||"#FFFFFF",backgroundColor:t.backgroundColor||"#00B4FF"})}catch(t){}var r=l(t.title,e);if(r)try{n.setTitle(r)}catch(t){}},e.fetchData=b,e.saveData=x,e.readData=w;var u=weex.requireModule("stream"),a=weex.requireModule("storage"),c=weex.requireModule("navigator"),f="function"==typeof encodeURIComponent?encodeURIComponent:"function"==typeof encodeURI?encodeURI:function(t){return t};function s(t,e){if("Web"===WXEnvironment.platform)return"http://dotwe.org/raw/htmlVue/"+t;var n="http://dotwe.org/raw/dist/"+t+".bundle.wx",r=function(t){if(!t||"object"!==(void 0===t?"undefined":(0,o.default)(t)))return"";var e=[];for(var n in t)"string"==typeof t[n]&&e.push(f(n)+"="+f(t[n]));return e.join("&")}(e);return"TB"===WXEnvironment.appName?n+"?_wx_tpl="+n+"&"+r:"WXSample"===WXEnvironment.appName?n+"?"+r:n+"?wx_weex=true&"+r}function l(t,e){return"string"==typeof t?t:"[object Object]"===Object.prototype.toString.call(t)?t[this&&this.language||e||"en"]:void 0}var p=/(en|zh)\_?\w*/i;function d(t){var e=p.exec(t+"");return e&&e[1]?e[1]:""}function v(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if("function"!==!(void 0===t||(0,o.default)(t)))try{a.getItem("WEEX_PLAYGROUND_LANGUAGE",function(n){if("success"===n.result){var r=d(n.data);r?t(r):e()}else e(n)})}catch(t){e(t)}}function h(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if("function"!==!(void 0===t||(0,o.default)(t)))if("web"===WXEnvironment.platform.toLowerCase()){var n=d(window.navigator.language);n?t(n):e()}else try{var r=weex.requireModule("locale")||weex.requireModule("local"),i=!1,u=d(r.getLanguage(function(n){var r=d(n);r?i||t(r):e()}));u?(i=!0,t(u)):e()}catch(t){e(t)}}var g=/.+[\?\&]{1}language=([\d\w]+)[\?\&]?.*/i;function y(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},e=g.exec(weex.config.bundleUrl||""),n=d(e&&e[1]);n?t(n):v(t,function(){h(t,function(){t("en")})})}var m={doodle:"WEEX_PLAYGROUND_APP_DOODLE",guide:"WEEX_PLAYGROUND_APP_GUIDE",examples:"WEEX_PLAYGROUND_APP_EXAMPLES",news:"WEEX_PLAYGROUND_APP_NEWS",about:"WEEX_PLAYGROUND_APP_ABOUT"};function b(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){};try{u.fetch({url:"http://dotwe.org/query/weex-playground-app",method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded"},type:"json",body:"name="+t},function(t){t.ok&&t.data&&t.data.success?e(t.data):n(t)})}catch(t){n(t)}}function x(t,e){var n=m[t];n&&e&&"object"===(void 0===e?"undefined":(0,o.default)(e))&&(e.timestamp=Date.now(),a.setItem(n,(0,r.default)(e)))}function w(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=m[t];if(!r)return n();try{a.getItem(r,function(r){if("success"===r.result){var o=JSON.parse(r.data);if(o&&Array.isArray(o[t]))return e(o[t])}n(r)})}catch(t){n(t)}}e.fetchExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["examples"].concat(e))},e.saveExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["examples"].concat(e))},e.readExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return w.apply(void 0,["examples"].concat(e))},e.fetchGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["guide"].concat(e))},e.saveGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["guide"].concat(e))},e.readGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return w.apply(void 0,["guide"].concat(e))},e.fetchAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["about"].concat(e))},e.saveAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["about"].concat(e))},e.readAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return w.apply(void 0,["about"].concat(e))},e.fetchDoodle=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["doodle"].concat(e))},e.fetchNews=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["news"].concat(e))}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on  "+t);return t}},function(t,e){t.exports=!0},function(t,e,n){var r=n(7);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports={}},function(t,e,n){var r=n(33),o=n(22);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e,n){var r=n(21)("keys"),o=n(12);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e,n){var r=n(0),o="__core-js_shared__",i=r[o]||(r[o]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(3).f,o=n(1),i=n(6)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){e.f=n(6)},function(t,e,n){var r=n(0),o=n(8),i=n(16),u=n(24),a=n(3).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:u.f(t)})}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){"use strict";var r=n(16),o=n(28),i=n(31),u=n(2),a=n(1),c=n(18),f=n(53),s=n(23),l=n(60),p=n(6)("iterator"),d=!([].keys&&"next"in[].keys()),v="values",h=function(){return this};t.exports=function(t,e,n,g,y,m,b){f(n,e,g);var x,w,_,O=function(t){if(!d&&t in L)return L[t];switch(t){case"keys":case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",E=y==v,j=!1,L=t.prototype,A=L[p]||L["@@iterator"]||y&&L[y],C=!d&&A||O(y),P=y?E?O("entries"):C:void 0,M="Array"==e?L.entries||A:A;if(M&&(_=l(M.call(new t)))!==Object.prototype&&_.next&&(s(_,S,!0),r||a(_,p)||u(_,p,h)),E&&A&&A.name!==v&&(j=!0,C=function(){return A.call(this)}),r&&!b||!d&&!j&&L[p]||u(L,p,C),c[e]=C,c[S]=h,y)if(x={values:E?C:O(v),keys:m?C:O("keys"),entries:P},b)for(w in x)w in L||i(L,w,x[w]);else o(o.P+o.F*(d||j),e,x);return x}},function(t,e,n){var r=n(0),o=n(8),i=n(51),u=n(2),a="prototype",c=function(t,e,n){var f,s,l,p=t&c.F,d=t&c.G,v=t&c.S,h=t&c.P,g=t&c.B,y=t&c.W,m=d?o:o[e]||(o[e]={}),b=m[a],x=d?r:v?r[e]:(r[e]||{})[a];d&&(n=e);for(f in n)(s=!p&&x&&void 0!==x[f])&&f in m||(l=s?x[f]:n[f],m[f]=d&&"function"!=typeof x[f]?n[f]:g&&s?i(l,r):y&&x[f]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[a]=t[a],e}(l):h&&"function"==typeof l?i(Function.call,l):l,h&&((m.virtual||(m.virtual={}))[f]=l,t&c.R&&b&&!b[f]&&u(b,f,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){t.exports=!n(4)&&!n(10)(function(){return 7!=Object.defineProperty(n(30)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(7),o=n(0).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,e,n){t.exports=n(2)},function(t,e,n){var r=n(9),o=n(54),i=n(22),u=n(20)("IE_PROTO"),a=function(){},c="prototype",f=function(){var t,e=n(30)("iframe"),r=i.length;for(e.style.display="none",n(59).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),f=t.F;r--;)delete f[c][i[r]];return f()};t.exports=Object.create||function(t,e){var n;return null!==t?(a[c]=r(t),n=new a,a[c]=null,n[u]=t):n=f(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(1),o=n(5),i=n(56)(!1),u=n(20)("IE_PROTO");t.exports=function(t,e){var n,a=o(t),c=0,f=[];for(n in a)n!=u&&r(a,n)&&f.push(n);for(;e.length>c;)r(a,n=e[c++])&&(~i(f,n)||f.push(n));return f}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(33),o=n(22).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){"use strict";var r=u(n(38)),o=u(n(79)),i=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(13));function u(t){return t&&t.__esModule?t:{default:t}}try{weex.requireModule("titleBar").showTitleBar(!1)}catch(t){}Vue.mixin(o.default),setTimeout(function(){i.fetchExamples(i.saveExamples),i.fetchGuide(i.saveGuide),i.fetchAbout(i.saveAbout)},10),r.default.el="#root",new Vue(r.default)},function(t,e,n){var r,o,i=[];i.push(n(39)),r=n(40);var u=n(78);if(o=r=r||{},"object"!=typeof r.default&&"function"!=typeof r.default||(Object.keys(r).some(function(t){return"default"!==t&&"__esModule"!==t})&&console.error("named exports are not supported in *.vue files."),o=r=r.default),"function"==typeof o&&(o=o.options),o.__file="/Users/Hanks/Codes/work/weex-vue-examples/src/pages/Landing.vue",o.render=u.render,o.staticRenderFns=u.staticRenderFns,o._scopeId="data-v-50791ba3",o.style=o.style||{},i.forEach(function(t){for(var e in t)o.style[e]=t[e]}),"object"==typeof weex&&weex&&weex.document)try{weex.document.registerStyleSheets(o._scopeId,i)}catch(t){}t.exports=r},function(t,e){t.exports={doodle:{width:"750",height:"880"},"menu-list":{flex:1},"menu-row":{flex:1,flexDirection:"row",justifyContent:"center",borderTopWidth:"1",borderTopStyle:"solid",borderTopColor:"#CCCCCC"},"menu-item":{flex:1,backgroundColor:"#FBFBFB",justifyContent:"center",paddingTop:"50",paddingBottom:"50","backgroundColor:active":"#F2F2F2"},"menu-item-1":{borderRightWidth:"1",borderRightStyle:"solid",borderRightColor:"#CCCCCC"},"menu-text":{textAlign:"center",fontSize:"52",fontWeight:"bold",color:"#8B8B8B"},"menu-text-zh":{fontSize:"56"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=n(41),i=(r=o)&&r.__esModule?r:{default:r};e.default={components:{Doodle:i.default},data:function(){return{language:"en",menus:[[{name:"guide",title:{en:"Guide",zh:"教程"}},{name:"examples",title:{en:"Examples",zh:"实例"}}],[{name:"news",title:{en:"News",zh:"资讯"}},{name:"about",title:{en:"About",zh:"关于"}}]]}}}},function(t,e,n){var r,o,i=[];i.push(n(42)),r=n(43);var u=n(77);if(o=r=r||{},"object"!=typeof r.default&&"function"!=typeof r.default||(Object.keys(r).some(function(t){return"default"!==t&&"__esModule"!==t})&&console.error("named exports are not supported in *.vue files."),o=r=r.default),"function"==typeof o&&(o=o.options),o.__file="/Users/Hanks/Codes/work/weex-vue-examples/src/components/Doodle.vue",o.render=u.render,o.staticRenderFns=u.staticRenderFns,o._scopeId="data-v-312c24c9",o.style=o.style||{},i.forEach(function(t){for(var e in t)o.style[e]=t[e]}),"object"==typeof weex&&weex&&weex.document)try{weex.document.registerStyleSheets(o._scopeId,i)}catch(t){}t.exports=r},function(t,e){t.exports={wrapper:{alignItems:"center",justifyContent:"space-between",backgroundColor:"#FFFFFF"},center:{alignItems:"center",justifyContent:"center"},logo:{width:"750",height:"318"},btn:{width:"450",height:"160",marginTop:"50",marginRight:"50",marginBottom:"50",marginLeft:"50",opacity:.7,"opacity:active":1},"scan-bg":{width:"450",height:"160",position:"absolute",top:0,left:0},"btn-text":{color:"#505050",fontSize:"56",textAlign:"center"},"btn-text-zh":{fontSize:"64"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(13),o=(weex.requireModule("modal"),weex.requireModule("navigator")),i=weex.requireModule("event");e.default={props:["lang"],data:function(){return{language:this.lang||"en",showDoodle:!1,seenDoodle:!1,SCAN:{en:"Scan QR Code",zh:"扫描二维码"},doodle:{}}},beforeCreate:function(){var t=this;(0,r.fetchDoodle)(function(e){var n,r,o=e.doodle;n=o,r=(new Date).getTime(),n&&n.src&&parseInt(n.from,10)<r&&r<parseInt(n.to,10)&&!t.seenDoodle&&(t.doodle=o,t.showDoodle=!0,setTimeout(function(){t.showDoodle=!1,t.seenDoodle=!0},o.duration||8e3))})},methods:{scan:function(){try{i.openURL("weex://go/scan")}catch(t){try{o.push({url:"weex://go/scan"})}catch(t){}}},magic:function(){this.doodle&&this.doodle.next&&(this.showDoodle=!1,o.push({url:this.createURL(this.doodle.next,{language:this.language})}))}}}},function(t,e,n){t.exports={default:n(45),__esModule:!0}},function(t,e,n){var r=n(8),o=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function(t){return o.stringify.apply(o,arguments)}},function(t,e,n){"use strict";e.__esModule=!0;var r=u(n(47)),o=u(n(66)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(t){return typeof t}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":typeof t};function u(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof o.default&&"symbol"===i(r.default)?function(t){return void 0===t?"undefined":i(t)}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":void 0===t?"undefined":i(t)}},function(t,e,n){t.exports={default:n(48),__esModule:!0}},function(t,e,n){n(49),n(62),t.exports=n(24).f("iterator")},function(t,e,n){"use strict";var r=n(50)(!0);n(27)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(14),o=n(15);t.exports=function(t){return function(e,n){var i,u,a=String(o(e)),c=r(n),f=a.length;return c<0||c>=f?t?"":void 0:(i=a.charCodeAt(c))<55296||i>56319||c+1===f||(u=a.charCodeAt(c+1))<56320||u>57343?t?a.charAt(c):i:t?a.slice(c,c+2):u-56320+(i-55296<<10)+65536}}},function(t,e,n){var r=n(52);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){"use strict";var r=n(32),o=n(11),i=n(23),u={};n(2)(u,n(6)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(u,{next:o(1,n)}),i(t,e+" Iterator")}},function(t,e,n){var r=n(3),o=n(9),i=n(19);t.exports=n(4)?Object.defineProperties:function(t,e){o(t);for(var n,u=i(e),a=u.length,c=0;a>c;)r.f(t,n=u[c++],e[n]);return t}},function(t,e,n){var r=n(34);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e,n){var r=n(5),o=n(57),i=n(58);t.exports=function(t){return function(e,n,u){var a,c=r(e),f=o(c.length),s=i(u,f);if(t&&n!=n){for(;f>s;)if((a=c[s++])!=a)return!0}else for(;f>s;s++)if((t||s in c)&&c[s]===n)return t||s||0;return!t&&-1}}},function(t,e,n){var r=n(14),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(14),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},function(t,e,n){var r=n(0).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(1),o=n(61),i=n(20)("IE_PROTO"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,e,n){var r=n(15);t.exports=function(t){return Object(r(t))}},function(t,e,n){n(63);for(var r=n(0),o=n(2),i=n(18),u=n(6)("toStringTag"),a="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c<a.length;c++){var f=a[c],s=r[f],l=s&&s.prototype;l&&!l[u]&&o(l,u,f),i[f]=i.Array}},function(t,e,n){"use strict";var r=n(64),o=n(65),i=n(18),u=n(5);t.exports=n(27)(Array,"Array",function(t,e){this._t=u(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){t.exports={default:n(67),__esModule:!0}},function(t,e,n){n(68),n(74),n(75),n(76),t.exports=n(8).Symbol},function(t,e,n){"use strict";var r=n(0),o=n(1),i=n(4),u=n(28),a=n(31),c=n(69).KEY,f=n(10),s=n(21),l=n(23),p=n(12),d=n(6),v=n(24),h=n(25),g=n(70),y=n(71),m=n(9),b=n(7),x=n(5),w=n(17),_=n(11),O=n(32),S=n(72),E=n(73),j=n(3),L=n(19),A=E.f,C=j.f,P=S.f,M=r.Symbol,T=r.JSON,D=T&&T.stringify,R="prototype",k=d("_hidden"),N=d("toPrimitive"),F={}.propertyIsEnumerable,I=s("symbol-registry"),U=s("symbols"),G=s("op-symbols"),W=Object[R],X="function"==typeof M,B=r.QObject,q=!B||!B[R]||!B[R].findChild,z=i&&f(function(){return 7!=O(C({},"a",{get:function(){return C(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=A(W,e);r&&delete W[e],C(t,e,n),r&&t!==W&&C(W,e,r)}:C,V=function(t){var e=U[t]=O(M[R]);return e._k=t,e},H=X&&"symbol"==typeof M.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof M},J=function(t,e,n){return t===W&&J(G,e,n),m(t),e=w(e,!0),m(n),o(U,e)?(n.enumerable?(o(t,k)&&t[k][e]&&(t[k][e]=!1),n=O(n,{enumerable:_(0,!1)})):(o(t,k)||C(t,k,_(1,{})),t[k][e]=!0),z(t,e,n)):C(t,e,n)},Y=function(t,e){m(t);for(var n,r=g(e=x(e)),o=0,i=r.length;i>o;)J(t,n=r[o++],e[n]);return t},K=function(t){var e=F.call(this,t=w(t,!0));return!(this===W&&o(U,t)&&!o(G,t))&&(!(e||!o(this,t)||!o(U,t)||o(this,k)&&this[k][t])||e)},Q=function(t,e){if(t=x(t),e=w(e,!0),t!==W||!o(U,e)||o(G,e)){var n=A(t,e);return!n||!o(U,e)||o(t,k)&&t[k][e]||(n.enumerable=!0),n}},$=function(t){for(var e,n=P(x(t)),r=[],i=0;n.length>i;)o(U,e=n[i++])||e==k||e==c||r.push(e);return r},Z=function(t){for(var e,n=t===W,r=P(n?G:x(t)),i=[],u=0;r.length>u;)!o(U,e=r[u++])||n&&!o(W,e)||i.push(U[e]);return i};X||(a((M=function(){if(this instanceof M)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===W&&e.call(G,n),o(this,k)&&o(this[k],t)&&(this[k][t]=!1),z(this,t,_(1,n))};return i&&q&&z(W,t,{configurable:!0,set:e}),V(t)})[R],"toString",function(){return this._k}),E.f=Q,j.f=J,n(36).f=S.f=$,n(26).f=K,n(35).f=Z,i&&!n(16)&&a(W,"propertyIsEnumerable",K,!0),v.f=function(t){return V(d(t))}),u(u.G+u.W+u.F*!X,{Symbol:M});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)d(tt[et++]);for(var nt=L(d.store),rt=0;nt.length>rt;)h(nt[rt++]);u(u.S+u.F*!X,"Symbol",{for:function(t){return o(I,t+="")?I[t]:I[t]=M(t)},keyFor:function(t){if(!H(t))throw TypeError(t+" is not a symbol!");for(var e in I)if(I[e]===t)return e},useSetter:function(){q=!0},useSimple:function(){q=!1}}),u(u.S+u.F*!X,"Object",{create:function(t,e){return void 0===e?O(t):Y(O(t),e)},defineProperty:J,defineProperties:Y,getOwnPropertyDescriptor:Q,getOwnPropertyNames:$,getOwnPropertySymbols:Z}),T&&u(u.S+u.F*(!X||f(function(){var t=M();return"[null]"!=D([t])||"{}"!=D({a:t})||"{}"!=D(Object(t))})),"JSON",{stringify:function(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(b(e)||void 0!==t)&&!H(t))return y(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!H(e))return e}),r[1]=e,D.apply(T,r)}}),M[R][N]||n(2)(M[R],N,M[R].valueOf),l(M,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},function(t,e,n){var r=n(12)("meta"),o=n(7),i=n(1),u=n(3).f,a=0,c=Object.isExtensible||function(){return!0},f=!n(10)(function(){return c(Object.preventExtensions({}))}),s=function(t){u(t,r,{value:{i:"O"+ ++a,w:{}}})},l=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!c(t))return"F";if(!e)return"E";s(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!c(t))return!0;if(!e)return!1;s(t)}return t[r].w},onFreeze:function(t){return f&&l.NEED&&c(t)&&!i(t,r)&&s(t),t}}},function(t,e,n){var r=n(19),o=n(35),i=n(26);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var u,a=n(t),c=i.f,f=0;a.length>f;)c.call(t,u=a[f++])&&e.push(u);return e}},function(t,e,n){var r=n(34);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(5),o=n(36).f,i={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return u&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return u.slice()}}(t):o(r(t))}},function(t,e,n){var r=n(26),o=n(11),i=n(5),u=n(17),a=n(1),c=n(29),f=Object.getOwnPropertyDescriptor;e.f=n(4)?f:function(t,e){if(t=i(t),e=u(e,!0),c)try{return f(t,e)}catch(t){}if(a(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e){},function(t,e,n){n(25)("asyncIterator")},function(t,e,n){n(25)("observable")},function(t,e){t.exports={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:["wrapper"]},[this.showDoodle&&this.doodle.src?e("embed",{staticStyle:{flex:"1"},attrs:{src:this._f("url")(this.doodle.src)},on:{click:this.magic}}):e("div",{staticClass:["center"],staticStyle:{flex:"1"}},[e("image",{staticClass:["logo"],attrs:{src:"https://gw.alicdn.com/tfs/TB1Q9VBkRfH8KJjy1XbXXbLdXXa-3799-1615.png"}}),e("div",{staticClass:["btn","center"],on:{click:this.scan}},[e("image",{staticClass:["scan-bg"],attrs:{src:"https://gw.alicdn.com/tfs/TB1qnO0kLDH8KJjy1XcXXcpdXXa-900-320.png"}}),e("text",{class:["btn-text","btn-text-"+this.language]},[this._v(this._s(this.i18n(this.SCAN)))])])])])},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:["wrapper"]},[n("doodle",{staticClass:["doodle"],attrs:{lang:t.language}}),n("div",{staticClass:["menu-list"]},t._l(t.menus,function(e,r){return n("div",{key:r,class:["menu-row","menu-row-"+(r+1)]},t._l(e,function(e,r){return n("a",{key:e.name,class:["menu-item","menu-item-"+(r+1)],attrs:{href:t._f("link")(e.name,{language:t.language})}},[n("text",{class:["menu-text","menu-text-"+t.language]},[t._v(t._s(t.i18n(e.title)))])])}))}))],1)},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(13));var o=weex.requireModule("storage");e.default={filters:{i18n:r.i18n,url:r.createURL,link:r.createLink},methods:{createLink:r.createLink,createURL:r.createURL,i18n:r.i18n,getLanguage:r.getLanguage,fetchData:r.fetchData,saveData:r.saveData,readData:r.readData,jumpTo:r.jumpTo},created:function(){var t=this;r.getLanguage(function(e){t.language=e,r.setTitleBar(t.navigationBarOptions,e)}),new BroadcastChannel("language").onmessage=function(e){e.data&&e.data.language&&(t.language=e.data.language)}},beforeDestroy:function(){o.removeItem("CURRENT_DOCUMENT_URL"),o.removeItem("CURRENT_SOURCE_HASH")}}}]);
\ No newline at end of file
diff --git a/src/main/assets/news.weex.js b/src/main/assets/news.weex.js
new file mode 100644
index 0000000..9ffb909
--- /dev/null
+++ b/src/main/assets/news.weex.js
@@ -0,0 +1,4 @@
+// { "framework": "Vue" }
+"use weex:vue";
+
+!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=37)}([function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(3),o=n(11);t.exports=n(4)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(9),o=n(29),i=n(16),u=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return u(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){t.exports=!n(10)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(52),o=n(14);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(20)("wks"),o=n(12),i=n(0).Symbol,u="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=u&&i[t]||(u?i:o)("Symbol."+t))}).store=r},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){var n=t.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(7);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on  "+t);return t}},function(t,e){t.exports=!0},function(t,e,n){var r=n(7);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports={}},function(t,e,n){var r=n(33),o=n(21);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e,n){var r=n(20)("keys"),o=n(12);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e,n){var r=n(0),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(3).f,o=n(1),i=n(6)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){e.f=n(6)},function(t,e,n){var r=n(0),o=n(8),i=n(15),u=n(23),a=n(3).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:u.f(t)})}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fetchNews=e.fetchDoodle=e.readAbout=e.saveAbout=e.fetchAbout=e.readGuide=e.saveGuide=e.fetchGuide=e.readExamples=e.saveExamples=e.fetchExamples=void 0;var r=i(n(41)),o=i(n(43));function i(t){return t&&t.__esModule?t:{default:t}}e.createLink=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[];for(var r in e)"string"==typeof e[r]&&n.push(f(r)+"="+f(e[r]));if("Web"===WXEnvironment.platform)return n.unshift("page="+t+".web.js"),"/?"+n.join("&");return""+function(){var t=weex.config.bundleUrl,e=t.indexOf("your_current_IP")>=0||t.indexOf("file://assets/")>=0,n=t.indexOf("file:///")>=0&&t.indexOf("WeexDemo.app")>0;if(e)return"file://assets/";if(n)return t.substring(0,t.lastIndexOf("/")+1);return""}()+t+".weex.js"+(n.length?"?"+n.join("&"):"")},e.createURL=s,e.i18n=l,e.parseLanguage=d,e.setLanguage=function(t){var e=d(t);e&&a.setItem("WEEX_PLAYGROUND_LANGUAGE",e)},e.clearStorageLanguage=function(){a.removeItem("WEEX_PLAYGROUND_LANGUAGE")},e.getStorageLanguage=v,e.getSystemLanguage=g,e.getLanguage=h,e.jumpTo=function(t,e){h(function(n){a.setItem("CURRENT_DOCUMENT_URL",l(t,n)),c.push({url:s("bf0305c14b511b24a4e616f53926432b",{language:n,title:l(e,n)})})})},e.viewSource=function(t){h(function(e){c.push({url:s("f6ce29faf686eabc38b410bf4828fa5a",{hash:t,language:e})})})},e.setTitleBar=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";if("[object Object]"!==Object.prototype.toString.apply(t))return;var n=weex.requireModule("titleBar");if(t.color||t.backgroundColor)try{n.setStyle({foregroundColor:t.color||"#FFFFFF",backgroundColor:t.backgroundColor||"#00B4FF"})}catch(t){}var r=l(t.title,e);if(r)try{n.setTitle(r)}catch(t){}},e.fetchData=b,e.saveData=x,e.readData=_;var u=weex.requireModule("stream"),a=weex.requireModule("storage"),c=weex.requireModule("navigator"),f="function"==typeof encodeURIComponent?encodeURIComponent:"function"==typeof encodeURI?encodeURI:function(t){return t};function s(t,e){if("Web"===WXEnvironment.platform)return"http://dotwe.org/raw/htmlVue/"+t;var n="http://dotwe.org/raw/dist/"+t+".bundle.wx",r=function(t){if(!t||"object"!==(void 0===t?"undefined":(0,o.default)(t)))return"";var e=[];for(var n in t)"string"==typeof t[n]&&e.push(f(n)+"="+f(t[n]));return e.join("&")}(e);return"TB"===WXEnvironment.appName?n+"?_wx_tpl="+n+"&"+r:"WXSample"===WXEnvironment.appName?n+"?"+r:n+"?wx_weex=true&"+r}function l(t,e){return"string"==typeof t?t:"[object Object]"===Object.prototype.toString.call(t)?t[this&&this.language||e||"en"]:void 0}var p=/(en|zh)\_?\w*/i;function d(t){var e=p.exec(t+"");return e&&e[1]?e[1]:""}function v(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if("function"!==!(void 0===t||(0,o.default)(t)))try{a.getItem("WEEX_PLAYGROUND_LANGUAGE",function(n){if("success"===n.result){var r=d(n.data);r?t(r):e()}else e(n)})}catch(t){e(t)}}function g(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if("function"!==!(void 0===t||(0,o.default)(t)))if("web"===WXEnvironment.platform.toLowerCase()){var n=d(window.navigator.language);n?t(n):e()}else try{var r=weex.requireModule("locale")||weex.requireModule("local"),i=!1,u=d(r.getLanguage(function(n){var r=d(n);r?i||t(r):e()}));u?(i=!0,t(u)):e()}catch(t){e(t)}}var y=/.+[\?\&]{1}language=([\d\w]+)[\?\&]?.*/i;function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},e=y.exec(weex.config.bundleUrl||""),n=d(e&&e[1]);n?t(n):v(t,function(){g(t,function(){t("en")})})}var m={doodle:"WEEX_PLAYGROUND_APP_DOODLE",guide:"WEEX_PLAYGROUND_APP_GUIDE",examples:"WEEX_PLAYGROUND_APP_EXAMPLES",news:"WEEX_PLAYGROUND_APP_NEWS",about:"WEEX_PLAYGROUND_APP_ABOUT"};function b(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){};try{u.fetch({url:"http://dotwe.org/query/weex-playground-app",method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded"},type:"json",body:"name="+t},function(t){t.ok&&t.data&&t.data.success?e(t.data):n(t)})}catch(t){n(t)}}function x(t,e){var n=m[t];n&&e&&"object"===(void 0===e?"undefined":(0,o.default)(e))&&(e.timestamp=Date.now(),a.setItem(n,(0,r.default)(e)))}function _(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=m[t];if(!r)return n();try{a.getItem(r,function(r){if("success"===r.result){var o=JSON.parse(r.data);if(o&&Array.isArray(o[t]))return e(o[t])}n(r)})}catch(t){n(t)}}e.fetchExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["examples"].concat(e))},e.saveExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["examples"].concat(e))},e.readExamples=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return _.apply(void 0,["examples"].concat(e))},e.fetchGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["guide"].concat(e))},e.saveGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["guide"].concat(e))},e.readGuide=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return _.apply(void 0,["guide"].concat(e))},e.fetchAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["about"].concat(e))},e.saveAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return x.apply(void 0,["about"].concat(e))},e.readAbout=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return _.apply(void 0,["about"].concat(e))},e.fetchDoodle=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["doodle"].concat(e))},e.fetchNews=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.apply(void 0,["news"].concat(e))}},function(t,e,n){"use strict";var r=n(15),o=n(28),i=n(31),u=n(2),a=n(1),c=n(17),f=n(50),s=n(22),l=n(57),p=n(6)("iterator"),d=!([].keys&&"next"in[].keys()),v=function(){return this};t.exports=function(t,e,n,g,y,h,m){f(n,e,g);var b,x,_,w=function(t){if(!d&&t in L)return L[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},O=e+" Iterator",S="values"==y,E=!1,L=t.prototype,j=L[p]||L["@@iterator"]||y&&L[y],A=!d&&j||w(y),P=y?S?w("entries"):A:void 0,C="Array"==e?L.entries||j:j;if(C&&(_=l(C.call(new t)))!==Object.prototype&&_.next&&(s(_,O,!0),r||a(_,p)||u(_,p,v)),S&&j&&"values"!==j.name&&(E=!0,A=function(){return j.call(this)}),r&&!m||!d&&!E&&L[p]||u(L,p,A),c[e]=A,c[O]=v,y)if(b={values:S?A:w("values"),keys:h?A:w("keys"),entries:P},m)for(x in b)x in L||i(L,x,b[x]);else o(o.P+o.F*(d||E),e,b);return b}},function(t,e,n){var r=n(0),o=n(8),i=n(48),u=n(2),a="prototype",c=function(t,e,n){var f,s,l,p=t&c.F,d=t&c.G,v=t&c.S,g=t&c.P,y=t&c.B,h=t&c.W,m=d?o:o[e]||(o[e]={}),b=m[a],x=d?r:v?r[e]:(r[e]||{})[a];d&&(n=e);for(f in n)(s=!p&&x&&void 0!==x[f])&&f in m||(l=s?x[f]:n[f],m[f]=d&&"function"!=typeof x[f]?n[f]:y&&s?i(l,r):h&&x[f]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[a]=t[a],e}(l):g&&"function"==typeof l?i(Function.call,l):l,g&&((m.virtual||(m.virtual={}))[f]=l,t&c.R&&b&&!b[f]&&u(b,f,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){t.exports=!n(4)&&!n(10)(function(){return 7!=Object.defineProperty(n(30)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(7),o=n(0).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,e,n){t.exports=n(2)},function(t,e,n){var r=n(9),o=n(51),i=n(21),u=n(19)("IE_PROTO"),a=function(){},c=function(){var t,e=n(30)("iframe"),r=i.length;for(e.style.display="none",n(56).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(a.prototype=r(t),n=new a,a.prototype=null,n[u]=t):n=c(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(1),o=n(5),i=n(53)(!1),u=n(19)("IE_PROTO");t.exports=function(t,e){var n,a=o(t),c=0,f=[];for(n in a)n!=u&&r(a,n)&&f.push(n);for(;e.length>c;)r(a,n=e[c++])&&(~i(f,n)||f.push(n));return f}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(33),o=n(21).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){"use strict";var r=i(n(38)),o=i(n(75));function i(t){return t&&t.__esModule?t:{default:t}}Vue.mixin(o.default),r.default.el="#root",new Vue(r.default)},function(t,e,n){var r,o,i=[];i.push(n(39)),r=n(40);var u=n(74);if(o=r=r||{},"object"!=typeof r.default&&"function"!=typeof r.default||(Object.keys(r).some(function(t){return"default"!==t&&"__esModule"!==t})&&console.error("named exports are not supported in *.vue files."),o=r=r.default),"function"==typeof o&&(o=o.options),o.__file="/Users/Hanks/Codes/work/weex-vue-examples/src/pages/News.vue",o.render=u.render,o.staticRenderFns=u.staticRenderFns,o._scopeId="data-v-a2748412",o.style=o.style||{},i.forEach(function(t){for(var e in t)o.style[e]=t[e]}),"object"==typeof weex&&weex&&weex.document)try{weex.document.registerStyleSheets(o._scopeId,i)}catch(t){}t.exports=r},function(t,e){t.exports={list:{backgroundColor:"#F1F1F1"},cell:{alignItems:"center"},"message-time":{marginTop:"25",justifyContent:"center"},"time-text":{paddingTop:"5",paddingBottom:"5",paddingLeft:"18",paddingRight:"18",backgroundColor:"rgba(0,0,0,0.1)",fontSize:"25",borderRadius:"8",color:"#FEFEFE"},"message-box":{borderWidth:"1",borderColor:"#DDDDDD",borderRadius:"15",backgroundColor:"#FFFFFF",marginTop:"25",marginBottom:"35","backgroundColor:active":"#F8F8F8"},"related-article":{borderTopWidth:"1",borderTopColor:"#E6E6E6",flexDirection:"row",alignItems:"center",paddingTop:"10",paddingBottom:"15",paddingLeft:"30",paddingRight:"20",backgroundColor:"#FEFEFE"},poster:{width:"680",height:"340",backgroundColor:"#D2D2D2"},title:{width:"680",paddingTop:"30",paddingRight:"30",paddingBottom:"30",paddingLeft:"30",fontSize:"38",color:"#323232"},shortcut:{width:"80",height:"80"},subtitle:{width:"550",paddingRight:"25",fontSize:"34",color:"#454545"},summary:{width:"680",marginTop:"-20",paddingLeft:"30",paddingRight:"30",paddingBottom:"30",fontSize:"28",color:"#929292",lines:3}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(26);e.default={data:function(){return{navigationBarOptions:{title:{zh:"资讯",en:"News"}},visibleCount:8,news:[]}},computed:{visibleNews:function(){return this.news.slice(0,this.visibleCount)}},beforeCreate:function(){var t=this;(0,r.fetchNews)(function(e){Array.isArray(e.news)&&(t.news=e.news)})}}},function(t,e,n){t.exports={default:n(42),__esModule:!0}},function(t,e,n){var r=n(8),o=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function(t){return o.stringify.apply(o,arguments)}},function(t,e,n){"use strict";e.__esModule=!0;var r=u(n(44)),o=u(n(63)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(t){return typeof t}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":typeof t};function u(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof o.default&&"symbol"===i(r.default)?function(t){return void 0===t?"undefined":i(t)}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":void 0===t?"undefined":i(t)}},function(t,e,n){t.exports={default:n(45),__esModule:!0}},function(t,e,n){n(46),n(59),t.exports=n(23).f("iterator")},function(t,e,n){"use strict";var r=n(47)(!0);n(27)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(13),o=n(14);t.exports=function(t){return function(e,n){var i,u,a=String(o(e)),c=r(n),f=a.length;return c<0||c>=f?t?"":void 0:(i=a.charCodeAt(c))<55296||i>56319||c+1===f||(u=a.charCodeAt(c+1))<56320||u>57343?t?a.charAt(c):i:t?a.slice(c,c+2):u-56320+(i-55296<<10)+65536}}},function(t,e,n){var r=n(49);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){"use strict";var r=n(32),o=n(11),i=n(22),u={};n(2)(u,n(6)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(u,{next:o(1,n)}),i(t,e+" Iterator")}},function(t,e,n){var r=n(3),o=n(9),i=n(18);t.exports=n(4)?Object.defineProperties:function(t,e){o(t);for(var n,u=i(e),a=u.length,c=0;a>c;)r.f(t,n=u[c++],e[n]);return t}},function(t,e,n){var r=n(34);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e,n){var r=n(5),o=n(54),i=n(55);t.exports=function(t){return function(e,n,u){var a,c=r(e),f=o(c.length),s=i(u,f);if(t&&n!=n){for(;f>s;)if((a=c[s++])!=a)return!0}else for(;f>s;s++)if((t||s in c)&&c[s]===n)return t||s||0;return!t&&-1}}},function(t,e,n){var r=n(13),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(13),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},function(t,e,n){var r=n(0).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(1),o=n(58),i=n(19)("IE_PROTO"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,e,n){var r=n(14);t.exports=function(t){return Object(r(t))}},function(t,e,n){n(60);for(var r=n(0),o=n(2),i=n(17),u=n(6)("toStringTag"),a="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c<a.length;c++){var f=a[c],s=r[f],l=s&&s.prototype;l&&!l[u]&&o(l,u,f),i[f]=i.Array}},function(t,e,n){"use strict";var r=n(61),o=n(62),i=n(17),u=n(5);t.exports=n(27)(Array,"Array",function(t,e){this._t=u(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){t.exports={default:n(64),__esModule:!0}},function(t,e,n){n(65),n(71),n(72),n(73),t.exports=n(8).Symbol},function(t,e,n){"use strict";var r=n(0),o=n(1),i=n(4),u=n(28),a=n(31),c=n(66).KEY,f=n(10),s=n(20),l=n(22),p=n(12),d=n(6),v=n(23),g=n(24),y=n(67),h=n(68),m=n(9),b=n(7),x=n(5),_=n(16),w=n(11),O=n(32),S=n(69),E=n(70),L=n(3),j=n(18),A=E.f,P=L.f,C=S.f,T=r.Symbol,D=r.JSON,N=D&&D.stringify,F="prototype",M=d("_hidden"),R=d("toPrimitive"),k={}.propertyIsEnumerable,U=s("symbol-registry"),I=s("symbols"),G=s("op-symbols"),W=Object[F],B="function"==typeof T,X=r.QObject,z=!X||!X[F]||!X[F].findChild,V=i&&f(function(){return 7!=O(P({},"a",{get:function(){return P(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=A(W,e);r&&delete W[e],P(t,e,n),r&&t!==W&&P(W,e,r)}:P,Y=function(t){var e=I[t]=O(T[F]);return e._k=t,e},q=B&&"symbol"==typeof T.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof T},J=function(t,e,n){return t===W&&J(G,e,n),m(t),e=_(e,!0),m(n),o(I,e)?(n.enumerable?(o(t,M)&&t[M][e]&&(t[M][e]=!1),n=O(n,{enumerable:w(0,!1)})):(o(t,M)||P(t,M,w(1,{})),t[M][e]=!0),V(t,e,n)):P(t,e,n)},H=function(t,e){m(t);for(var n,r=y(e=x(e)),o=0,i=r.length;i>o;)J(t,n=r[o++],e[n]);return t},K=function(t){var e=k.call(this,t=_(t,!0));return!(this===W&&o(I,t)&&!o(G,t))&&(!(e||!o(this,t)||!o(I,t)||o(this,M)&&this[M][t])||e)},Q=function(t,e){if(t=x(t),e=_(e,!0),t!==W||!o(I,e)||o(G,e)){var n=A(t,e);return!n||!o(I,e)||o(t,M)&&t[M][e]||(n.enumerable=!0),n}},$=function(t){for(var e,n=C(x(t)),r=[],i=0;n.length>i;)o(I,e=n[i++])||e==M||e==c||r.push(e);return r},Z=function(t){for(var e,n=t===W,r=C(n?G:x(t)),i=[],u=0;r.length>u;)!o(I,e=r[u++])||n&&!o(W,e)||i.push(I[e]);return i};B||(a((T=function(){if(this instanceof T)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===W&&e.call(G,n),o(this,M)&&o(this[M],t)&&(this[M][t]=!1),V(this,t,w(1,n))};return i&&z&&V(W,t,{configurable:!0,set:e}),Y(t)})[F],"toString",function(){return this._k}),E.f=Q,L.f=J,n(36).f=S.f=$,n(25).f=K,n(35).f=Z,i&&!n(15)&&a(W,"propertyIsEnumerable",K,!0),v.f=function(t){return Y(d(t))}),u(u.G+u.W+u.F*!B,{Symbol:T});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)d(tt[et++]);for(var nt=j(d.store),rt=0;nt.length>rt;)g(nt[rt++]);u(u.S+u.F*!B,"Symbol",{for:function(t){return o(U,t+="")?U[t]:U[t]=T(t)},keyFor:function(t){if(!q(t))throw TypeError(t+" is not a symbol!");for(var e in U)if(U[e]===t)return e},useSetter:function(){z=!0},useSimple:function(){z=!1}}),u(u.S+u.F*!B,"Object",{create:function(t,e){return void 0===e?O(t):H(O(t),e)},defineProperty:J,defineProperties:H,getOwnPropertyDescriptor:Q,getOwnPropertyNames:$,getOwnPropertySymbols:Z}),D&&u(u.S+u.F*(!B||f(function(){var t=T();return"[null]"!=N([t])||"{}"!=N({a:t})||"{}"!=N(Object(t))})),"JSON",{stringify:function(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(b(e)||void 0!==t)&&!q(t))return h(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!q(e))return e}),r[1]=e,N.apply(D,r)}}),T[F][R]||n(2)(T[F],R,T[F].valueOf),l(T,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},function(t,e,n){var r=n(12)("meta"),o=n(7),i=n(1),u=n(3).f,a=0,c=Object.isExtensible||function(){return!0},f=!n(10)(function(){return c(Object.preventExtensions({}))}),s=function(t){u(t,r,{value:{i:"O"+ ++a,w:{}}})},l=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!c(t))return"F";if(!e)return"E";s(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!c(t))return!0;if(!e)return!1;s(t)}return t[r].w},onFreeze:function(t){return f&&l.NEED&&c(t)&&!i(t,r)&&s(t),t}}},function(t,e,n){var r=n(18),o=n(35),i=n(25);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var u,a=n(t),c=i.f,f=0;a.length>f;)c.call(t,u=a[f++])&&e.push(u);return e}},function(t,e,n){var r=n(34);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(5),o=n(36).f,i={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return u&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return u.slice()}}(t):o(r(t))}},function(t,e,n){var r=n(25),o=n(11),i=n(5),u=n(16),a=n(1),c=n(29),f=Object.getOwnPropertyDescriptor;e.f=n(4)?f:function(t,e){if(t=i(t),e=u(e,!0),c)try{return f(t,e)}catch(t){}if(a(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e){},function(t,e,n){n(24)("asyncIterator")},function(t,e,n){n(24)("observable")},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("list",{staticClass:["list"]},t._l(t.visibleNews,function(e,r){return n("cell",{key:r,staticClass:["cell"],appendAsTree:!0,attrs:{append:"tree"}},[e.time?n("div",{staticClass:["message-time"]},[n("text",{staticClass:["time-text"]},[t._v(t._s(t.i18n(e.time)))])]):t._e(),"article"===e.type?n("div",{staticClass:["message-box"]},[n("div",{staticClass:["article"],on:{click:function(n){t.jumpTo(e.link)}}},[n("image",{staticClass:["poster"],attrs:{resize:"cover",src:e.poster}}),n("text",{staticClass:["title"]},[t._v(t._s(e.title))]),e.summary?n("text",{staticClass:["summary"],attrs:{lines:3}},[t._v(t._s(e.summary))]):t._e(),n("div",{staticClass:["related"]},t._l(e.related,function(e){return n("div",{key:e.title,staticClass:["related-article"],on:{click:function(n){t.jumpTo(e.link)}}},[n("text",{staticClass:["subtitle"]},[t._v(t._s(e.title))]),n("image",{staticClass:["shortcut"],attrs:{resize:"cover",src:e.poster}})])}))])]):t._e()])}))},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(26));var o=weex.requireModule("storage");e.default={filters:{i18n:r.i18n,url:r.createURL,link:r.createLink},methods:{createLink:r.createLink,createURL:r.createURL,i18n:r.i18n,getLanguage:r.getLanguage,fetchData:r.fetchData,saveData:r.saveData,readData:r.readData,jumpTo:r.jumpTo},created:function(){var t=this;r.getLanguage(function(e){t.language=e,r.setTitleBar(t.navigationBarOptions,e)}),new BroadcastChannel("language").onmessage=function(e){e.data&&e.data.language&&(t.language=e.data.language)}},beforeDestroy:function(){o.removeItem("CURRENT_DOCUMENT_URL"),o.removeItem("CURRENT_SOURCE_HASH")}}}]);
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/animation.js b/src/main/assets/vue-web/vue/animation.js
deleted file mode 100644
index 9f103b2..0000000
--- a/src/main/assets/vue-web/vue/animation.js
+++ /dev/null
@@ -1,1110 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(1)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-/* 1 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(2)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(8),
-	  /* template */
-	  __webpack_require__(19),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-48e47b99",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/animation.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] animation.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-48e47b99", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-48e47b99", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 2 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(3);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("471a3152", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../node_modules/css-loader/index.js!../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-48e47b99\",\"scoped\":true,\"hasInlineConfig\":false}!../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./animation.vue", function() {
-	     var newContent = require("!!../../node_modules/css-loader/index.js!../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-48e47b99\",\"scoped\":true,\"hasInlineConfig\":false}!../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./animation.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.block[data-v-48e47b99] {\n  position: absolute;\n  width: 250px;\n  height: 250px;\n  top: 300px;\n  left: 400px;\n  background-color: #F0AD4E;\n  align-items: center;\n  justify-content: center;\n}\n.block-txt[data-v-48e47b99] {\n  color: #FFFFFF;\n  font-size: 70px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-/* 8 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var animation = weex.requireModule('animation');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      transformOrigin: 'center center',
-	      current_rotate: 0,
-	      current_scale: 1,
-	      current_color: '#FF0000',
-	      current_opacity: 1,
-	      current_translate: '',
-	      current_transform: '',
-	      isStop: true
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9),
-	    button: __webpack_require__(14)
-	  },
-	  methods: {
-	    anim: function anim(styles, timingFunction, duration, callback) {
-	      animation.transition(this.$refs.block, {
-	        styles: styles,
-	        timingFunction: timingFunction,
-	        duration: duration
-	      }, callback);
-	    },
-	    rotate: function rotate() {
-	      var self = this;
-	      self.current_rotate += 90;
-	      self.anim({
-	        transform: 'rotate(' + self.current_rotate + 'deg)'
-	      }, 'ease-in-out', 500, function () {
-	        if (self.current_rotate === 360) {
-	          self.current_rotate = 0;
-	        } else {
-	          self.rotate();
-	        }
-	      });
-	    },
-	    translate: function translate() {
-	      this.current_translate = this.current_translate ? '' : 'translate(50%, 50%)';
-	      this.anim({
-	        transform: this.current_translate
-	      }, 'ease-in', 500, function () {});
-	    },
-	    scale: function scale() {
-	      var self = this;
-	      self.current_scale = self.current_scale === 2 ? .5 : 2;
-	      self.anim({
-	        transform: 'scale(' + self.current_scale + ')'
-	      }, 'linear', 500, function () {});
-	    },
-	    transform: function transform() {
-	      var self = this;
-	      this.current_transform = this.current_transform ? '' : 'rotate(45deg) scale(1.5)';
-	      this.anim({
-	        transform: this.current_transform,
-	        transformOrigin: 'left top'
-	      }, 'ease-out', 500, function () {
-	        if (self.current_transform !== '') {
-	          self.anim({
-	            transform: 'rotate(-90deg) scale(1.2)',
-	            transformOrigin: 'left top'
-	          }, 'ease-out', 500, function () {});
-	        } else {}
-	      });
-	    },
-	    composite: function composite() {
-	      var self = this;
-	      self.current_transform = self.current_transform ? '' : 'rotate(45deg) scale(1.5) translate(50%, 50%)';
-	      self.current_color = self.current_color === '#F0AD4E' ? '#D9534F' : '#F0AD4E';
-	      self.current_opacity = self.current_opacity === 1 ? 0.1 : 1;
-	      this.anim({
-	        transform: this.current_transform,
-	        transformOrigin: 'left top',
-	        backgroundColor: self.current_color,
-	        opacity: self.current_opacity
-	      }, 'ease-out', 1000, function () {});
-	    },
-	    color: function color() {
-	      var self = this;
-	      self.current_color = self.current_color === '#F0AD4E' ? '#D9534F' : '#F0AD4E';
-	      self.anim({
-	        backgroundColor: self.current_color
-	      }, 'linear', 500, function () {});
-	    },
-	    opacity: function opacity() {
-	      var self = this;
-	      self.current_opacity = self.current_opacity === 1 ? 0.1 : 1;
-	      self.anim({
-	        opacity: self.current_opacity
-	      }, 'linear', 500, function () {});
-	    }
-	  }
-	};
-
-/***/ }),
-/* 9 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 14 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(15)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(17),
-	  /* template */
-	  __webpack_require__(18),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-33548b34",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.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] button.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-33548b34", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-33548b34", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 15 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(16);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("3204e9c3", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 16 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.btn[data-v-33548b34] {\n  margin-bottom: 0;\n  align-items: center;\n  justify-content: center;\n  border-width: 1px;\n  border-style: solid;\n  border-color: #333;\n\n  /*white-space: nowrap;*/\n  /*vertical-align: middle;*/\n  /*touch-action: manipulation;*/\n  /*cursor: pointer;*/\n  /*-webkit-user-select: none;*/\n  /*background-image: none;*/\n  /*border-image-source: initial;*/\n  /*border-image-slice: initial;*/\n  /*border-image-width: initial;*/\n  /*border-image-outset: initial;*/\n  /*border-image-repeat: initial;*/\n}\n.btn-txt[data-v-33548b34] {\n}\n\n/**TYPE**/\n.btn-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-primary[data-v-33548b34] {\n  background-color: rgb(40, 96, 144);\n  border-color: rgb(40, 96, 144);\n}\n.btn-success[data-v-33548b34] {\n  background-color: rgb(92, 184, 92);\n  border-color: rgb(76, 174, 76);\n}\n.btn-info[data-v-33548b34] {\n  background-color: rgb(91, 192, 222);\n  border-color: rgb(70, 184, 218);\n}\n.btn-warning[data-v-33548b34] {\n  background-color: rgb(240, 173, 78);\n  border-color: rgb(238, 162, 54);\n}\n.btn-danger[data-v-33548b34] {\n  background-color: rgb(217, 83, 79);\n  border-color: rgb(212, 63, 58);\n}\n.btn-link[data-v-33548b34] {\n  border-color: transparent;\n  border-radius: 0;\n}\n.btn-txt-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-txt-primary[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-success[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-info[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-warning[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-danger[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-link[data-v-33548b34] {\n  color: rgb(51, 122, 183);\n  /*font-weight: 400;*/\n}\n\n/**SIZE**/\n.btn-sz-large[data-v-33548b34] {\n  width: 300px;\n  height: 100px;\n  padding-top: 25px;\n  padding-bottom: 25px;\n  padding-left: 40px;\n  padding-right: 40px;\n  /*line-height: 1.33333;*/\n  border-radius: 15px;\n}\n.btn-sz-middle[data-v-33548b34] {\n  width: 240px;\n  height: 80px;\n  padding-top: 15px;\n  padding-bottom: 15px;\n  padding-left: 30px;\n  padding-right: 30px;\n  /*line-height: 1.42857;*/\n  border-radius: 10px;\n}\n.btn-sz-small[data-v-33548b34] {\n  width: 170px;\n  height: 60px;\n  padding-top: 12px;\n  padding-bottom: 12px;\n  padding-left: 25px;\n  padding-right: 25px;\n  /*line-height: 1.5;*/\n  border-radius: 7px;\n}\n.btn-txt-sz-large[data-v-33548b34] {\n  font-size: 45px;\n}\n.btn-txt-sz-middle[data-v-33548b34] {\n  font-size: 35px;\n}\n.btn-txt-sz-small[data-v-33548b34] {\n  font-size: 30px;\n}\n\n/*DISABLED*/\n.disabled[data-v-33548b34] {\n}\n\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 17 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-/* 18 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-33548b34", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 19 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Transform",
-	      "type": "primary"
-	    }
-	  }, [_c('button', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "Rotate",
-	      "type": "primary",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.rotate($event)
-	      }
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "12px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "Scale",
-	      "type": "primary",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.scale($event)
-	      }
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "12px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "Translate",
-	      "type": "primary",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.translate($event)
-	      }
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "12px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "Transform",
-	      "type": "success",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.transform($event)
-	      }
-	    }
-	  })]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Others",
-	      "type": "primary"
-	    }
-	  }, [_c('button', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "BgColor",
-	      "type": "primary",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.color($event)
-	      }
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "12px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "Opacity",
-	      "type": "primary",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.opacity($event)
-	      }
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "12px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "All",
-	      "type": "success",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.composite($event)
-	      }
-	    }
-	  })]), _vm._v(" "), _c('div', {
-	    ref: "block",
-	    staticClass: "block",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      transformOrigin: _vm.transformOrigin
-	    }))
-	  }, [_c('text', {
-	    staticClass: "block-txt",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Anim")])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-48e47b99", module.exports)
-	  }
-	}
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/a.js b/src/main/assets/vue-web/vue/components/a.js
deleted file mode 100644
index 0b5e01a..0000000
--- a/src/main/assets/vue-web/vue/components/a.js
+++ /dev/null
@@ -1,874 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(20)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-/* 1 */,
-/* 2 */,
-/* 3 */,
-/* 4 */
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-/* 8 */,
-/* 9 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 14 */,
-/* 15 */,
-/* 16 */,
-/* 17 */,
-/* 18 */,
-/* 19 */,
-/* 20 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(21),
-	  /* template */
-	  __webpack_require__(27),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/a.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] a.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-7691c4ba", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-7691c4ba", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 21 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      img: '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg'
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9),
-	    tip: __webpack_require__(22)
-	  }
-	};
-
-/***/ }),
-/* 22 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(23)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(25),
-	  /* template */
-	  __webpack_require__(26),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-f15788ee",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.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] tip.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-f15788ee", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-f15788ee", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 23 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(24);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("b14ba53e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 24 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.tip[data-v-f15788ee] {\n  padding-left: 36px;\n  padding-right: 36px;\n  padding-top: 36px;\n  padding-bottom: 36px;\n  border-radius: 10px;\n}\n.tip-txt[data-v-f15788ee]{\n  font-size: 28px;\n}\n.tip-success[data-v-f15788ee] {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.tip-txt-success[data-v-f15788ee] {\n  color: #3c763d;\n}\n.tip-info[data-v-f15788ee] {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.tip-txt-info[data-v-f15788ee] {\n  color: #31708f;\n}\n.tip-warning[data-v-f15788ee] {\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.tip-txt-warning[data-v-f15788ee] {\n  color: #8a6d3b;\n}\n.tip-danger[data-v-f15788ee] {\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.tip-txt-danger[data-v-f15788ee] {\n  color: #a94442;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 25 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-/* 26 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-f15788ee", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 27 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Hyperlink",
-	      "type": "primary"
-	    }
-	  }, [_c('a', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "href": "http://alibaba.github.io/weex/index.html"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-bottom": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "info",
-	      "value": "Click me to see how 'A' element opens a new world."
-	    }
-	  })], 1)])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-7691c4ba", module.exports)
-	  }
-	}
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/countdown.js b/src/main/assets/vue-web/vue/components/countdown.js
deleted file mode 100644
index 2bd9274..0000000
--- a/src/main/assets/vue-web/vue/components/countdown.js
+++ /dev/null
@@ -1,1142 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(28)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-/* 1 */,
-/* 2 */,
-/* 3 */,
-/* 4 */
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-/* 8 */,
-/* 9 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 14 */,
-/* 15 */,
-/* 16 */,
-/* 17 */,
-/* 18 */,
-/* 19 */,
-/* 20 */,
-/* 21 */,
-/* 22 */,
-/* 23 */,
-/* 24 */,
-/* 25 */,
-/* 26 */,
-/* 27 */,
-/* 28 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(29)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(31),
-	  /* template */
-	  __webpack_require__(37),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-4dcf7d1a",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/countdown.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] countdown.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-4dcf7d1a", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-4dcf7d1a", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 29 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(30);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("6d4ed708", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-4dcf7d1a\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./countdown.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-4dcf7d1a\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./countdown.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 30 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.ctno1[data-v-4dcf7d1a] {\n  border-radius: 8;\n  padding-top: 6;\n  padding-bottom: 6;\n  padding-right: 4;\n  padding-left: 4;\n  margin-left: 2;\n  margin-right: 2;\n  background-color: rgb(242, 222, 222);\n  color: rgb(169, 68, 66);\n}\n.ctno2[data-v-4dcf7d1a] {\n  border-radius: 8;\n  padding-top: 30;\n  padding-bottom: 30;\n  padding-left: 16;\n  padding-right: 16;\n  background-color: rgb(217, 237, 247);\n  color: rgb(49, 112, 143);\n  text-align: center;\n  font-size: 40;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 31 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      countdown1: {
-	        remain: 5000,
-	        time: {
-	          D: '0',
-	          hh: '00',
-	          mm: '00',
-	          ss: '00'
-	        }
-	      },
-	      countdown2: {
-	        remain: 5000,
-	        time: {
-	          MM: '0',
-	          ss: '0'
-	        }
-	      }
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9),
-	    countdown: __webpack_require__(32)
-	  },
-	  methods: {
-	    tick: function tick(e, k) {
-	      this[k].time = JSON.parse(JSON.stringify(e));
-	    }
-	  }
-	};
-
-/***/ }),
-/* 32 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(33)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(35),
-	  /* template */
-	  __webpack_require__(36),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-3d32dd9f",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/countdown.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] countdown.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-3d32dd9f", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-3d32dd9f", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 33 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(34);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("0d2f731b", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3d32dd9f\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./countdown.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3d32dd9f\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./countdown.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 34 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.wrap[data-v-3d32dd9f] {\n  overflow: hidden;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 35 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	function format(str) {
-	  if (str.length >= 2) {
-	    return str;
-	  } else {
-	    return '0' + str;
-	  }
-	}
-
-	function getTime(target, now) {
-	  var remain = parseInt((target - now) / 1000);
-	  var D = String(parseInt(remain / 86400));
-	  var DD = format(D);
-	  var h = String(parseInt((remain - parseInt(D) * 86400) / 3600));
-	  var hh = format(h);
-	  var H = String(parseInt(remain / 3600));
-	  var HH = format(H);
-	  var m = String(parseInt((remain - parseInt(H) * 3600) / 60));
-	  var mm = format(m);
-	  var M = String(parseInt(remain / 60));
-	  var MM = format(M);
-	  var s = String(remain - parseInt(M) * 60);
-	  var ss = format(s);
-	  var S = String(remain);
-	  var SS = format(S);
-	  return {
-	    D: D, DD: DD,
-	    h: h, hh: hh,
-	    H: H, HH: HH,
-	    m: m, mm: mm,
-	    M: M, MM: MM,
-	    s: s, ss: ss,
-	    S: S, SS: SS
-	  };
-	}
-
-	module.exports = {
-	  props: {
-	    remain: {
-	      default: 0
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      now: 0,
-	      target: 0,
-	      outofview: false
-	    };
-	  },
-	  created: function created() {
-	    this.now = Date.now();
-	    this.target = this.now + this.remain * 1000;
-	    if (this.remain > 0) {
-	      this.run();
-	    }
-	  },
-	  methods: {
-	    run: function run() {
-	      if (!this.outofview) {
-	        this.now = Date.now();
-	      }
-	      var time = getTime(this.target, this.now);
-	      if (this.target >= this.now) {
-	        this.$emit('tick', time);
-	      } else {
-	        this.$emit('alarm', time);
-	        return;
-	      }
-	      setTimeout(this.run.bind(this), 1000);
-	    },
-	    appeared: function appeared() {
-	      this.outofview = false;
-	    },
-	    disappeared: function disappeared() {
-	      this.outofview = true;
-	    }
-	  }
-	};
-
-/***/ }),
-/* 36 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "overflow": "hidden",
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "appear": _vm.appeared,
-	      "disappear": _vm.disappeared
-	    }
-	  }, [_vm._t("default")], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-3d32dd9f", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 37 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Countdown",
-	      "type": "primary"
-	    }
-	  }, [_c('countdown', {
-	    staticStyle: _vm.$processStyle({
-	      "width": "750",
-	      "margin-top": "20",
-	      "margin-bottom": "20"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "remain": _vm.countdown1.remain
-	    },
-	    on: {
-	      "tick": function($event) {
-	        _vm.tick($event, 'countdown1')
-	      }
-	    }
-	  }, [_c('text', {
-	    staticClass: "ctno1",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.countdown1.time.D))]), _vm._v(" "), _c('text', {
-	    staticClass: "ctno1",
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#FFFFFF",
-	      "color": "#AAAAAA"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("day(s)")]), _vm._v(" "), _c('text', {
-	    staticClass: "ctno1",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.countdown1.time.hh))]), _vm._v(" "), _c('text', {
-	    staticClass: "ctno1",
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#FFFFFF",
-	      "color": "#AAAAAA"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("hour(s)")]), _vm._v(" "), _c('text', {
-	    staticClass: "ctno1",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.countdown1.time.mm))]), _vm._v(" "), _c('text', {
-	    staticClass: "ctno1",
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#FFFFFF",
-	      "color": "#AAAAAA"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("minute(s)")]), _vm._v(" "), _c('text', {
-	    staticClass: "ctno1",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.countdown1.time.ss))]), _vm._v(" "), _c('text', {
-	    staticClass: "ctno1",
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#FFFFFF",
-	      "color": "#AAAAAA"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("second(s)")])]), _vm._v(" "), _c('countdown', {
-	    staticStyle: _vm.$processStyle({
-	      "width": "600"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "remain": _vm.countdown2.remain
-	    },
-	    on: {
-	      "tick": function($event) {
-	        _vm.tick($event, 'countdown2')
-	      }
-	    }
-	  }, [_c('text', {
-	    staticClass: "ctno2",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.countdown2.time.MM))]), _vm._v(" "), _c('text', {
-	    staticClass: "ctno2",
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#FFFFFF",
-	      "color": "#AAAAAA"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(":")]), _vm._v(" "), _c('text', {
-	    staticClass: "ctno2",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.countdown2.time.ss))])])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-4dcf7d1a", module.exports)
-	  }
-	}
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/image.js b/src/main/assets/vue-web/vue/components/image.js
deleted file mode 100644
index 6d4de61..0000000
--- a/src/main/assets/vue-web/vue/components/image.js
+++ /dev/null
@@ -1,1144 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(38)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-/* 1 */,
-/* 2 */,
-/* 3 */,
-/* 4 */
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-/* 8 */,
-/* 9 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 14 */,
-/* 15 */,
-/* 16 */,
-/* 17 */,
-/* 18 */,
-/* 19 */,
-/* 20 */,
-/* 21 */,
-/* 22 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(23)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(25),
-	  /* template */
-	  __webpack_require__(26),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-f15788ee",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.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] tip.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-f15788ee", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-f15788ee", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 23 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(24);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("b14ba53e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 24 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.tip[data-v-f15788ee] {\n  padding-left: 36px;\n  padding-right: 36px;\n  padding-top: 36px;\n  padding-bottom: 36px;\n  border-radius: 10px;\n}\n.tip-txt[data-v-f15788ee]{\n  font-size: 28px;\n}\n.tip-success[data-v-f15788ee] {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.tip-txt-success[data-v-f15788ee] {\n  color: #3c763d;\n}\n.tip-info[data-v-f15788ee] {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.tip-txt-info[data-v-f15788ee] {\n  color: #31708f;\n}\n.tip-warning[data-v-f15788ee] {\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.tip-txt-warning[data-v-f15788ee] {\n  color: #8a6d3b;\n}\n.tip-danger[data-v-f15788ee] {\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.tip-txt-danger[data-v-f15788ee] {\n  color: #a94442;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 25 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-/* 26 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-f15788ee", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 27 */,
-/* 28 */,
-/* 29 */,
-/* 30 */,
-/* 31 */,
-/* 32 */,
-/* 33 */,
-/* 34 */,
-/* 35 */,
-/* 36 */,
-/* 37 */,
-/* 38 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(39)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(41),
-	  /* template */
-	  __webpack_require__(42),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-1291d6c6",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/image.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] image.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-1291d6c6", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-1291d6c6", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 39 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(40);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("3a490f10", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-1291d6c6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./image.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-1291d6c6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./image.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 40 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.img[data-v-1291d6c6] {\n  margin-bottom: 20px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 41 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      img: '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg'
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9),
-	    tip: __webpack_require__(22)
-	  }
-	};
-
-/***/ }),
-/* 42 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "width x height",
-	      "type": "primary"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-bottom": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "warning",
-	      "value": "Weex screen width is 750"
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle({
-	      "width": "300px",
-	      "height": "300px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.img
-	    }
-	  }), _vm._v(" "), _c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle({
-	      "width": "200px",
-	      "height": "200px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.img
-	    }
-	  }), _vm._v(" "), _c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle({
-	      "width": "50px",
-	      "height": "50px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.img
-	    }
-	  })])], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "GIF Animation",
-	      "type": "primary"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-bottom": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "warning",
-	      "value": "Depanding on Native ImageSDK"
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle({
-	      "width": "96px",
-	      "height": "96px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "https://gtd.alicdn.com/tps/i4/T1HcvHXd4nXXb6ROYh-48-48.gif"
-	    }
-	  }), _vm._v(" "), _c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle({
-	      "width": "68px",
-	      "height": "68px",
-	      "margin-left": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "https://gw.alicdn.com/tps/TB1El.mKXXXXXXyapXXXXXXXXXX-34-34.gif"
-	    }
-	  })])], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Base64",
-	      "type": "primary"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-bottom": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "warning",
-	      "value": "Depanding on Native ImageSDK"
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle({
-	      "width": "96px",
-	      "height": "96px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAMAAABgOjJdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1QTFRFhomSb3J8XGBrdnqDgYWNlJefV1tmfoGKU1diT1NfgISNgoWOYmZwio2Vi4+Wc3eAkJObZGhzUlZiaGt2U1djfYCKZGdyhYiQeHyFio6VgYWOVVllbHB6XWFsY2ZxaWx3jZCYXmFsfYCJcnZ/UVVham54V1tng4aPb3N8WV1pX2JtZWl0YWVvVlpmiYyUWVxohomRd3uEdHiBeX2GZ2t1hIeQVFhkf4OMbnJ8fYGKdnqEb3N9kJScY2dycnaAjpKZdHeBjpKajI+Yc3eBhYiRf4KLXmFtio6Wi4+XjZCZkJSbkZScjI+XlJifTlJe+rAZcwAAAZBJREFUeNp0lOeWgjAQhSdUBQRRbFjX7tpW3XUt23tL3v9xNigJIHh/zRk+5iR3ZgIkULWmwgv+A7VWDWWBR/nSt2gLUzIVbLH1lo8RRW1wEfqxPtCKUaKTMUhURuUhTIi6Q07l6LuAEFdpEld6tWNEx00CKKJ3jsR1xSHJcj4bB+LmkpxT49Yj8mqQUVBBciUk8ITepESJ+5AqY1+uwny5IjDPcADoN0BIwjLOsjKZOewtbi/9fvi338a44CetIai2H/cokPLj9tfEj2wVzD4rIWMlfpu+CXc5Pw4qh5X7AUw4gZIswUENGT8lAN1fMBVeAxIIxYR3Nin0imOe52emdxkyP8aY+0S9Y2d63cNoxvACRTaeI70slst+cjYCAnXmuuS1RKKmy1hKBX0hzaC3KOsxsmz2Ir2NzMcEbVCo+cf5oDOWOzNAucpxxoglnZlT1+KzXk4kymKwL4ttN+73dhHeuWV85zLL073Vw3v7MdDuE3a/JRrCmqwFQ2yV8gmvg/d+aPCMH0GLvB//AgwAo1MTpxsaxVoAAAAASUVORK5CYII="
-	    }
-	  }), _vm._v(" "), _c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle({
-	      "width": "68px",
-	      "height": "68px",
-	      "margin-left": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "data:image/gif;base64,R0lGODlhIgAiANU7AMvLy83Nzdra2srKysnJyejo6MbGxtzc3M7Ozuzs7NTU1N3d3fz8/NfX1/j4+Ovr6+/v79DQ0Obm5v39/d/f3/f398/Pz9vb2+np6fn5+f7+/tXV1fX19dnZ2erq6tHR0fb29sjIyMfHx+Li4vLy8u7u7ufn5/r6+uPj49bW1tPT09LS0sTExPT09ODg4O3t7eHh4eTk5MXFxd7e3vHx8fPz8/Dw8OXl5djY2P///8zMzP///wAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Q0QxODlDNENEOEQxMUUzOEIzM0I1ODVGNjU1MjBBQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Q0QxODlDNUNEOEQxMUUzOEIzM0I1ODVGNjU1MjBBQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDRDE4OUMyQ0Q4RDExRTM4QjMzQjU4NUY2NTUyMEFCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDRDE4OUMzQ0Q4RDExRTM4QjMzQjU4NUY2NTUyMEFCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQAAOwAsAAAAACIAIgAABv/AnXBIFDIEnxmoyGw6hw6LTrdKPK9PhmI6lWC/xQN3agWDMWNdhDTJmZ+gS1oXUDUoD8dbOHk05oAIHS8aYDRbgIlTDTVXGiiKkVwFTgwdkpg6GE1ymZIRJUUjnpkURBCkmQJDDBueAQGJACEAOqtCCaQhBgOAAxEAAAtCGQKeBAAIyGkiFzk3Ii64UpghCg45EstTAAYQOS0DMUKjmLMPOTkVAQRc3d8cAZQ7YpgDAzbpHDrt3AYlOTggeCDEmL0B3wLyc+ctBwgEHgpmupdwXz8dAGTAC2BCCIWJBACqYzfGwIEcHkSM21EgFiYRC9I9uDcm2IoAAGAIaYFIEgBkAh8UBJvTbUCAYUIkkDLAwiggWLagREiF6ZaQAlQlIR3SKeucAJuITLjkNc2CE0yOlOWiIsOTAgjKNnB7pYKLuKQimJhgxkEBJC7nWFBwwAPaPTs0kJBwIMWGDSkaHECRoMKTIAAh+QQFAAA7ACwPAA0AEgAJAAAGRMCdUKcTGo3E4jF5RDKHSaUzCdtFn9ar5IrVBUQsA+JBDBkMISuSIJAsdgkAgFIojHaDpm3nOJKEFQFpTTsgUi+EiUJBACH5BAUAADsALA8AEQASAAgAAAYfQJ1wSCzqEA+jcmh5LZeWxFOJ8EyVkqsRpi0uukRBEAAh+QQFAAA7ACwPABEAEgAIAAAGWcCdcEgUBkQsAzFkMISKO4JAskAkAABKoTDaDYYAgy3nQHgGA1IuVwk8hQAZJAfSmQaE17pNIBoOOR4iMTsiC2sPaERYKwEAcAQfClhQYQMBfiyXUDsBmDtBACH5BAUAADsALA8ADQASAAkAAAZRwJ1wSBwCAMVdYJkMhGSiYYDAYhmSIVyJQnDtCApTYXY0yiC51iAGCD1yucrUaEBzAoXBwAbnfOklOX4PemiCf0QQOyCJQhw6BEk7d0MlkpdBACH5BAUAADsALBAADQAQAAQAAAYmwN0uEBAajyGAMWQYHIW6QQQA0O0ACILyKLrkbqLQzpGTEJ6GYxAAIfkEBQAAOwAsEAANABAABAAABiTA3U6nExqPgKIwQDwuQzKRLrBjsQxKYwhXohAIO9ODAnDKjkEAIfkEBQAAOwAsDwANABIACQAABkPAnXBIHOp0xR0yqTwum86k8wiDTo1TnSQbFeoCIpYB8TiGDIaQ0kgQSBa7BABAKRRGu0HRtnMQSUIVAWpJIE8vTIlBACH5BAUAADsALA8AEQASAAgAAAYfQJ1wSCzqEA+jcmh5LZeWxFOJ8EyVkqsRpi0uukRBEAAh+QQFAAA7ACwPABEAEgAIAAAGWcCdcEgUBkQsAzFkMISKO4JAskAkAABKoTDaDYYAgy3nQHgGA1IuVwk8hQAZJAfSmQaE17pNIBoOOR4iMTsiC2sPaERYKwEAcAQfClhQYQMBfiyXUDsBmDtBACH5BAUAADsALA8ADQASAAkAAAZQwJ1wSBwCAMVdICkMhGSiYYDAYhmSIVyJQnDtCArTg3I0yiC51iAGCD1yucrUaEBzAoXBwAbnfOklOX4PemiCf0QQOyCJQhw6BEx3QyVMlkEAIfkEBWQAOwAsEAANABAABAAABibA3S4QEBqPIYAxZBgchbpBBADQ7QAIgvIouuRuotDOkZMQnoZjEAA7"
-	    }
-	  })])], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "resize",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "resize=stretch(default) 600 x 200 "
-	    }
-	  }, [_c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle({
-	      "width": "600px",
-	      "height": "200px",
-	      "border-style": "solid",
-	      "border-width": "1px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.img,
-	      "resize": "stretch"
-	    }
-	  })]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "resize=contain 600 x 200 "
-	    }
-	  }, [_c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle({
-	      "width": "600px",
-	      "height": "200px",
-	      "border-style": "solid",
-	      "border-width": "1px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.img,
-	      "resize": "contain"
-	    }
-	  })]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "resize=cover 600 x 200"
-	    }
-	  }, [_c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle({
-	      "width": "600px",
-	      "height": "200px",
-	      "border-style": "solid",
-	      "border-width": "1px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.img,
-	      "resize": "cover"
-	    }
-	  })])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-1291d6c6", module.exports)
-	  }
-	}
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/input.js b/src/main/assets/vue-web/vue/components/input.js
deleted file mode 100644
index 7a08db8..0000000
--- a/src/main/assets/vue-web/vue/components/input.js
+++ /dev/null
@@ -1,1283 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(43)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 43:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(44)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(46),
-	  /* template */
-	  __webpack_require__(47),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-de6618e8",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/input.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] input.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-de6618e8", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-de6618e8", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 44:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(45);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("ab21e8f8", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-de6618e8\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./input.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-de6618e8\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./input.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 45:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.input[data-v-de6618e8] {\n  font-size: 60px;\n  height: 80px;\n  width: 750px;\n}\n.button[data-v-de6618e8] {\n  font-size: 36;\n  width: 200;\n  color: #41B883;\n  text-align: center;\n  padding-top: 10;\n  padding-bottom: 10;\n  border-width: 2;\n  border-style: solid;\n  margin-right: 20;\n  border-color: rgb(162, 217, 192);\n  background-color: rgba(162, 217, 192, 0.2);\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 46:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      txtInput: '',
-	      txtChange: '',
-	      txtReturnType: '',
-	      txtSelection: '',
-	      autofocus: false
-	    };
-	  },
-	  methods: {
-	    ready: function ready() {
-	      var self = this;
-	      setTimeout(function () {
-	        self.autofocus = true;
-	      }, 1000);
-	    },
-	    onchange: function onchange(event) {
-	      this.txtChange = event.value;
-	      console.log('onchange', event.value);
-	    },
-	    onreturn: function onreturn(event) {
-	      this.txtReturnType = event.returnKeyType;
-	      console.log('onreturn', event.type);
-	    },
-	    oninput: function oninput(event) {
-	      this.txtInput = event.value;
-	      console.log('oninput', event.value);
-	    },
-	    focus: function focus() {
-	      this.$refs['input1'].focus();
-	    },
-	    blur: function blur() {
-	      this.$refs['input1'].blur();
-	    },
-	    setRange: function setRange() {
-	      console.log(this.$refs["inputselection"]);
-	      this.$refs["inputselection"].setSelectionRange(2, 6);
-	    },
-	    getSelectionRange: function getSelectionRange() {
-	      console.log(this.$refs["inputselection"]);
-	      var self = this;
-	      this.$refs["inputselection"].getSelectionRange(function (e) {
-	        self.txtSelection = e.selectionStart + '-' + e.selectionEnd;
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 47:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('div', [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-size": "40px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("oninput: " + _vm._s(_vm.txtInput))]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-size": "40px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("onchange: " + _vm._s(_vm.txtChange))]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-size": "40px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("onreturntype: " + _vm._s(_vm.txtReturnType))]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-size": "40px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("selection: " + _vm._s(_vm.txtSelection))])]), _vm._v(" "), _c('scroller', [_c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input type = text")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "Input Text",
-	      "autofocus": true,
-	      "value": ""
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input type = password")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "password",
-	      "placeholder": "Input Password"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input type = url")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "url",
-	      "placeholder": "Input URL"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input type = email")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "email",
-	      "placeholder": "Input Email"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input type = tel")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "tel",
-	      "placeholder": "Input Tel"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input type = time")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "time",
-	      "placeholder": "Input Time"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input type = number")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "number",
-	      "placeholder": "Input number"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input type = date")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "date",
-	      "placeholder": "Input Date",
-	      "max": "2017-12-12",
-	      "min": "2015-01-01"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input return-key-type = default")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "return-key-type": "default"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input return-key-type = go")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "return-key-type": "go"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input return-key-type = next")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "return-key-type": "next"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input return-key-type = search")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "return-key-type": "search"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input return-key-type = send")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "return-key-type": "send"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input return-key-type = done")])]), _vm._v(" "), _c('input', {
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "return-key-type": "done"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("function focus() & blur()")])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row",
-	      "margin-bottom": "16px",
-	      "justify-content": "space-between"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "button",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "Focus",
-	      "type": "primary"
-	    },
-	    on: {
-	      "click": _vm.focus
-	    }
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "button",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "Blur",
-	      "type": "primary"
-	    },
-	    on: {
-	      "click": _vm.blur
-	    }
-	  })]), _vm._v(" "), _c('input', {
-	    ref: "input1",
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "Input1",
-	      "value": ""
-	    }
-	  })]), _vm._v(" "), _c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80",
-	      "padding": "20",
-	      "color": "#FFFFFF"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("input selection")])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row",
-	      "margin-bottom": "16px",
-	      "justify-content": "space-between"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "button",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "setRange",
-	      "type": "primary"
-	    },
-	    on: {
-	      "click": _vm.setRange
-	    }
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "button",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "getSelectionRange",
-	      "type": "primary"
-	    },
-	    on: {
-	      "click": _vm.getSelectionRange
-	    }
-	  })]), _vm._v(" "), _c('input', {
-	    ref: "inputselection",
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "value": "123456789"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-de6618e8", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/list.js b/src/main/assets/vue-web/vue/components/list.js
deleted file mode 100644
index e1e9797..0000000
--- a/src/main/assets/vue-web/vue/components/list.js
+++ /dev/null
@@ -1,705 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(48)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 48:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(49)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(51),
-	  /* template */
-	  __webpack_require__(52),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-c84ace68",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/list.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] list.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-c84ace68", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-c84ace68", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 49:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(50);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("415fe453", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-c84ace68\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./list.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-c84ace68\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./list.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 50:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.list[data-v-c84ace68] {\n  height:850px\n}\n.count[data-v-c84ace68] {\n  font-size: 48px;\n  margin:10px;\n}\n.indicator[data-v-c84ace68] {\n  height: 40px;\n  width: 40px;\n  color:#45b5f0;\n}\n.row[data-v-c84ace68] {\n  width: 750px;\n}\n.item[data-v-c84ace68] {\n  justify-content: center;\n  border-bottom-width: 2px;\n  border-bottom-color: #c0c0c0;\n  height: 100px;\n  padding:20px;\n}\n.item[data-v-c84ace68]:active {\n   background-color: #00BDFF;\n}\n.item-title[data-v-c84ace68] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 51:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  methods: {
-	    onappear: function onappear(idx, e) {
-	      var appearId = this.rows[idx].id;
-	      console.log('+++++', appearId);
-	      var appearIds = this.appearIds;
-	      appearIds.push(appearId);
-	      this.getMinAndMaxIds(appearIds);
-	    },
-	    ondisappear: function ondisappear(idx, e) {
-	      var disAppearId = this.rows[idx].id;
-	      console.log('+++++', disAppearId);
-	      var appearIds = this.appearIds;
-	      var index = appearIds.indexOf(disAppearId);
-	      if (index > -1) {
-	        appearIds.splice(index, 1);
-	      }
-	      this.getMinAndMaxIds(appearIds);
-	    },
-	    getMinAndMaxIds: function getMinAndMaxIds(appearIds) {
-	      appearIds.sort(function (a, b) {
-	        return a - b;
-	      });
-	      this.appearIds = appearIds;
-	      this.appearMax = appearIds[appearIds.length - 1];
-	      this.appearMin = appearIds[0];
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      appearMin: 1,
-	      appearMax: 1,
-	      appearIds: [],
-	      rows: [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }, { id: 8 }, { id: 9 }, { id: 10 }, { id: 11 }, { id: 12 }, { id: 13 }, { id: 14 }, { id: 15 }, { id: 16 }, { id: 17 }, { id: 18 }, { id: 19 }, { id: 20 }, { id: 21 }, { id: 22 }, { id: 23 }, { id: 24 }, { id: 25 }, { id: 26 }, { id: 27 }, { id: 28 }, { id: 29 }]
-	    };
-	  }
-	};
-
-/***/ }),
-
-/***/ 52:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('list', {
-	    staticClass: "list",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, _vm._l((_vm.rows), function(v, i) {
-	    return _c('cell', {
-	      key: i,
-	      staticClass: "row",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "append": "tree",
-	        "index": i
-	      },
-	      on: {
-	        "appear": function($event) {
-	          _vm.onappear(i, $event)
-	        },
-	        "disappear": function($event) {
-	          _vm.ondisappear(i, $event)
-	        }
-	      }
-	    }, [_c('div', {
-	      staticClass: "item",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('text', {
-	      staticClass: "item-title",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v("row " + _vm._s(v.id))])])])
-	  })), _vm._v(" "), _c('text', {
-	    staticClass: "count",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": 'Appear items: ' + _vm.appearMin + ' ~ ' + _vm.appearMax
-	    }
-	  })], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-c84ace68", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/marquee.js b/src/main/assets/vue-web/vue/components/marquee.js
deleted file mode 100644
index 13bc55b..0000000
--- a/src/main/assets/vue-web/vue/components/marquee.js
+++ /dev/null
@@ -1,1034 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(53)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-/* 1 */,
-/* 2 */,
-/* 3 */,
-/* 4 */
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-/* 8 */,
-/* 9 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 14 */,
-/* 15 */,
-/* 16 */,
-/* 17 */,
-/* 18 */,
-/* 19 */,
-/* 20 */,
-/* 21 */,
-/* 22 */,
-/* 23 */,
-/* 24 */,
-/* 25 */,
-/* 26 */,
-/* 27 */,
-/* 28 */,
-/* 29 */,
-/* 30 */,
-/* 31 */,
-/* 32 */,
-/* 33 */,
-/* 34 */,
-/* 35 */,
-/* 36 */,
-/* 37 */,
-/* 38 */,
-/* 39 */,
-/* 40 */,
-/* 41 */,
-/* 42 */,
-/* 43 */,
-/* 44 */,
-/* 45 */,
-/* 46 */,
-/* 47 */,
-/* 48 */,
-/* 49 */,
-/* 50 */,
-/* 51 */,
-/* 52 */,
-/* 53 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(54),
-	  /* template */
-	  __webpack_require__(60),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/marquee.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] marquee.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-d0289538", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-d0289538", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 54 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      marquee: {
-	        height: 30,
-	        duration: 1500,
-	        interval: 2000,
-	        list: [{ text: 'Introducing Bots on Messenger' }, { text: 'Capturing 3D 360-Stereo VR Video' }, { text: 'The Future of Video on Facebook' }, { text: 'Announcing Vue.js 2.0' }, { text: 'Not Your Average Virtual-DOM' }, { text: 'Templates, JSX, or Hyperscript?' }]
-	      }
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9),
-	    marquee: __webpack_require__(55)
-	  },
-	  methods: {
-	    marqueeChange: function marqueeChange(e) {
-	      console.log(e);
-	    }
-	  }
-	};
-
-/***/ }),
-/* 55 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(56)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(58),
-	  /* template */
-	  __webpack_require__(59),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-58176c90",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/marquee.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] marquee.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-58176c90", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-58176c90", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 56 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(57);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("5521c87a", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-58176c90\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./marquee.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-58176c90\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./marquee.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 57 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.wrap[data-v-58176c90] {\n  overflow: hidden;\n  position: relative;\n}\n.anim[data-v-58176c90] {\n  flex-direction: column;\n  position: absolute;\n  transform: translateY(0) translateZ(0);\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 58 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var _animation = weex.requireModule('animation');
-
-	module.exports = {
-	  props: {
-	    step: { default: 0 },
-	    count: { default: 0 },
-	    index: { default: 1 },
-	    duration: { default: 0 },
-	    interval: { default: 0 },
-	    outofview: { default: false }
-	  },
-	  created: function created() {
-	    if (this.interval > 0 && this.step > 0 && this.duration > 0) {
-	      this.run();
-	    }
-	  },
-	  methods: {
-	    run: function run() {
-	      if (this.outofview) {
-	        setTimeout(this.run.bind(this), this.interval);
-	      } else {
-	        setTimeout(function () {
-	          this.animation(this.run.bind(this));
-	        }.bind(this), this.interval);
-	      }
-	    },
-	    animation: function animation(cb) {
-	      var offset = -this.step * this.index;
-	      _animation.transition(this.$refs.anim, {
-	        styles: {
-	          transform: 'translateY(' + offset + 'px) translateZ(0)'
-	        },
-	        timingFunction: 'ease',
-	        duration: this.duration
-	      }, function () {
-	        this.index = (this.index + 1) % this.count;
-	        this.$emit('change', {
-	          index: this.index,
-	          count: this.count
-	        });
-	        cb && cb();
-	      }.bind(this));
-	    },
-	    appeared: function appeared() {
-	      this.outofview = false;
-	    },
-	    disappeared: function disappeared() {
-	      this.outofview = true;
-	    }
-	  }
-	};
-
-/***/ }),
-/* 59 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "wrap",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "appear": _vm.appeared,
-	      "disappear": _vm.disappeared
-	    }
-	  }, [_c('div', {
-	    ref: "anim",
-	    staticClass: "anim",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-58176c90", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 60 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Marquee",
-	      "type": "primary"
-	    }
-	  }, [_c('marquee', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      width: 700,
-	      height: _vm.marquee.height * 2,
-	      backgroundColor: 'rgb(223, 240, 216)',
-	      borderRadius: 8,
-	      paddingLeft: 10,
-	      paddingRight: 10
-	    })),
-	    attrs: {
-	      "step": _vm.marquee.height * 2,
-	      "count": _vm.marquee.list.length,
-	      "interval": _vm.marquee.interval,
-	      "duration": _vm.marquee.duration
-	    },
-	    on: {
-	      "change": _vm.marqueeChange
-	    }
-	  }, _vm._l((_vm.marquee.list), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        height: _vm.marquee.height * _vm.marquee.length,
-	        paddingTop: _vm.marquee.height * 0.5,
-	        paddingBottom: _vm.marquee.height * 0.5,
-	        overflow: 'hidden'
-	      }))
-	    }, [_c('text', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        height: _vm.marquee.height,
-	        color: 'rgb(60, 118, 61)',
-	        fontSize: 28
-	      }))
-	    }, [_vm._v(_vm._s(item.text))])])
-	  }))], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-d0289538", module.exports)
-	  }
-	}
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/navigator.js b/src/main/assets/vue-web/vue/components/navigator.js
deleted file mode 100644
index 788148a..0000000
--- a/src/main/assets/vue-web/vue/components/navigator.js
+++ /dev/null
@@ -1,1537 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(61)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-/* 1 */,
-/* 2 */,
-/* 3 */,
-/* 4 */
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-/* 8 */,
-/* 9 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 14 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(15)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(17),
-	  /* template */
-	  __webpack_require__(18),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-33548b34",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.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] button.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-33548b34", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-33548b34", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 15 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(16);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("3204e9c3", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 16 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.btn[data-v-33548b34] {\n  margin-bottom: 0;\n  align-items: center;\n  justify-content: center;\n  border-width: 1px;\n  border-style: solid;\n  border-color: #333;\n\n  /*white-space: nowrap;*/\n  /*vertical-align: middle;*/\n  /*touch-action: manipulation;*/\n  /*cursor: pointer;*/\n  /*-webkit-user-select: none;*/\n  /*background-image: none;*/\n  /*border-image-source: initial;*/\n  /*border-image-slice: initial;*/\n  /*border-image-width: initial;*/\n  /*border-image-outset: initial;*/\n  /*border-image-repeat: initial;*/\n}\n.btn-txt[data-v-33548b34] {\n}\n\n/**TYPE**/\n.btn-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-primary[data-v-33548b34] {\n  background-color: rgb(40, 96, 144);\n  border-color: rgb(40, 96, 144);\n}\n.btn-success[data-v-33548b34] {\n  background-color: rgb(92, 184, 92);\n  border-color: rgb(76, 174, 76);\n}\n.btn-info[data-v-33548b34] {\n  background-color: rgb(91, 192, 222);\n  border-color: rgb(70, 184, 218);\n}\n.btn-warning[data-v-33548b34] {\n  background-color: rgb(240, 173, 78);\n  border-color: rgb(238, 162, 54);\n}\n.btn-danger[data-v-33548b34] {\n  background-color: rgb(217, 83, 79);\n  border-color: rgb(212, 63, 58);\n}\n.btn-link[data-v-33548b34] {\n  border-color: transparent;\n  border-radius: 0;\n}\n.btn-txt-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-txt-primary[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-success[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-info[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-warning[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-danger[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-link[data-v-33548b34] {\n  color: rgb(51, 122, 183);\n  /*font-weight: 400;*/\n}\n\n/**SIZE**/\n.btn-sz-large[data-v-33548b34] {\n  width: 300px;\n  height: 100px;\n  padding-top: 25px;\n  padding-bottom: 25px;\n  padding-left: 40px;\n  padding-right: 40px;\n  /*line-height: 1.33333;*/\n  border-radius: 15px;\n}\n.btn-sz-middle[data-v-33548b34] {\n  width: 240px;\n  height: 80px;\n  padding-top: 15px;\n  padding-bottom: 15px;\n  padding-left: 30px;\n  padding-right: 30px;\n  /*line-height: 1.42857;*/\n  border-radius: 10px;\n}\n.btn-sz-small[data-v-33548b34] {\n  width: 170px;\n  height: 60px;\n  padding-top: 12px;\n  padding-bottom: 12px;\n  padding-left: 25px;\n  padding-right: 25px;\n  /*line-height: 1.5;*/\n  border-radius: 7px;\n}\n.btn-txt-sz-large[data-v-33548b34] {\n  font-size: 45px;\n}\n.btn-txt-sz-middle[data-v-33548b34] {\n  font-size: 35px;\n}\n.btn-txt-sz-small[data-v-33548b34] {\n  font-size: 30px;\n}\n\n/*DISABLED*/\n.disabled[data-v-33548b34] {\n}\n\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 17 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-/* 18 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-33548b34", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 19 */,
-/* 20 */,
-/* 21 */,
-/* 22 */,
-/* 23 */,
-/* 24 */,
-/* 25 */,
-/* 26 */,
-/* 27 */,
-/* 28 */,
-/* 29 */,
-/* 30 */,
-/* 31 */,
-/* 32 */,
-/* 33 */,
-/* 34 */,
-/* 35 */,
-/* 36 */,
-/* 37 */,
-/* 38 */,
-/* 39 */,
-/* 40 */,
-/* 41 */,
-/* 42 */,
-/* 43 */,
-/* 44 */,
-/* 45 */,
-/* 46 */,
-/* 47 */,
-/* 48 */,
-/* 49 */,
-/* 50 */,
-/* 51 */,
-/* 52 */,
-/* 53 */,
-/* 54 */,
-/* 55 */,
-/* 56 */,
-/* 57 */,
-/* 58 */,
-/* 59 */,
-/* 60 */,
-/* 61 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(62),
-	  /* template */
-	  __webpack_require__(74),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/navigator.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] navigator.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-8f28dace", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-8f28dace", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 62 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var navigator = weex.requireModule('navigator');
-	var getBaseURL = __webpack_require__(63).getBaseURL;
-	module.exports = {
-	  data: function data() {
-	    return {
-	      navBarHeight: 88,
-	      title: 'Navigator',
-	      dir: 'examples',
-	      baseURL: '',
-	      subPath: weex.config.env.platform === 'Web' ? 'vue-web/' : ''
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9),
-	    navpage: __webpack_require__(64),
-	    button: __webpack_require__(14)
-	  },
-	  created: function created() {
-	    this.$getConfig(function (config) {
-	      var env = config.env;
-	      if (env.platform == 'iOS') {
-	        var scale = env.scale;
-	        var deviceWidth = env.deviceWidth / scale;
-	        this.navBarHeight = 64.0 * 750.0 / deviceWidth;
-	      }
-	    }.bind(this));
-	    this.baseURL = getBaseURL(this);
-	  },
-	  methods: {
-	    naviBarLeftItemClick: function naviBarLeftItemClick(e) {
-	      modal.toast({ message: 'naviBarLeftItemClick', duration: 2 });
-	    },
-	    naviBarRightItemClick: function naviBarRightItemClick(e) {
-	      modal.toast({ message: 'naviBarRightItemClick', duration: 2 });
-	    },
-	    push: function push() {
-	      var params = {
-	        'url': this.baseURL + this.subPath + 'vue/components/navigator.js?test=1',
-	        'animated': 'true'
-	      };
-	      navigator.push(params, function () {});
-	    },
-	    pop: function pop() {
-	      var params = {
-	        'url': this.baseURL + this.subPath + 'vue/components/navigator.js?test=1',
-	        'animated': 'true'
-	      };
-	      navigator.pop(params, function () {});
-	    }
-	  }
-	};
-
-/***/ }),
-/* 63 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-	/*
-	 * Licensed to the Apache Software Foundation (ASF) under one
-	 * or more contributor license agreements.  See the NOTICE file
-	 * distributed with this work for additional information
-	 * regarding copyright ownership.  The ASF licenses this file
-	 * to you under the Apache License, Version 2.0 (the
-	 * "License"); you may not use this file except in compliance
-	 * with the License.  You may obtain a copy of the License at
-	 *
-	 *   http://www.apache.org/licenses/LICENSE-2.0
-	 *
-	 * Unless required by applicable law or agreed to in writing,
-	 * software distributed under the License is distributed on an
-	 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	 * KIND, either express or implied.  See the License for the
-	 * specific language governing permissions and limitations
-	 * under the License.
-	 */
-	exports.getBaseURL = function (vm) {
-	  var bundleUrl = weex.config.bundleUrl;
-	  var nativeBase;
-	  var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/') >= 0;
-	  var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0;
-	  if (isAndroidAssets) {
-	    nativeBase = 'file://assets/';
-	  } else if (isiOSAssets) {
-	    // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    nativeBase = bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1);
-	  } else {
-	    var host = 'localhost:12580';
-	    var matches = /\/\/([^\/]+?)\//.exec(weex.config.bundleUrl);
-	    if (matches && matches.length >= 2) {
-	      host = matches[1];
-	    }
-	    nativeBase = 'http://' + host + '/' + vm.dir + '/build/';
-	  }
-	  var h5Base = './vue.html?page=./' + vm.dir + '/build/';
-	  // in Native
-	  var base = nativeBase;
-	  if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object') {
-	    // in Browser or WebView
-	    base = h5Base;
-	  }
-	  return base;
-	};
-
-/***/ }),
-/* 64 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(65)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(67),
-	  /* template */
-	  __webpack_require__(73),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-90cc82c0",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/navpage.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] navpage.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-90cc82c0", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-90cc82c0", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 65 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(66);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("2c1d71f9", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-90cc82c0\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./navpage.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-90cc82c0\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./navpage.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 66 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.wrapper[data-v-90cc82c0] {\n  position: absolute; \n  top: 0; \n  left: 0; \n  right: 0; \n  bottom: 0; \n  width: 750;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 67 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    navbar: __webpack_require__(68)
-	  },
-	  props: {
-	    dataRole: { default: 'navbar' },
-	    backgroundColor: { default: 'black' },
-	    height: { default: 88 },
-	    title: { default: "" },
-	    titleColor: { default: 'black' },
-	    rightItemSrc: { default: '' },
-	    rightItemTitle: { default: '' },
-	    rightItemColor: { default: 'black' },
-	    leftItemSrc: { default: '' },
-	    leftItemTitle: { default: '' },
-	    leftItemColor: { default: 'black' }
-	  },
-	  methods: {
-	    naviBarRightItemClick: function naviBarRightItemClick(e) {
-	      this.$emit('naviBarRightItemClick', e);
-	    },
-	    naviBarLeftItemClick: function naviBarLeftItemClick(e) {
-	      this.$emit('naviBarLeftItemClick', e);
-	    }
-	  }
-	};
-
-/***/ }),
-/* 68 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(69)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(71),
-	  /* template */
-	  __webpack_require__(72),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-1153e112",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/navbar.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] navbar.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-1153e112", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-1153e112", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 69 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(70);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("4c1a1466", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-1153e112\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./navbar.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-1153e112\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./navbar.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 70 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.container[data-v-1153e112] {\n  flex-direction: row; \n  position: fixed; \n  top: 0; \n  left: 0; \n  right: 0; \n  width: 750;\n}\n.right-text[data-v-1153e112] {\n  position: absolute; \n  bottom: 28; \n  right: 32; \n  text-align: right;\n  font-size: 32; \n  font-family: 'Open Sans', sans-serif;\n}\n.left-text[data-v-1153e112] {\n  position: absolute; \n  bottom: 28; \n  left :32; \n  text-align :left;  \n  font-size: 32; \n  font-family: 'Open Sans', sans-serif;\n}\n.center-text[data-v-1153e112] {\n  position: absolute; \n  bottom: 25; \n  left: 172; \n  right: 172;\n  text-align: center; \n  font-size: 36; \n  font-weight: bold;\n}\n.left-image[data-v-1153e112] {\n  position: absolute; \n  bottom: 20; \n  left: 28; \n  width: 50; \n  height: 50;\n}\n.right-image[data-v-1153e112] {\n  position: absolute; \n  bottom: 20; \n  right: 28; \n  width: 50; \n  height: 50;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 71 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    dataRole: { default: 'navbar' },
-	    //导航条背景色
-	    backgroundColor: { default: 'black' },
-	    //导航条高度
-	    height: { default: 88 },
-	    //导航条标题 
-	    title: { default: '' },
-	    //导航条标题颜色
-	    titleColor: { default: 'black' },
-	    //右侧按钮图片
-	    rightItemSrc: { default: '' },
-	    //右侧按钮标题
-	    rightItemTitle: { default: '' },
-	    //右侧按钮标题颜色
-	    rightItemColor: { default: 'black' },
-	    //左侧按钮图片
-	    leftItemSrc: { default: '' },
-	    //左侧按钮标题
-	    leftItemTitle: { default: '' },
-	    //左侧按钮颜色
-	    leftItemColor: { default: 'black' }
-	  },
-	  methods: {
-	    onclickrightitem: function onclickrightitem(e) {
-	      this.$emit('naviBarRightItemClick');
-	    },
-	    onclickleftitem: function onclickleftitem(e) {
-	      this.$emit('naviBarLeftItemClick');
-	    }
-	  }
-	};
-
-/***/ }),
-/* 72 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "container",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      height: _vm.height,
-	      backgroundColor: _vm.backgroundColor
-	    })),
-	    attrs: {
-	      "dataRole": _vm.dataRole
-	    }
-	  }, [(!_vm.rightItemSrc) ? _c('text', {
-	    staticClass: "right-text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      color: _vm.rightItemColor
-	    })),
-	    attrs: {
-	      "naviItemPosition": "right"
-	    },
-	    on: {
-	      "click": _vm.onclickrightitem
-	    }
-	  }, [_vm._v(_vm._s(_vm.rightItemTitle))]) : _vm._e(), _vm._v(" "), (_vm.rightItemSrc) ? _c('image', {
-	    staticClass: "right-image",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "naviItemPosition": "right",
-	      "src": _vm.rightItemSrc
-	    },
-	    on: {
-	      "click": _vm.onclickrightitem
-	    }
-	  }) : _vm._e(), _vm._v(" "), (!_vm.leftItemSrc) ? _c('text', {
-	    staticClass: "left-text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      color: _vm.leftItemColor
-	    })),
-	    attrs: {
-	      "naviItemPosition": "left"
-	    },
-	    on: {
-	      "click": _vm.onclickleftitem
-	    }
-	  }, [_vm._v(_vm._s(_vm.leftItemTitle))]) : _vm._e(), _vm._v(" "), (_vm.leftItemSrc) ? _c('image', {
-	    staticClass: "left-image",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "naviItemPosition": "left",
-	      "src": _vm.leftItemSrc
-	    },
-	    on: {
-	      "click": _vm.onclickleftitem
-	    }
-	  }) : _vm._e(), _vm._v(" "), _c('text', {
-	    staticClass: "center-text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      color: _vm.titleColor
-	    })),
-	    attrs: {
-	      "naviItemPosition": "center"
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-1153e112", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 73 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('navbar', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "dataRole": _vm.dataRole,
-	      "height": _vm.height,
-	      "backgroundColor": _vm.backgroundColor,
-	      "title": _vm.title,
-	      "titleColor": _vm.titleColor,
-	      "leftItemSrc": _vm.leftItemSrc,
-	      "leftItemTitle": _vm.leftItemTitle,
-	      "leftItemColor": _vm.leftItemColor,
-	      "rightItemSrc": _vm.rightItemSrc,
-	      "rightItemTitle": _vm.rightItemTitle,
-	      "rightItemColor": _vm.rightItemColor
-	    },
-	    on: {
-	      "naviBarRightItemClick": _vm.naviBarRightItemClick,
-	      "naviBarLeftItemClick": _vm.naviBarLeftItemClick
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      marginTop: _vm.height
-	    }))
-	  }, [_vm._t("default")], 2)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-90cc82c0", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 74 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('navpage', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "dataRole": "none",
-	      "height": _vm.navBarHeight,
-	      "title": _vm.title,
-	      "backgroundColor": "#ff5898",
-	      "titleColor": "white",
-	      "leftItemTitle": "More",
-	      "leftItemColor": "white",
-	      "rightItemSrc": "http://gtms02.alicdn.com/tps/i2/TB1ED7iMpXXXXXEXXXXWA_BHXXX-48-48.png"
-	    },
-	    on: {
-	      "naviBarLeftItemClick": _vm.naviBarLeftItemClick,
-	      "naviBarRightItemClick": _vm.naviBarRightItemClick
-	    }
-	  }, [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "push a new page"
-	    }
-	  }, [_c('button', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "primary",
-	      "size": "small",
-	      "value": "push"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.push($event)
-	      }
-	    }
-	  })]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "pop to the last page"
-	    }
-	  }, [_c('button', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "success",
-	      "size": "small",
-	      "value": "pop"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.pop($event)
-	      }
-	    }
-	  })])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-8f28dace", module.exports)
-	  }
-	}
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/scroller.js b/src/main/assets/vue-web/vue/components/scroller.js
deleted file mode 100644
index 2083f23..0000000
--- a/src/main/assets/vue-web/vue/components/scroller.js
+++ /dev/null
@@ -1,787 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(75)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 75:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(76)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(78),
-	  /* template */
-	  __webpack_require__(79),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-63f3f368",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/scroller.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] scroller.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-63f3f368", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-63f3f368", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 76:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(77);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("13a0a9ca", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-63f3f368\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./scroller.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-63f3f368\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./scroller.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 77:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.refresh-view[data-v-63f3f368] {\n  height: 120px;\n  width: 750px;\n  display: -ms-flex;\n  display: -webkit-flex;\n  display: flex;\n  -ms-flex-align: center;\n  -webkit-align-items: center;\n  -webkit-box-align: center;\n  align-items: center;\n}\n.refresh-arrow[data-v-63f3f368] {\n  font-size: 30px;\n  color: #45b5f0;\n}\n.loading-view[data-v-63f3f368] {\n  height: 80px;\n  width: 750px;\n  justify-content: center;\n  align-items: center;\n  background-color: #c0c0c0;\n}\n.indicator[data-v-63f3f368] {\n  height: 40px;\n  width: 40px;\n  color: #45b5f0;\n}\n.header[data-v-63f3f368] {\n  background-color: #45b5f0;\n  padding: 20px;\n  height: 88px;\n  justify-content: center;\n}\n.header-title[data-v-63f3f368] {\n  color: white;\n  font-weight: bold;\n}\n.item[data-v-63f3f368] {\n  justify-content: center;\n  border-bottom-width: 2px;\n  border-bottom-color: #c0c0c0;\n  height: 100px;\n  padding: 20px;\n}\n.item-title[data-v-63f3f368] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 78:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var dom = weex.requireModule('dom');
-	console.log(dom);
-	module.exports = {
-	  mounted: function mounted() {
-	    var result = dom.getComponentRect(this.$refs.scroller, function (option) {
-	      console.log('getComponentRect:', option);
-	    });
-	  },
-
-	  methods: {
-	    onrefresh: function onrefresh(e) {
-	      var self = this;
-	      self.refresh_display = 'show';
-	      setTimeout(function () {
-	        self.refresh_display = 'hide';
-	      }, 3000);
-	    },
-	    onloading: function onloading(e) {
-	      var self = this;
-	      self.loading_display = 'show';
-	      setTimeout(function () {
-	        self.loading_display = 'hide';
-	      }, 3000);
-	    },
-	    pullingdown: function pullingdown(e) {
-	      var dy = e.dy;
-	      var pullingDistance = e.pullingDistance;
-	      var viewHeight = e.viewHeight;
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      refresh_display: 'hide',
-	      loading_display: 'hide',
-	      sections: [{
-	        title: 'Header 1',
-	        items: [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }]
-	      }, {
-	        title: 'Header 2',
-	        items: [{ id: 6 }, { id: 7 }, { id: 8 }, { id: 9 }, { id: 10 }, { id: 11 }]
-	      }, {
-	        title: 'Header 3',
-	        items: [{ id: 6 }, { id: 7 }, { id: 8 }, { id: 9 }, { id: 10 }, { id: 11 }]
-	      }],
-	      moreSections: [{
-	        title: 'Header 3',
-	        items: [{ id: 12 }, { id: 13 }, { id: 14 }, { id: 15 }, { id: 16 }, { id: 17 }, { id: 18 }]
-	      }, {
-	        title: 'Header 4',
-	        items: [{ id: 19 }, { id: 20 }, { id: 21 }, { id: 22 }]
-	      }, {
-	        title: 'Header 5',
-	        items: [{ id: 23 }, { id: 24 }, { id: 25 }, { id: 26 }, { id: 27 }]
-	      }, {
-	        title: 'Header 6',
-	        items: [{ id: 28 }, { id: 29 }, { id: 30 }, { id: 31 }, { id: 32 }]
-	      }]
-	    };
-	  }
-	};
-
-/***/ }),
-
-/***/ 79:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', {
-	    ref: "scroller",
-	    staticClass: "list",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "append": "tree"
-	    }
-	  }, [_c('refresh', {
-	    staticClass: "refresh-view",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "display": _vm.refresh_display
-	    },
-	    on: {
-	      "refresh": _vm.onrefresh,
-	      "pullingdown": _vm.pullingdown
-	    }
-	  }, [_c('img', {
-	    ref: "roate",
-	    staticStyle: _vm.$processStyle({
-	      "width": "50px",
-	      "height": "50px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "id": "roate",
-	      "src": "http://gw.alicdn.com/bao/uploaded/TB1xDrVNFXXXXbEXFXXXXXXXXXX-48-48.png"
-	    }
-	  })]), _vm._v(" "), _vm._l((_vm.sections), function(sec, i) {
-	    return _c('div', {
-	      key: i,
-	      staticClass: "section",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', {
-	      staticClass: "header",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('text', {
-	      staticClass: "header-title",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(sec.title))])]), _vm._v(" "), _vm._l((sec.items), function(item) {
-	      return _c('div', {
-	        key: item.index,
-	        staticClass: "item",
-	        staticStyle: _vm.$processStyle(undefined),
-	        style: (_vm.$processStyle(undefined))
-	      }, [_c('text', {
-	        staticClass: "item-title",
-	        staticStyle: _vm.$processStyle(undefined),
-	        style: (_vm.$processStyle(undefined))
-	      }, [_vm._v("row " + _vm._s(item.id))])])
-	    })], 2)
-	  }), _vm._v(" "), _c('loading', {
-	    staticClass: "loading-view",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "display": _vm.loading_display
-	    },
-	    on: {
-	      "loading": _vm.onloading
-	    }
-	  }, [_c('loading-indicator', {
-	    staticStyle: _vm.$processStyle({
-	      "height": "60px",
-	      "width": "60px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1)], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-63f3f368", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/slider.js b/src/main/assets/vue-web/vue/components/slider.js
deleted file mode 100644
index ccc3ecc..0000000
--- a/src/main/assets/vue-web/vue/components/slider.js
+++ /dev/null
@@ -1,1496 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(80)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 80:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(81)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(83),
-	  /* template */
-	  __webpack_require__(94),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-7ab9ba0f",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/slider.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] slider.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-7ab9ba0f", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-7ab9ba0f", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 81:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(82);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("8670f880", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7ab9ba0f\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./slider.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7ab9ba0f\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./slider.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 82:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.body[data-v-7ab9ba0f] {\n  background-color: #ffffff;\n}\n.slider[data-v-7ab9ba0f] {\n  flex-direction: row;\n  /*margin-left: 18;*/\n  /*margin-right: 18;*/\n  width: 690px;\n  height: 360px;\n}\n.indicator[data-v-7ab9ba0f] {\n  position: absolute;\n  width: 690px;\n  height: 420px;\n  top: 140px;\n  left: 240px;\n  itemColor: #dddddd;\n  itemSelectedColor: rgb(40, 96, 144);\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 83:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var img0 = '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg';
-	var img1 = '//gw.alicdn.com/tps/i1/TB1M3sQMpXXXXakXXXXApNeJVXX-360-360.png';
-	module.exports = {
-	  data: function data() {
-	    return {
-	      eventCnt: 0,
-	      togglePlayMsg: 'pause',
-	      sliders: [{
-	        interval: 1000,
-	        autoPlay: true,
-	        sliderPages: [{
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }]
-	      }, {
-	        interval: 3000,
-	        autoPlay: true,
-	        sliderPages: [{
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }]
-	      }, {
-	        interval: 5000,
-	        autoPlay: true,
-	        sliderPages: [{
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }]
-	      }]
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9),
-	    sliderPage: __webpack_require__(84)
-	  },
-	  methods: {
-	    togglePlay: function togglePlay() {
-	      var autoPlay = this.sliders[0].autoPlay;
-	      autoPlay = !autoPlay;
-	      this.sliders[0].autoPlay = autoPlay;
-	      this.togglePlayMsg = autoPlay ? 'pause' : 'play';
-	    },
-	    handleSliderChange: function handleSliderChange() {
-	      var nowCnt = this.eventCnt + 1;
-	      this.eventCnt = nowCnt;
-	    },
-	    setInterval1: function setInterval1() {
-	      this.sliders[0].interval = 1000;
-	    },
-	    setInterval3: function setInterval3() {
-	      this.sliders[0].interval = 3000;
-	    },
-	    setInterval5: function setInterval5() {
-	      this.sliders[0].interval = 5000;
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 84:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(85)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(87),
-	  /* template */
-	  __webpack_require__(93),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-7b4f04e9",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/slider-page.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] slider-page.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-7b4f04e9", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-7b4f04e9", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 85:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(86);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("8235eece", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7b4f04e9\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./slider-page.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7b4f04e9\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./slider-page.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 86:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.slider-page[data-v-7b4f04e9] {\n  flex-direction: row;\n  justify-content: space-between;\n\n  width: 714px;\n  height: 420px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 87:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    items: { default: [] }
-	  },
-	  components: {
-	    sliderItem: __webpack_require__(88)
-	  }
-	};
-
-/***/ }),
-
-/***/ 88:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(89)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(91),
-	  /* template */
-	  __webpack_require__(92),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-e3778926",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/slider-item.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] slider-item.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-e3778926", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-e3778926", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 89:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(90);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("16b3a577", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-e3778926\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./slider-item.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-e3778926\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./slider-item.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 90:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.slider-item[data-v-e3778926] {\n  width: 348px;\n  height: 400px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 91:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    image: { default: '' },
-	    link: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 92:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('image', {
-	    staticClass: "slider-item",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.image
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-e3778926", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 93:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "slider-page",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, _vm._l((_vm.items), function(v, i) {
-	    return _c('slider-item', {
-	      key: i,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "image": v.image,
-	        "link": v.link
-	      }
-	    })
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-7b4f04e9", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 94:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', {
-	    staticClass: "body",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "auto-play",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "auto-play = false",
-	      "padding-body": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: "slider",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[1].interval,
-	      "autoPlay": "false"
-	    }
-	  }, [_c('indicator', {
-	    staticClass: "indicator",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _vm._l((_vm.sliders[1].sliderPages), function(v, i) {
-	    return _c('slider-page', {
-	      key: i,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "auto-play = true",
-	      "padding-body": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: "slider",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[0].interval,
-	      "autoPlay": _vm.sliders[0].autoPlay
-	    }
-	  }, [_c('indicator', {
-	    staticClass: "indicator",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _vm._l((_vm.sliders[0].sliderPages), function(v) {
-	    return _c('slider-page', {
-	      key: v.index,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)], 1)], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": 'Event, ' + _vm.eventCnt + ' change',
-	      "type": "primary"
-	    }
-	  }, [_c('slider', {
-	    staticClass: "slider",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[0].interval,
-	      "autoPlay": _vm.sliders[0].autoPlay
-	    },
-	    on: {
-	      "change": _vm.handleSliderChange
-	    }
-	  }, [_c('indicator', {
-	    staticClass: "indicator",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _vm._l((_vm.sliders[0].sliderPages), function(v) {
-	    return _c('slider-page', {
-	      key: v.index,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Indicator",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "default style",
-	      "padding-body": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: "slider",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[0].interval,
-	      "autoPlay": _vm.sliders[0].autoPlay
-	    },
-	    on: {
-	      "change": _vm.handleSliderChange
-	    }
-	  }, [_c('indicator', {
-	    staticClass: "indicator",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _vm._l((_vm.sliders[0].sliderPages), function(v) {
-	    return _c('slider-page', {
-	      key: v.index,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "width & height",
-	      "padding-body": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: "slider",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[0].interval,
-	      "autoPlay": _vm.sliders[0].autoPlay
-	    }
-	  }, [_c('indicator', {
-	    staticStyle: _vm.$processStyle({
-	      "itemColor": "#dddddd",
-	      "width": "714px",
-	      "height": "460px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _vm._l((_vm.sliders[0].sliderPages), function(v) {
-	    return _c('slider-page', {
-	      key: v.index,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "left & top",
-	      "padding-body": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: "slider",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[1].interval,
-	      "autoPlay": _vm.sliders[1].autoPlay
-	    }
-	  }, [_c('indicator', {
-	    staticClass: "indicator",
-	    staticStyle: _vm.$processStyle({
-	      "top": "-140px",
-	      "left": "-240px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _vm._l((_vm.sliders[1].sliderPages), function(v, i) {
-	    return _c('slider-page', {
-	      key: i,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "itemColor & itemSelectedColor",
-	      "padding-body": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: "slider",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[2].interval,
-	      "autoPlay": _vm.sliders[2].autoPlay
-	    }
-	  }, [_c('indicator', {
-	    staticClass: "indicator",
-	    staticStyle: _vm.$processStyle({
-	      "item-selected-color": "rgb(217, 83, 79)"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _vm._l((_vm.sliders[2].sliderPages), function(v) {
-	    return _c('slider-page', {
-	      key: v.index,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "itemSize",
-	      "padding-body": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: "slider",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[1].interval,
-	      "autoPlay": _vm.sliders[1].autoPlay
-	    }
-	  }, [_c('indicator', {
-	    staticStyle: _vm.$processStyle({
-	      "itemColor": "#dddddd",
-	      "item-size": "40px",
-	      "top": "140px",
-	      "left": "180px",
-	      "width": "700px",
-	      "height": "380px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _vm._l((_vm.sliders[1].sliderPages), function(v, i) {
-	    return _c('slider-page', {
-	      key: i,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)], 1)], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-7ab9ba0f", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/sliderinfinite.js b/src/main/assets/vue-web/vue/components/sliderinfinite.js
deleted file mode 100644
index 072ee5f..0000000
--- a/src/main/assets/vue-web/vue/components/sliderinfinite.js
+++ /dev/null
@@ -1,644 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(95)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 95:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(96)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(98),
-	  /* template */
-	  __webpack_require__(99),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-5ab99323",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/sliderinfinite.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] sliderinfinite.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-5ab99323", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-5ab99323", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 96:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(97);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("77579e94", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-5ab99323\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./sliderinfinite.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-5ab99323\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./sliderinfinite.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 97:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.image[data-v-5ab99323] {\n  width: 700px;\n  height: 300px;\n}\n.slider[data-v-5ab99323] {\n  margin-top: 25px;\n  margin-left: 25px;\n  width: 700px;\n  height: 300px;\n  border-width: 2px;\n  border-style: solid;\n  border-color: #41B883;\n}\n.frame[data-v-5ab99323] {\n  width: 700px;\n  height: 300px;\n  position: relative;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 98:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	Object.defineProperty(exports, "__esModule", {
-	  value: true
-	});
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	exports.default = {
-	  data: function data() {
-	    return {
-	      imageList: [{ src: 'https://gw.alicdn.com/tfs/TB1SA2wQXXXXXXDapXXXXXXXXXX-1400-600.png' }, { src: 'https://gw.alicdn.com/tfs/TB1KS_OQXXXXXcSXVXXXXXXXXXX-1400-600.png' }, { src: 'https://gw.alicdn.com/tfs/TB1Ez7XQXXXXXbNXXXXXXXXXXXX-1400-600.png' }, { src: 'https://gw.alicdn.com/tfs/TB1XLn6QXXXXXb2XpXXXXXXXXXX-1400-600.png' }]
-
-	    };
-	  }
-	};
-
-/***/ }),
-
-/***/ 99:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('slider', {
-	    staticClass: "slider",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "interval": "3000",
-	      "auto-play": "true"
-	    }
-	  }, _vm._l((_vm.imageList), function(img) {
-	    return _c('div', {
-	      staticClass: "frame",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('image', {
-	      staticClass: "image",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "resize": "cover",
-	        "src": img.src
-	      }
-	    })])
-	  }))], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-5ab99323", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/tabbar.js b/src/main/assets/vue-web/vue/components/tabbar.js
deleted file mode 100644
index 5fe793c..0000000
--- a/src/main/assets/vue-web/vue/components/tabbar.js
+++ /dev/null
@@ -1,1105 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(100)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 63:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-	/*
-	 * Licensed to the Apache Software Foundation (ASF) under one
-	 * or more contributor license agreements.  See the NOTICE file
-	 * distributed with this work for additional information
-	 * regarding copyright ownership.  The ASF licenses this file
-	 * to you under the Apache License, Version 2.0 (the
-	 * "License"); you may not use this file except in compliance
-	 * with the License.  You may obtain a copy of the License at
-	 *
-	 *   http://www.apache.org/licenses/LICENSE-2.0
-	 *
-	 * Unless required by applicable law or agreed to in writing,
-	 * software distributed under the License is distributed on an
-	 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	 * KIND, either express or implied.  See the License for the
-	 * specific language governing permissions and limitations
-	 * under the License.
-	 */
-	exports.getBaseURL = function (vm) {
-	  var bundleUrl = weex.config.bundleUrl;
-	  var nativeBase;
-	  var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/') >= 0;
-	  var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0;
-	  if (isAndroidAssets) {
-	    nativeBase = 'file://assets/';
-	  } else if (isiOSAssets) {
-	    // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    nativeBase = bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1);
-	  } else {
-	    var host = 'localhost:12580';
-	    var matches = /\/\/([^\/]+?)\//.exec(weex.config.bundleUrl);
-	    if (matches && matches.length >= 2) {
-	      host = matches[1];
-	    }
-	    nativeBase = 'http://' + host + '/' + vm.dir + '/build/';
-	  }
-	  var h5Base = './vue.html?page=./' + vm.dir + '/build/';
-	  // in Native
-	  var base = nativeBase;
-	  if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object') {
-	    // in Browser or WebView
-	    base = h5Base;
-	  }
-	  return base;
-	};
-
-/***/ }),
-
-/***/ 100:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(101),
-	  /* template */
-	  __webpack_require__(112),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/tabbar.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] tabbar.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-6f6b59e8", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-6f6b59e8", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 101:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var getBaseURL = __webpack_require__(63).getBaseURL;
-	module.exports = {
-	  data: function data() {
-	    return {
-	      dir: 'examples',
-	      tabItems: [{
-	        index: 0,
-	        title: 'tab1',
-	        titleColor: '#000000',
-	        icon: '',
-	        image: 'http://gtms01.alicdn.com/tps/i1/TB1qw.hMpXXXXagXXXX9t7RGVXX-46-46.png',
-	        selectedImage: 'http://gtms04.alicdn.com/tps/i4/TB16jjPMpXXXXazXVXX9t7RGVXX-46-46.png',
-	        src: 'component/tabbar/tabbar-item.js?itemId=tab1',
-	        visibility: 'visible'
-	      }, {
-	        index: 1,
-	        title: 'tab2',
-	        titleColor: '#000000',
-	        icon: '',
-	        image: 'http://gtms03.alicdn.com/tps/i3/TB1LEn9MpXXXXaUXpXX9t7RGVXX-46-46.png',
-	        selectedImage: 'http://gtms02.alicdn.com/tps/i2/TB1qysbMpXXXXcnXXXX9t7RGVXX-46-46.png',
-	        src: 'component/tabbar/tabbar-item.js?itemId=tab2',
-	        visibility: 'hidden'
-	      }, {
-	        index: 2,
-	        title: 'tab3',
-	        titleColor: '#000000',
-	        icon: '',
-	        image: 'http://gtms01.alicdn.com/tps/i1/TB1B0v5MpXXXXcvXpXX9t7RGVXX-46-46.png',
-	        selectedImage: 'http://gtms04.alicdn.com/tps/i4/TB1NxY5MpXXXXcrXpXX9t7RGVXX-46-46.png',
-	        src: 'component/tabbar/tabbar-item.js?itemId=tab3',
-	        visibility: 'hidden'
-	      }]
-	    };
-	  },
-	  components: {
-	    tabbar: __webpack_require__(102)
-	  },
-	  created: function created() {
-	    var baseURL = getBaseURL(this);
-	    for (var i = 0; i < this.tabItems.length; i++) {
-	      var tabItem = this.tabItems[i];
-	      tabItem.src = baseURL + tabItem.src;
-	    }
-	  },
-	  methods: {
-	    tabBarOnClick: function tabBarOnClick(e) {
-	      console.log('tabBarOnClick', e.index);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 102:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(103)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(105),
-	  /* template */
-	  __webpack_require__(111),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-a515f340",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tabbar.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] tabbar.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-a515f340", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-a515f340", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 103:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(104);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("37ae4f24", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-a515f340\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tabbar.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-a515f340\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tabbar.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 104:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.wrapper[data-v-a515f340] {\n  width: 750;\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n}\n.content[data-v-a515f340] {\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  margin-top: 0;\n  margin-bottom: 88;\n}\n.tabbar[data-v-a515f340] {\n  flex-direction: row;\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  height: 88;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 105:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    tabItems: { default: [] },
-	    selectedColor: { default: '#ff0000' },
-	    unselectedColor: { default: '#000000' }
-	  },
-	  data: function data() {
-	    return {
-	      selectedIndex: 0
-	    };
-	  },
-	  components: {
-	    tabitem: __webpack_require__(106)
-	  },
-	  created: function created() {
-	    this.select(this.selectedIndex);
-	  },
-	  methods: {
-	    tabItemOnClick: function tabItemOnClick(e) {
-	      this.selectedIndex = e.index;
-	      this.select(e.index);
-	      this.$emit('tabBarOnClick', e);
-	    },
-	    select: function select(index) {
-	      for (var i = 0; i < this.tabItems.length; i++) {
-	        var tabItem = this.tabItems[i];
-	        if (i == index) {
-	          tabItem.icon = tabItem.selectedImage;
-	          tabItem.titleColor = this.selectedColor;
-	          tabItem.visibility = 'visible';
-	        } else {
-	          tabItem.icon = tabItem.image;
-	          tabItem.titleColor = this.unselectedColor;
-	          tabItem.visibility = 'hidden';
-	        }
-	      }
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 106:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(107)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(109),
-	  /* template */
-	  __webpack_require__(110),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-9adb0cd4",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tabitem.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] tabitem.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-9adb0cd4", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-9adb0cd4", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 107:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(108);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("5bbc4d78", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-9adb0cd4\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tabitem.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-9adb0cd4\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tabitem.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 108:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.container[data-v-9adb0cd4] {\n  flex: 1; \n  flex-direction: column; \n  align-items:center; \n  justify-content:center; \n  height: 88;\n}\n.top-line[data-v-9adb0cd4] {\n  position: absolute; \n  top: 0; \n  left: 0; \n  right: 0; \n  height: 2;\n}\n.tab-icon[data-v-9adb0cd4] {\n  margin-top: 5; \n  width: 40; \n  height: 40\n}\n.tab-text[data-v-9adb0cd4] {\n  margin-top: 5; \n  text-align: center;  \n  font-size: 20;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 109:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    index: { default: 0 },
-	    title: { default: '' },
-	    titleColor: { default: '#000000' },
-	    icon: { default: '' },
-	    backgroundColor: { default: '#ffffff' }
-	  },
-	  methods: {
-	    onclickitem: function onclickitem(e) {
-	      var params = {
-	        index: this.index
-	      };
-	      this.$emit('tabItemOnClick', params);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 110:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "container",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      backgroundColor: _vm.backgroundColor
-	    })),
-	    on: {
-	      "click": _vm.onclickitem
-	    }
-	  }, [_c('image', {
-	    staticClass: "top-line",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "http://gtms03.alicdn.com/tps/i3/TB1mdsiMpXXXXXpXXXXNw4JIXXX-640-4.png"
-	    }
-	  }), _vm._v(" "), _c('image', {
-	    staticClass: "tab-icon",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.icon
-	    }
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "tab-text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      color: _vm.titleColor
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-9adb0cd4", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 111:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._l((_vm.tabItems), function(item, i) {
-	    return _c('embed', {
-	      key: i,
-	      staticClass: "content",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        visibility: item.visibility
-	      })),
-	      attrs: {
-	        "src": item.src,
-	        "type": "weex"
-	      }
-	    })
-	  }), _vm._v(" "), _c('div', {
-	    staticClass: "tabbar",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "append": "tree"
-	    }
-	  }, _vm._l((_vm.tabItems), function(item) {
-	    return _c('tabitem', {
-	      key: item.index,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "index": item.index,
-	        "icon": item.icon,
-	        "title": item.title,
-	        "titleColor": item.titleColor
-	      },
-	      on: {
-	        "tabItemOnClick": _vm.tabItemOnClick
-	      }
-	    })
-	  }))], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-a515f340", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 112:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "column"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('tabbar', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "tabItems": _vm.tabItems
-	    },
-	    on: {
-	      "tabBarOnClick": _vm.tabBarOnClick
-	    }
-	  })], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-6f6b59e8", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/text.js b/src/main/assets/vue-web/vue/components/text.js
deleted file mode 100644
index 143fc06..0000000
--- a/src/main/assets/vue-web/vue/components/text.js
+++ /dev/null
@@ -1,1016 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(113)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 113:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(114)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(116),
-	  /* template */
-	  __webpack_require__(117),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-0fd34ddb",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/text.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] text.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-0fd34ddb", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-0fd34ddb", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 114:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(115);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("eb6b125e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0fd34ddb\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./text.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0fd34ddb\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./text.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 115:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.txt[data-v-0fd34ddb] {\n  margin-bottom: 12px;\n  font-size: 40px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 116:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(9)
-	  }
-	};
-
-/***/ }),
-
-/***/ 117:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "color",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("default is black")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("#286090")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "color": "#0f0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("#0f0")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "color": "red"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("keyword")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "color": "rgb(238, 162, 54)"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("rgb(238, 162, 54)")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "color": "rgba(238, 162, 54, 0.5)"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("rgba(238, 162, 54, 0.5)")])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "font-size",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "font-size": "32px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("32")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "font-size": "64px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("64")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "font-size": "100px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("100")])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "font-style",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "font-style": "normal"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("normal")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "font-style": "italic"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("italic")])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "font-weight",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "font-weight": "normal"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("normal")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "font-weight": "bold"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("bold")])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "text-decoration",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "text-decoration": "none"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("none")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "text-decoration": "underline"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("underline")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "text-decoration": "line-through"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("line-through")])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "text-align",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "text-align": "left"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("left")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "text-align": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("center")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "text-align": "right"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("right")])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "text-overflow",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "lines": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("no text-overflow, no text-overflow")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "text-overflow": "clip",
-	      "width": "450px",
-	      "lines": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("text-overflow: clip, text-overflow: clip")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "text-overflow": "ellipsis",
-	      "width": "450px",
-	      "lines": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("text-overflow: ellipsis, text-overflow: ellipsis")])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "line-height",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("no lineheight setting")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "line-height": "50px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("lineheight 50")]), _vm._v(" "), _c('text', {
-	    staticClass: "txt",
-	    staticStyle: _vm.$processStyle({
-	      "line-height": "80px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(" lineheight 80")])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-0fd34ddb", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/textarea.js b/src/main/assets/vue-web/vue/components/textarea.js
deleted file mode 100644
index 1dc9f74..0000000
--- a/src/main/assets/vue-web/vue/components/textarea.js
+++ /dev/null
@@ -1,827 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(118)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 118:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(119)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(121),
-	  /* template */
-	  __webpack_require__(122),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-0b729330",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/textarea.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] textarea.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-0b729330", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-0b729330", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 119:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(120);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("155749f5", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0b729330\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./textarea.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0b729330\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./textarea.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 120:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.textarea[data-v-0b729330] {\n  font-size: 30px;\n  height: 280px;\n  width: 400px;\n  border-width: 2px;\n  border-color: #ccc;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 121:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      txtInput: '',
-	      txtChange: '',
-	      returnType: '',
-	      msg: ''
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9)
-	  },
-	  methods: {
-	    onchange: function onchange(event) {
-	      this.txtChange = event.value;
-	    },
-	    oninput: function oninput(event) {
-	      this.txtInput = event.value;
-	    },
-	    onreturn: function onreturn(event) {
-	      this.returnType = event.returnKeyType;
-	      this.msg = 'You are "' + this.returnType + '" ' + event.value;
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 122:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "textarea",
-	      "type": "primary"
-	    }
-	  }, [_c('textarea', {
-	    staticClass: "textarea",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "autofocus": "true",
-	      "return-key-type": "done"
-	    },
-	    on: {
-	      "return": _vm.onreturn,
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  }), _vm._v(" "), _c('text', [_vm._v("oninput: " + _vm._s(_vm.txtInput))]), _vm._v(" "), _c('text', [_vm._v("onchange: " + _vm._s(_vm.txtChange))]), _vm._v(" "), _c('text', [_vm._v("enter key type: " + _vm._s(_vm.returnType))]), _vm._v(" "), _c('text', [_vm._v("action: " + _vm._s(_vm.msg))])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-0b729330", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/video.js b/src/main/assets/vue-web/vue/components/video.js
deleted file mode 100644
index 0ed3c23..0000000
--- a/src/main/assets/vue-web/vue/components/video.js
+++ /dev/null
@@ -1,816 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(123)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 14:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(15)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(17),
-	  /* template */
-	  __webpack_require__(18),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-33548b34",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.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] button.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-33548b34", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-33548b34", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 15:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(16);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("3204e9c3", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 16:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.btn[data-v-33548b34] {\n  margin-bottom: 0;\n  align-items: center;\n  justify-content: center;\n  border-width: 1px;\n  border-style: solid;\n  border-color: #333;\n\n  /*white-space: nowrap;*/\n  /*vertical-align: middle;*/\n  /*touch-action: manipulation;*/\n  /*cursor: pointer;*/\n  /*-webkit-user-select: none;*/\n  /*background-image: none;*/\n  /*border-image-source: initial;*/\n  /*border-image-slice: initial;*/\n  /*border-image-width: initial;*/\n  /*border-image-outset: initial;*/\n  /*border-image-repeat: initial;*/\n}\n.btn-txt[data-v-33548b34] {\n}\n\n/**TYPE**/\n.btn-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-primary[data-v-33548b34] {\n  background-color: rgb(40, 96, 144);\n  border-color: rgb(40, 96, 144);\n}\n.btn-success[data-v-33548b34] {\n  background-color: rgb(92, 184, 92);\n  border-color: rgb(76, 174, 76);\n}\n.btn-info[data-v-33548b34] {\n  background-color: rgb(91, 192, 222);\n  border-color: rgb(70, 184, 218);\n}\n.btn-warning[data-v-33548b34] {\n  background-color: rgb(240, 173, 78);\n  border-color: rgb(238, 162, 54);\n}\n.btn-danger[data-v-33548b34] {\n  background-color: rgb(217, 83, 79);\n  border-color: rgb(212, 63, 58);\n}\n.btn-link[data-v-33548b34] {\n  border-color: transparent;\n  border-radius: 0;\n}\n.btn-txt-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-txt-primary[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-success[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-info[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-warning[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-danger[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-link[data-v-33548b34] {\n  color: rgb(51, 122, 183);\n  /*font-weight: 400;*/\n}\n\n/**SIZE**/\n.btn-sz-large[data-v-33548b34] {\n  width: 300px;\n  height: 100px;\n  padding-top: 25px;\n  padding-bottom: 25px;\n  padding-left: 40px;\n  padding-right: 40px;\n  /*line-height: 1.33333;*/\n  border-radius: 15px;\n}\n.btn-sz-middle[data-v-33548b34] {\n  width: 240px;\n  height: 80px;\n  padding-top: 15px;\n  padding-bottom: 15px;\n  padding-left: 30px;\n  padding-right: 30px;\n  /*line-height: 1.42857;*/\n  border-radius: 10px;\n}\n.btn-sz-small[data-v-33548b34] {\n  width: 170px;\n  height: 60px;\n  padding-top: 12px;\n  padding-bottom: 12px;\n  padding-left: 25px;\n  padding-right: 25px;\n  /*line-height: 1.5;*/\n  border-radius: 7px;\n}\n.btn-txt-sz-large[data-v-33548b34] {\n  font-size: 45px;\n}\n.btn-txt-sz-middle[data-v-33548b34] {\n  font-size: 35px;\n}\n.btn-txt-sz-small[data-v-33548b34] {\n  font-size: 30px;\n}\n\n/*DISABLED*/\n.disabled[data-v-33548b34] {\n}\n\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 17:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 18:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-33548b34", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 123:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(124)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(126),
-	  /* template */
-	  __webpack_require__(127),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-7a81efbd",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/video.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] video.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-7a81efbd", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-7a81efbd", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 124:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(125);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("75c774c8", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7a81efbd\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./video.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7a81efbd\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./video.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 125:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.video[data-v-7a81efbd] {\n  width: 750px;\n  height: 460px;\n  margin-bottom: 80px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 126:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      playStatus: 'play'
-	    };
-	  },
-	  components: {
-	    button: __webpack_require__(14)
-	  },
-	  methods: {
-	    pause: function pause() {
-	      this.playStatus = 'pause';
-	      modal.toast({ 'message': 'click pause' });
-	    },
-	    play: function play() {
-	      this.playStatus = 'play';
-	      modal.toast({ 'message': 'click play' });
-	    },
-	    onpause: function onpause(e) {
-	      this.playStatus = e.playStatus;
-	      modal.toast({ 'message': 'video pause' });
-	    },
-	    onstart: function onstart(e) {
-	      this.playStatus = e.playStatus;
-	      modal.toast({ 'message': 'video start' });
-	    },
-	    onfinish: function onfinish(e) {
-	      this.playStatus = e.playStatus;
-	      modal.toast({ 'message': 'video finish' });
-	    },
-	    onfail: function onfail(e) {
-	      this.playStatus = e.playStatus;
-	      modal.toast({ 'message': 'video fail' });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 127:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('video', {
-	    staticClass: "video",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "onpause": "onpause",
-	      "onstart": "onstart",
-	      "onfinish": "onfinish",
-	      "onfail": "onfail",
-	      "src": "http://g.tbcdn.cn/ali-wireless-h5/res/0.0.6/toy.mp4",
-	      "auto-play": "true",
-	      "playStatus": _vm.playStatus
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row",
-	      "justify-content": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('button', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "Pause"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.pause($event)
-	      }
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-left": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "Play",
-	      "type": "primary"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.play($event)
-	      }
-	    }
-	  })])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-7a81efbd", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/waterfall.js b/src/main/assets/vue-web/vue/components/waterfall.js
deleted file mode 100644
index dd52319..0000000
--- a/src/main/assets/vue-web/vue/components/waterfall.js
+++ /dev/null
@@ -1,1216 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(128)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 128:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(129)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(131),
-	  /* template */
-	  __webpack_require__(132),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-d8366858",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/waterfall.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] waterfall.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-d8366858", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-d8366858", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 129:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(130);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("a0e5144a", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d8366858\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./waterfall.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d8366858\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./waterfall.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 130:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.page[data-v-d8366858] {\n  background-color: #EFEFEF;\n}\n.refresh[data-v-d8366858] {\n  height: 128px;\n  width: 750px;\n  flex-direction: row;\n  align-items: center;\n  justify-content: center;\n}\n.refreshText[data-v-d8366858] {\n  color: #888888;\n  font-weight: bold;\n}\n.indicator[data-v-d8366858] {\n  color: #888888;\n  height: 40px;\n  width: 40px;\n  margin-right: 30px;\n}\n.header[data-v-d8366858] {\n  background-color: #fff;\n}\n.banner[data-v-d8366858] {\n  height: 377px;\n  flex-direction: row;\n}\n.bannerInfo[data-v-d8366858] {\n  width: 270px;\n  align-items: center;\n  justify-content: center;\n}\n.avatar[data-v-d8366858] {\n  width: 148px;\n  height: 108px;\n  border-radius: 54px;\n  border-width: 4px;\n  border-color: #FFFFFF;\n  margin-bottom: 14px;\n}\n.name[data-v-d8366858] {\n  font-weight: bold;\n  font-size:32px;\n  color:#ffffff;\n  line-height:32px;\n  text-align:center;\n  margin-bottom: 16px;\n}\n.titleWrap[data-v-d8366858] {\n  width: 100px;\n  height: 24px;\n  margin-bottom: 10px;\n  background-color: rgba(255,255,255,0.80);\n  border-radius: 12px;\n  justify-content: center;\n  align-items: center;\n}\n.title[data-v-d8366858] {\n  font-size: 20px;\n  color: #000000;\n}\n.bannerPhotoWrap[data-v-d8366858] {\n  width: 449px;\n  height: 305px;\n  background-color: #FFFFFF;\n  border-radius: 12px;\n  margin-top: 35px;\n  padding: 12px;\n  flex-direction: row;\n  justify-content: space-between;\n  flex-wrap:wrap;\n}\n.bannerPhoto[data-v-d8366858] {\n  width: 137px;\n  height: 137px;\n  margin-bottom: 6px;\n}\n.stickyHeader[data-v-d8366858] {\n  position: sticky;\n  height: 94px;\n  flex-direction: row;\n  padding-bottom:6px;\n}\n.stickyWrapper[data-v-d8366858] {\n  flex-direction: row;\n  background-color:#00cc99;\n  justify-content: center;\n  align-items: center;\n  flex: 1;\n}\n.stickyTextImageWrapper[data-v-d8366858] {\n  flex: 1;\n  justify-content: center;\n  align-items: center;\n  flex-direction: row;\n}\n.stickyText[data-v-d8366858] {\n  color: #FFFFFF;\n  font-weight: bold;\n  font-size: 32px;\n  margin-right: 12px;\n}\n.stickyImage[data-v-d8366858] {\n  width: 64px;\n  height: 64px;\n  border-radius: 32px;\n}\n.cell[data-v-d8366858] {\n  padding-top: 6px;\n  padding-bottom: 6px;\n}\n.item[data-v-d8366858] {\n  background-color: #FFFFFF;\n  align-items: center;\n}\n.itemName[data-v-d8366858] {\n  font-size: 28px;\n  color:#333333;\n  line-height: 42px;\n  text-align:left;\n  margin-top: 24px;\n}\n.itemPhoto[data-v-d8366858] {\n  margin-top: 18px;\n  width: 220px;\n  height: 220px;\n  margin-bottom: 18px;\n}\n.itemDesc[data-v-d8366858] {\n  font-size: 24px;\n  margin: 12px;\n  color: #999999;\n  line-height: 36px;\n  text-align: left;\n}\n.itemClickBehaviour[data-v-d8366858] {\n  font-size: 36px;\n  color: #00cc99;\n  line-height: 36px;\n  text-align:center;\n  margin-top: 6px;\n  margin-left: 24px;\n  margin-right: 24px;\n  margin-bottom: 30px;\n}\n.fixedItem[data-v-d8366858] {\n  position: fixed;\n  width: 78px;\n  height: 78px;\n  background-color: #00cc99;\n  right: 32px;\n  bottom: 32px;\n  border-radius: 39px;\n  align-items: center;\n  justify-content: center;\n}\n.fixedText[data-v-d8366858] {\n  font-size: 36px;\n  color: white;\n  line-height: 36px;\n}\n\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 131:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	Object.defineProperty(exports, "__esModule", {
-	  value: true
-	});
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	exports.default = {
-	  data: function data() {
-	    var items = [{
-	      src: 'https://gw.alicdn.com/tps/TB1Jl1CPFXXXXcJXXXXXXXXXXXX-370-370.jpg',
-	      name: 'Thomas Carlyle',
-	      desc: 'Genius only means hard-working all one\'s life',
-	      behaviourName: 'Change count',
-	      behaviour: 'changeColumnCount'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1Hv1JPFXXXXa3XXXXXXXXXXXX-370-370.jpg',
-	      desc: 'The man who has made up his mind to win will never say "impossible "',
-	      behaviourName: 'Change gap',
-	      behaviour: 'changeColumnGap'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1eNKuPFXXXXc_XpXXXXXXXXXX-370-370.jpg',
-	      desc: 'There is no such thing as a great talent without great will - power',
-	      behaviourName: 'Show scrollbar',
-	      behaviour: 'showScrollbar'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1DCh8PFXXXXX7aXXXXXXXXXXX-370-370.jpg',
-	      name: 'Addison',
-	      desc: 'Cease to struggle and you cease to live',
-	      behaviourName: 'Change width',
-	      behaviour: 'changeColumnWidth'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1ACygPFXXXXXwXVXXXXXXXXXX-370-370.jpg',
-	      desc: 'A strong man will struggle with the storms of fate',
-	      behaviourName: 'Listen appear',
-	      behaviour: 'listenAppear'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1IGShPFXXXXaqXVXXXXXXXXXX-370-370.jpg',
-	      name: 'Ruskin',
-	      desc: 'Living without an aim is like sailing without a compass',
-	      behaviourName: 'Set scrollable',
-	      behaviour: 'setScrollable'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1xU93PFXXXXXHaXXXXXXXXXXX-240-240.jpg',
-	      behaviourName: 'waterfall padding',
-	      behaviour: 'setPadding'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB19hu0PFXXXXaXaXXXXXXXXXXX-240-240.jpg',
-	      name: 'Balzac',
-	      desc: 'There is no such thing as a great talent without great will - power',
-	      behaviourName: 'listen scroll',
-	      behaviour: 'listenScroll'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1ux2vPFXXXXbkXXXXXXXXXXXX-240-240.jpg',
-	      behaviourName: 'Remove cell',
-	      behaviour: 'removeCell'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1tCCWPFXXXXa7aXXXXXXXXXXX-240-240.jpg',
-	      behaviourName: 'Move cell',
-	      behaviour: 'moveCell'
-	    }];
-
-	    var repeatItems = [];
-	    for (var i = 0; i < 3; i++) {
-	      repeatItems.push.apply(repeatItems, items);
-	    }
-
-	    return {
-	      padding: 0,
-	      refreshing: false,
-	      refreshText: '↓   pull to refresh...',
-	      columnCount: 2,
-	      columnGap: 12,
-	      columnWidth: 'auto',
-	      contentOffset: '0',
-	      showHeader: true,
-	      showScrollbar: false,
-	      scrollable: true,
-	      showStickyHeader: false,
-	      appearImage: null,
-	      disappearImage: null,
-	      stickyHeaderType: 'none',
-	      banner: {
-	        photos: [{ src: 'https://gw.alicdn.com/tps/TB1JyaCPFXXXXc9XXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1MwSFPFXXXXbdXXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1U8avPFXXXXaDXpXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB17Xh8PFXXXXbkaXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1cTmLPFXXXXXRXXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1oCefPFXXXXbVXVXXXXXXXXXX-140-140.jpg' }]
-	      },
-	      items: repeatItems
-	    };
-	  },
-
-	  methods: {
-	    recylerScroll: function recylerScroll(e) {
-	      this.contentOffset = e.contentOffset.y;
-	    },
-	    showOrRemoveHeader: function showOrRemoveHeader() {
-	      this.showHeader = !this.showHeader;
-	    },
-	    onItemclick: function onItemclick(behaviour, index) {
-	      console.log('click...' + behaviour + ' at index ' + index);
-	      switch (behaviour) {
-	        case 'changeColumnCount':
-	          this.changeColumnCount();
-	          break;
-	        case 'changeColumnGap':
-	          this.changeColumnGap();
-	          break;
-	        case 'changeColumnWidth':
-	          this.changeColumnWidth();
-	          break;
-	        case 'showScrollbar':
-	          this.showOrHideScrollbar();
-	          break;
-	        case 'listenAppear':
-	          this.listenAppearAndDisappear();
-	          break;
-	        case 'setScrollable':
-	          this.setScrollable();
-	          break;
-	        case 'setPadding':
-	          this.setRecyclerPadding();
-	          break;
-	        case 'listenScroll':
-	          this.listenScrollEvent();
-	          break;
-	        case 'removeCell':
-	          this.removeCell(index);
-	          break;
-	        case 'moveCell':
-	          this.moveCell(index);
-	          break;
-	      }
-	    },
-
-	    itemAppear: function itemAppear(src) {
-	      this.appearImage = src;
-	    },
-
-	    itemDisappear: function itemDisappear(src) {
-	      this.disappearImage = src;
-	    },
-
-	    changeColumnCount: function changeColumnCount() {
-	      if (this.columnCount === 2) {
-	        this.columnCount = 3;
-	      } else {
-	        this.columnCount = 2;
-	      }
-	    },
-
-	    changeColumnGap: function changeColumnGap() {
-	      if (this.columnGap === 12) {
-	        this.columnGap = 'normal';
-	      } else {
-	        this.columnGap = 12;
-	      }
-	    },
-
-	    changeColumnWidth: function changeColumnWidth() {
-	      if (this.columnWidth === 'auto') {
-	        this.columnWidth = 600;
-	      } else {
-	        this.columnWidth = 'auto';
-	      }
-	    },
-
-	    showOrHideScrollbar: function showOrHideScrollbar() {
-	      this.showScrollbar = !this.showScrollbar;
-	    },
-
-	    setScrollable: function setScrollable() {
-	      this.scrollable = !this.scrollable;
-	    },
-
-	    listenAppearAndDisappear: function listenAppearAndDisappear() {
-	      this.stickyHeaderType = this.stickyHeaderType === 'appear' ? 'none' : 'appear';
-	    },
-
-	    listenScrollEvent: function listenScrollEvent() {
-	      this.stickyHeaderType = this.stickyHeaderType === 'scroll' ? 'none' : 'scroll';
-	    },
-
-	    scrollToTop: function scrollToTop() {
-	      // weex.requireModule('dom').scrollToElement(this.$refs.cell0)
-	      weex.requireModule('dom').scrollToElement(this.$refs.header);
-	    },
-
-	    setRecyclerPadding: function setRecyclerPadding() {
-	      debugger;
-	      this.padding = this.padding == 0 ? 12 : 0;
-	    },
-
-	    removeCell: function removeCell(index) {
-	      this.items.splice(index, 1);
-	    },
-
-	    moveCell: function moveCell(index) {
-
-	      if (index == 0) {
-	        this.items.splice(this.items.length - 1, 0, this.items.splice(index, 1)[0]);
-	      } else {
-	        this.items.splice(0, 0, this.items.splice(index, 1)[0]);
-	      }
-	    },
-
-	    onrefresh: function onrefresh(event) {
-	      var _this = this;
-
-	      this.refreshing = true;
-	      this.refreshText = "loading...";
-	      setTimeout(function () {
-	        _this.refreshing = false;
-	        _this.refreshText = '↓   pull to refresh...';
-	      }, 2000);
-	    },
-	    onpullingdown: function onpullingdown(event) {
-	      // console.log(`${event.pullingDistance}`)
-	      if (event.pullingDistance < -64) {
-	        this.refreshText = '↑   release to refresh...';
-	      } else {
-	        this.refreshText = '↓   pull to refresh...';
-	      }
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 132:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('waterfall', {
-	    staticClass: "page",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      padding: _vm.padding
-	    })),
-	    attrs: {
-	      "columnWidth": _vm.columnWidth,
-	      "columnCount": _vm.columnCount,
-	      "columnGap": _vm.columnGap,
-	      "show-scrollbar": _vm.showScrollbar,
-	      "scrollable": _vm.scrollable
-	    },
-	    on: {
-	      "scroll": _vm.recylerScroll
-	    }
-	  }, [_c('refresh', {
-	    staticClass: "refresh",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "display": _vm.refreshing ? 'show' : 'hide'
-	    },
-	    on: {
-	      "refresh": _vm.onrefresh,
-	      "pullingdown": _vm.onpullingdown
-	    }
-	  }, [_c('loading-indicator', {
-	    staticClass: "indicator",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "refreshText",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.refreshText))])], 1), _vm._v(" "), (_vm.showHeader) ? _c('header', {
-	    ref: "header",
-	    staticClass: "header",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('div', {
-	    staticClass: "banner",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "https://gw.alicdn.com/tps/TB1ESN1PFXXXXX1apXXXXXXXXXX-1000-600.jpg",
-	      "resize": "cover"
-	    }
-	  }, [_c('div', {
-	    staticClass: "bannerInfo",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('image', {
-	    staticClass: "avatar",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "https://gw.alicdn.com/tps/TB1EP9bPFXXXXbpXVXXXXXXXXXX-150-110.jpg",
-	      "resize": "cover"
-	    }
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "name",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Adam Cat")]), _vm._v(" "), _c('div', {
-	    staticClass: "titleWrap",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Genius")])])]), _vm._v(" "), _c('div', {
-	    staticClass: "bannerPhotoWrap",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, _vm._l((_vm.banner.photos), function(photo) {
-	    return _c('image', {
-	      staticClass: "bannerPhoto",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": photo.src
-	      }
-	    })
-	  }))])]) : _vm._e(), _vm._v(" "), _c('header', {
-	    staticClass: "stickyHeader",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [(_vm.stickyHeaderType === 'none') ? _c('div', {
-	    staticClass: "stickyWrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "stickyText",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Sticky Header")])]) : _vm._e(), _vm._v(" "), (_vm.stickyHeaderType === 'appear') ? _c('div', {
-	    staticClass: "stickyWrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('div', {
-	    staticClass: "stickyTextImageWrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "stickyText",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Last Appear:")]), _vm._v(" "), _c('image', {
-	    staticClass: "stickyImage",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.appearImage
-	    }
-	  })]), _vm._v(" "), _c('div', {
-	    staticClass: "stickyTextImageWrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "stickyText",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Last Disappear:")]), _vm._v(" "), _c('image', {
-	    staticClass: "stickyImage",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.disappearImage
-	    }
-	  })])]) : _vm._e(), _vm._v(" "), (_vm.stickyHeaderType === 'scroll') ? _c('div', {
-	    staticClass: "stickyWrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "stickyText",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Content Offset:" + _vm._s(_vm.contentOffset))])]) : _vm._e()]), _vm._v(" "), _vm._l((_vm.items), function(item, index) {
-	    return _c('cell', {
-	      key: index,
-	      ref: ("cell" + index),
-	      refInFor: true,
-	      staticClass: "cell",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', {
-	      staticClass: "item",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      on: {
-	        "click": function($event) {
-	          _vm.onItemclick(item.behaviour, index)
-	        },
-	        "appear": function($event) {
-	          _vm.itemAppear(item.src)
-	        },
-	        "disappear": function($event) {
-	          _vm.itemDisappear(item.src)
-	        }
-	      }
-	    }, [(item.name) ? _c('text', {
-	      staticClass: "itemName",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item.name))]) : _vm._e(), _vm._v(" "), _c('image', {
-	      staticClass: "itemPhoto",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": item.src
-	      }
-	    }), _vm._v(" "), (item.desc) ? _c('text', {
-	      staticClass: "itemDesc",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item.desc))]) : _vm._e(), _vm._v(" "), (item.behaviourName) ? _c('text', {
-	      staticClass: "itemClickBehaviour",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(" " + _vm._s(item.behaviourName))]) : _vm._e()])])
-	  }), _vm._v(" "), _c('div', {
-	    staticClass: "fixedItem",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.scrollToTop
-	    }
-	  }, [_c('text', {
-	    staticClass: "fixedText",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Top")])])], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-d8366858", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/components/web.js b/src/main/assets/vue-web/vue/components/web.js
deleted file mode 100644
index e169b03..0000000
--- a/src/main/assets/vue-web/vue/components/web.js
+++ /dev/null
@@ -1,861 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(133)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 14:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(15)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(17),
-	  /* template */
-	  __webpack_require__(18),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-33548b34",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.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] button.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-33548b34", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-33548b34", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 15:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(16);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("3204e9c3", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 16:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.btn[data-v-33548b34] {\n  margin-bottom: 0;\n  align-items: center;\n  justify-content: center;\n  border-width: 1px;\n  border-style: solid;\n  border-color: #333;\n\n  /*white-space: nowrap;*/\n  /*vertical-align: middle;*/\n  /*touch-action: manipulation;*/\n  /*cursor: pointer;*/\n  /*-webkit-user-select: none;*/\n  /*background-image: none;*/\n  /*border-image-source: initial;*/\n  /*border-image-slice: initial;*/\n  /*border-image-width: initial;*/\n  /*border-image-outset: initial;*/\n  /*border-image-repeat: initial;*/\n}\n.btn-txt[data-v-33548b34] {\n}\n\n/**TYPE**/\n.btn-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-primary[data-v-33548b34] {\n  background-color: rgb(40, 96, 144);\n  border-color: rgb(40, 96, 144);\n}\n.btn-success[data-v-33548b34] {\n  background-color: rgb(92, 184, 92);\n  border-color: rgb(76, 174, 76);\n}\n.btn-info[data-v-33548b34] {\n  background-color: rgb(91, 192, 222);\n  border-color: rgb(70, 184, 218);\n}\n.btn-warning[data-v-33548b34] {\n  background-color: rgb(240, 173, 78);\n  border-color: rgb(238, 162, 54);\n}\n.btn-danger[data-v-33548b34] {\n  background-color: rgb(217, 83, 79);\n  border-color: rgb(212, 63, 58);\n}\n.btn-link[data-v-33548b34] {\n  border-color: transparent;\n  border-radius: 0;\n}\n.btn-txt-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-txt-primary[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-success[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-info[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-warning[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-danger[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-link[data-v-33548b34] {\n  color: rgb(51, 122, 183);\n  /*font-weight: 400;*/\n}\n\n/**SIZE**/\n.btn-sz-large[data-v-33548b34] {\n  width: 300px;\n  height: 100px;\n  padding-top: 25px;\n  padding-bottom: 25px;\n  padding-left: 40px;\n  padding-right: 40px;\n  /*line-height: 1.33333;*/\n  border-radius: 15px;\n}\n.btn-sz-middle[data-v-33548b34] {\n  width: 240px;\n  height: 80px;\n  padding-top: 15px;\n  padding-bottom: 15px;\n  padding-left: 30px;\n  padding-right: 30px;\n  /*line-height: 1.42857;*/\n  border-radius: 10px;\n}\n.btn-sz-small[data-v-33548b34] {\n  width: 170px;\n  height: 60px;\n  padding-top: 12px;\n  padding-bottom: 12px;\n  padding-left: 25px;\n  padding-right: 25px;\n  /*line-height: 1.5;*/\n  border-radius: 7px;\n}\n.btn-txt-sz-large[data-v-33548b34] {\n  font-size: 45px;\n}\n.btn-txt-sz-middle[data-v-33548b34] {\n  font-size: 35px;\n}\n.btn-txt-sz-small[data-v-33548b34] {\n  font-size: 30px;\n}\n\n/*DISABLED*/\n.disabled[data-v-33548b34] {\n}\n\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 17:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 18:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-33548b34", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 133:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(134)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(136),
-	  /* template */
-	  __webpack_require__(137),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-5bd01496",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/web.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] web.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-5bd01496", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-5bd01496", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 134:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(135);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("1d85937c", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-5bd01496\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./web.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-5bd01496\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./web.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 135:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.wrapper[data-v-5bd01496] {\n  width: 750;\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n}\n.content[data-v-5bd01496] {\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  margin-top: 0;\n  margin-bottom: 70;\n}\n.toolbar[data-v-5bd01496] {\n  flex-direction: row;\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  height: 70;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 136:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var webview = weex.requireModule('webview');
-	module.exports = {
-	  components: {
-	    button: __webpack_require__(14)
-	  },
-	  methods: {
-	    goback: function goback() {
-	      var el = this.$refs.webview;
-	      webview.goBack(el);
-	    },
-	    goforward: function goforward() {
-	      var el = this.$refs.webview;
-	      webview.goForward(el);
-	    },
-	    refresh: function refresh() {
-	      var el = this.$refs.webview;
-	      webview.reload(el);
-	    },
-	    startload: function startload(e) {},
-	    finishload: function finishload(e) {},
-	    failload: function failload(e) {}
-	  }
-	};
-
-/***/ }),
-
-/***/ 137:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('div', {
-	    staticClass: "toolbar",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "append": "tree"
-	    }
-	  }, [_c('button', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-left": "30px",
-	      "width": "210px",
-	      "margin-top": "5px",
-	      "margin-bottom": "5px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "primary",
-	      "size": "small",
-	      "value": "back"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.goback($event)
-	      }
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-left": "30px",
-	      "width": "210px",
-	      "margin-top": "5px",
-	      "margin-bottom": "5px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "primary",
-	      "size": "small",
-	      "value": "forward"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.goforward($event)
-	      }
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-left": "30px",
-	      "width": "210px",
-	      "margin-top": "5px",
-	      "margin-bottom": "5px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "primary",
-	      "size": "small",
-	      "value": "refresh"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.refresh($event)
-	      }
-	    }
-	  })]), _vm._v(" "), _c('web', {
-	    ref: "webview",
-	    staticClass: "content",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "http://alibaba.github.io/weex/index.html"
-	    },
-	    on: {
-	      "pagestart": _vm.startload,
-	      "pagefinish": _vm.finishload,
-	      "error": _vm.failload
-	    }
-	  })], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-5bd01496", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/hello.js b/src/main/assets/vue-web/vue/hello.js
deleted file mode 100644
index 72e99fc..0000000
--- a/src/main/assets/vue-web/vue/hello.js
+++ /dev/null
@@ -1,217 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(138)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 138:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  null,
-	  /* template */
-	  __webpack_require__(139),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/hello.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] hello.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-50272f32", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-50272f32", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 139:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-size": "100px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello World.")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-50272f32", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/iconfont.js b/src/main/assets/vue-web/vue/iconfont.js
deleted file mode 100644
index b3709a3..0000000
--- a/src/main/assets/vue-web/vue/iconfont.js
+++ /dev/null
@@ -1,799 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(140)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 140:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(141)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(143),
-	  /* template */
-	  __webpack_require__(144),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/iconfont.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] iconfont.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-45d5807a", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-45d5807a", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 141:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(142);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("70c852ae", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../node_modules/css-loader/index.js!../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-45d5807a\",\"scoped\":false,\"hasInlineConfig\":false}!../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./iconfont.vue", function() {
-	     var newContent = require("!!../../node_modules/css-loader/index.js!../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-45d5807a\",\"scoped\":false,\"hasInlineConfig\":false}!../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./iconfont.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 142:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title1 {\n  color: red;\n  font-size: 36;\n  font-family: iconfont1;\n}\n.title2 {\n  color: gray;\n  font-size: 36;\n  font-family: iconfont2;\n}\n.title3 {\n  color: pink;\n  font-size: 36;\n  font-family: iconfont3;\n}\n.title4 {\n  color: red;\n  font-size: 36;\n  font-family: iconfont4;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 143:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  created: function created() {
-
-	    var domModule = weex.requireModule('dom');
-	    //目前支持ttf、woff文件,不支持svg、eot类型,moreItem at http://www.iconfont.cn/
-
-	    domModule.addRule('fontFace', {
-	      'fontFamily': "iconfont2",
-	      'src': "url('http://at.alicdn.com/t/font_1469606063_76593.ttf')"
-	    });
-	    domModule.addRule('fontFace', {
-	      'fontFamily': "iconfont3",
-	      'src': "url('http://at.alicdn.com/t/font_1469606522_9417143.woff')"
-	    });
-
-	    domModule.addRule('fontFace', {
-	      'fontFamily': "iconfont4",
-	      'src': "url('http://at.alicdn.com/t/font_zn5b3jswpofuhaor.ttf')"
-	    });
-
-	    // you can use the absolute path or the local:// scheme path
-	    //  domModule.addRule('fontFace', {
-	    //   'fontFamily': "iconfont4",
-	    //   'src': "url('file:///storage/emulated/0/Android/data/com.alibaba.weex/cache/http:__at.alicdn.com_t_font_1469606063_76593.ttf')"
-	    // });
-	  }
-	};
-
-/***/ }),
-
-/***/ 144:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', {
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "color": "red",
-	      "font-size": "50px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("only support font for ttf and woff")])]), _vm._v(" "), _c('text', {
-	    staticClass: "title2",
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "50px",
-	      "width": "500px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("http ttf: ")]), _vm._v(" "), _c('text', {
-	    staticClass: "title3",
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "50px",
-	      "width": "500px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("http woff: ")]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row",
-	      "margin-top": "50px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "50",
-	      "color": "green"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("")]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "50"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("")]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "60",
-	      "color": "blue"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("")]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "60",
-	      "color": "green"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("")])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row",
-	      "margin-top": "50px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "50",
-	      "color": "green"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("")]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "50"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("")]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "60",
-	      "color": "blue"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("")]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "60",
-	      "color": "green"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("")])]), _vm._v(" "), _c('div', [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "100",
-	      "margin-top": "50px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("")])]), _vm._v(" "), _c('div', [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "100",
-	      "color": "green",
-	      "margin-top": "50px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("")]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "100",
-	      "margin-top": "50px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-family": "iconfont4",
-	      "font-size": "70",
-	      "width": "750px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("")])])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-45d5807a", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/index.js b/src/main/assets/vue-web/vue/index.js
deleted file mode 100644
index c59d115..0000000
--- a/src/main/assets/vue-web/vue/index.js
+++ /dev/null
@@ -1,1056 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(145)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 63:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-	/*
-	 * Licensed to the Apache Software Foundation (ASF) under one
-	 * or more contributor license agreements.  See the NOTICE file
-	 * distributed with this work for additional information
-	 * regarding copyright ownership.  The ASF licenses this file
-	 * to you under the Apache License, Version 2.0 (the
-	 * "License"); you may not use this file except in compliance
-	 * with the License.  You may obtain a copy of the License at
-	 *
-	 *   http://www.apache.org/licenses/LICENSE-2.0
-	 *
-	 * Unless required by applicable law or agreed to in writing,
-	 * software distributed under the License is distributed on an
-	 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	 * KIND, either express or implied.  See the License for the
-	 * specific language governing permissions and limitations
-	 * under the License.
-	 */
-	exports.getBaseURL = function (vm) {
-	  var bundleUrl = weex.config.bundleUrl;
-	  var nativeBase;
-	  var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/') >= 0;
-	  var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0;
-	  if (isAndroidAssets) {
-	    nativeBase = 'file://assets/';
-	  } else if (isiOSAssets) {
-	    // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    nativeBase = bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1);
-	  } else {
-	    var host = 'localhost:12580';
-	    var matches = /\/\/([^\/]+?)\//.exec(weex.config.bundleUrl);
-	    if (matches && matches.length >= 2) {
-	      host = matches[1];
-	    }
-	    nativeBase = 'http://' + host + '/' + vm.dir + '/build/';
-	  }
-	  var h5Base = './vue.html?page=./' + vm.dir + '/build/';
-	  // in Native
-	  var base = nativeBase;
-	  if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object') {
-	    // in Browser or WebView
-	    base = h5Base;
-	  }
-	  return base;
-	};
-
-/***/ }),
-
-/***/ 145:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(146),
-	  /* template */
-	  __webpack_require__(160),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/index.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] index.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-60767867", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-60767867", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 146:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    var root = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' ? 'vue-web/vue' : 'vue';
-
-	    return {
-	      items: [
-	      // common
-	      { name: root + '/hello', title: 'Hello World' }, { name: root + '/style/index', title: 'Common Style' }, { name: root + '/animation', title: 'Animation' }, { name: root + '/transition', title: 'Transition' },
-
-	      // component
-	      { name: root + '/components/text', title: 'Text' }, { name: root + '/iconfont', title: 'iconfont' }, { name: root + '/components/image', title: 'Image' }, { name: root + '/components/input', title: 'Input' }, { name: root + '/components/scroller', title: 'Scroller' }, { name: root + '/components/list', title: 'List' }, { name: root + '/components/waterfall', title: 'Waterfall' }, { name: root + '/components/slider', title: 'Slider' }, { name: root + '/components/a', title: 'A' }, { name: root + '/components/video', title: 'Video' }, { name: root + '/components/countdown', title: 'Countdown' }, { name: root + '/components/marquee', title: 'Marquee' }, { name: root + '/components/web', title: 'Web' }, { name: root + '/components/navigator', title: 'Navigator' }, { name: root + '/components/tabbar', title: 'Tabbar' },
-
-	      // module
-	      { name: root + '/modules/instance-api', title: 'Instance API' }, { name: root + '/modules/modal', title: 'Modal' }, { name: root + '/modules/webSocket', title: 'WebSocket' }, { name: root + '/modules/stream', title: 'Stream' }, { name: root + '/modules/storage', title: 'Storage' }, { name: root + '/modules/picker', title: 'picker' },
-	      // {name: 'module/clipboard', title: 'Clipboard'}, // 0.8 , developing
-
-	      // showcase
-	      { name: root + '/showcase/boxshadow', title: 'boxshadow' }, { name: root + '/showcase/progress', title: 'Progress Bar' }, { name: root + '/showcase/itemlist', title: 'List (Advanced)' }, { name: root + '/showcase/calculator', title: 'Calculator' }, { name: root + '/showcase/tap-penetrate', title: 'TapPenetrate' }, { name: root + '/showcase/a-node-click', title: 'ANodeClick' },
-	      // {name: root + '/showcase/minesweeper', title: 'Minesweeper'},
-	      // {name: root + '/showcase/ui', title: 'UI Gallery'},
-	      // {name: root + '/showcase/dropdown/dropdown-demo', title: 'Dropdown'}
-
-	      // market
-	      { name: root + '/market/gcanvas', title: 'Gcanvas' }]
-	    };
-	  },
-	  components: {
-	    exampleList: __webpack_require__(147)
-	  },
-	  created: function created() {
-	    var root = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' ? 'vue-web/vue' : 'vue';
-	    var platform = this.$getConfig().env.platform.toLowerCase();
-	    if (platform === 'ios') {
-	      this.items.push({ name: root + '/showcase/compositing', title: 'Compositing' });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 147:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(148),
-	  /* template */
-	  __webpack_require__(159),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/example-list.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] example-list.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-cfdc1fba", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-cfdc1fba", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 148:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var getBaseURL = __webpack_require__(63).getBaseURL;
-	module.exports = {
-	  props: {
-	    dir: {
-	      default: 'examples'
-	    }, // examples, test ...
-	    items: {
-	      default: [{ name: 'hello', title: 'Hello World', url: '' }]
-	    }
-	  },
-	  components: {
-	    exampleListItem: __webpack_require__(149)
-	  },
-	  created: function created() {
-	    var base = getBaseURL(this);
-	    for (var i in this.items) {
-	      var item = this.items[i];
-	      if (!item.url) {
-	        item.url = base + item.name + '.js';
-	      }
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 149:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(150)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(152),
-	  /* template */
-	  __webpack_require__(158),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-f04b1ea6",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/example-list-item.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] example-list-item.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-f04b1ea6", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-f04b1ea6", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 150:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(151);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("2292246e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f04b1ea6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./example-list-item.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f04b1ea6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./example-list-item.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 151:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.item-txt[data-v-f04b1ea6] {\n  font-size: 48px;\n  color: #555;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 152:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var event = weex.requireModule('event');
-	module.exports = {
-	  props: {
-	    title: { default: '456' },
-	    url: { default: '' }
-	  },
-	  components: {
-	    listItem: __webpack_require__(153)
-	  },
-	  methods: {
-	    redirect: function redirect() {
-	      event.openURL(this.url);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 153:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(154)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(156),
-	  /* template */
-	  __webpack_require__(157),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-588f3460",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/list-item.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] list-item.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-588f3460", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-588f3460", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 154:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(155);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("05c1548a", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-588f3460\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./list-item.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-588f3460\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./list-item.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 155:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.item[data-v-588f3460] {\n  padding-top: 25px;\n  padding-bottom: 25px;\n  padding-left: 35px;\n  padding-right: 35px;\n  height: 160px;\n  justify-content: center;\n  /*margin-bottom: 1px; FUTURE */\n  border-bottom-width: 1px;\n  border-color: #dddddd;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 156:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    bgColor: { default: '#ffffff' }
-	  },
-	  methods: {
-	    click: function click() {
-	      this.$emit('click');
-	    },
-	    touchstart: function touchstart() {
-	      // FIXME android touch
-	      // TODO adaptive opposite bgColor
-	      // this.bgColor = '#e6e6e6';
-	    },
-	    touchend: function touchend() {
-	      // FIXME android touchend not triggered
-	      // this.bgColor = '#ffffff';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 157:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "item",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      backgroundColor: _vm.bgColor
-	    })),
-	    on: {
-	      "click": _vm.click,
-	      "touchstart": _vm.touchstart,
-	      "touchend": _vm.touchend
-	    }
-	  }, [_vm._t("default")], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-588f3460", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 158:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.redirect
-	    }
-	  }, [_c('text', {
-	    staticClass: "item-txt",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.title))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-f04b1ea6", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 159:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list', _vm._l((_vm.items), function(item, i) {
-	    return _c('cell', {
-	      key: i,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "append": "tree"
-	      }
-	    }, [_c('example-list-item', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "title": item.title,
-	        "url": item.url
-	      }
-	    })], 1)
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-cfdc1fba", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 160:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('example-list', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "items": _vm.items,
-	      "dir": "examples"
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-60767867", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/market/gcanvas.js b/src/main/assets/vue-web/vue/market/gcanvas.js
deleted file mode 100644
index 67da6e1..0000000
--- a/src/main/assets/vue-web/vue/market/gcanvas.js
+++ /dev/null
@@ -1,3641 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(161)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 161:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(162),
-	  /* template */
-	  __webpack_require__(171),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/market/gcanvas.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] gcanvas.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-096734e7", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-096734e7", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 162:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-
-
-	var GCanvas = __webpack_require__(163);
-	var Image = __webpack_require__(164);
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      tagName: weex.config.env.platform === 'Web' ? 'canvas' : 'gcanvas'
-	    };
-	  },
-
-	  mounted: function mounted() {
-	    var ref = this.$refs.canvas_holder;
-	    var gcanvas = GCanvas.start(ref);
-	    var ctx = gcanvas.getContext('2d');
-
-	    ctx.fillStyle = 'red';
-	    ctx.fillRect(0, 0, 100, 100);
-
-	    ctx.fillStyle = 'black';
-	    ctx.fillRect(100, 100, 100, 100);
-	    ctx.fillRect(25, 210, 700, 5);
-
-	    ctx.arc(450, 200, 100, 0, Math.PI * 2, true);
-	    ctx.fill();
-
-	    var img = new Image();
-	    img.onload = function () {
-	      ctx.drawImage(img, 100, 200, 210, 330);
-	      // ctx.drawImage(img, 0,0,105,165, 100, 200, 210, 330);
-	    };
-	    img.src = 'https://img.alicdn.com/tps/TB1TFNdKVXXXXbeaXXXXXXXXXXX-210-330.png';
-	  }
-	};
-
-/***/ }),
-
-/***/ 163:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/**
-
-	gcanvas.js使用说明:
-	1、引入gcanvas库
-	2、调用gcanvas库的createElement(component)接口,创建一个canvas对象。
-	3、调用canvas对象的getContext(param),获取用于渲染的context。
-
-	扩展用法:
-	1、对于Android环境,部分机型可能无法运行。建议在页面入口处调用gcanvas库的start(successCallback, errorCallback)函数,进行黑白名单判断。
-	2、默认每16ms,会自动下发一次渲染指令。某些特殊场景下,希望自行控制下发频率的,可直接调用context.render()接口。调用后会关闭自动下发的操作,切换成每次主动调用render时才下发。
-
-	完整示例如下:
-	var libGCanvas = require('../../core/gcanvas');
-	libGCanvas.start(function(){
-	    nativeLog('gcanvas.start success');
-	    var canvasObj = libGCanvas.createElement(gcanvasComponent);
-	    var context = canvasObj.getContext('2d');
-	    //do any action here
-	},function(){
-	    nativeLog('gcanvas.start failed');
-	});
-
-	*/
-
-	var GImage = __webpack_require__(164);
-	var GBridge = __webpack_require__(165).GBridge;
-	var GLog = __webpack_require__(165).GLog;
-	var GContextWebGL = __webpack_require__(168);
-	var GContext2D = __webpack_require__(169);
-	var GHashMap = __webpack_require__(167);
-	var htmlPlugin = __webpack_require__(170);
-
-
-	///////////////////////////////
-	var GSupport = {};
-	var model_check;
-	var version_check;
-	GSupport.renderMode = 0;// 0--RENDERMODE_WHEN_DIRTY, 1--RENDERMODE_CONTINUOUSLY
-	GSupport.hybridLayerType = -1;// 0--LAYER_TYPE_NONE 1--LAYER_TYPE_SOFTWARE 2--LAYER_TYPE_HARDWARE. change hybrid layer type from LAYER_TYPE_SOFTWARE to unset, avoid block when use html5 audio.
-	GSupport.checkType = 0;// 0--all support, 1--white list check
-	GSupport.nativeVer = 0;
-	GSupport.defaultHiQualityMode = true; // false-- normal true--hiQuality
-	GSupport.supportScroll = false;
-	GSupport.newCanvasMode = false;             //true: GCanvasView in Webview
-	GSupport.sameLevel = false; //newCanvasMode = true && true: GCanvasView and Webview is same level;
-	GSupport.clearColor = "white";
-	GSupport.WHITE_LIST = {
-
-	    model_check : [
-	        function(info) {return info.MODEL == 'GT-I9300';},
-	        function(info) {return info.MODEL == 'GT-I9500';},
-	        function(info) {return info.MODEL == 'GT-N7108';},
-	        function(info) {return info.MODEL == 'HIKe 848A';},
-	        function(info) {return info.MODEL == 'HTC 601e';},
-	        function(info) {return info.MODEL == 'HUAWEI C8813';},
-	        function(info) {return info.MODEL == 'Lenovo K900';},
-	        function(info) {return info.MODEL == 'M351';},
-	        function(info) {return info.MODEL == 'M51w';},
-	        function(info) {return info.MODEL == 'MI 3';},
-	        function(info) {return info.MODEL == 'MI 3W';},
-	        function(info) {return info.MODEL == 'SM-G9006V';},
-	        function(info) {return info.MODEL == 'SM-N9006';}
-	    ],
-	    version_check : [
-	        function(info) {GLog.d("info.OS_RELEASE=" + info.OS_RELEASE); return false;},
-	        function(info) {return (info.OS_RELEASE >= '4.1.0')&&( info.OS_RELEASE <= '4.4.2');}
-	    ]
-	};
-
-
-	GSupport.checkList = function(successFunc, failureFunc){
-	    var checkType = GSupport.checkType;
-	    GLog.d("[checkList] checkType:" + checkType);
-	    if (1 == checkType) {//white list check
-	        var whitelist = GSupport.WHITE_LIST;
-	        var length = whitelist.length;
-	        for (var i = 0; i < length; i++) {
-	            var lenSub = whitelist[i].length;
-	            var found = false;
-	            for (var j = 0; j < lenSub; j++){
-	                if (whitelist[i][j](GDeviceInfo)) {
-	                    found = true;
-	                    break;
-	                }
-	            }
-	            if (!found){ // unfound in white list
-	                GLog.d("the device is not supported, " + GDeviceInfo.MODEL);
-	                failureFunc&&failureFunc();
-	                return;
-	            }
-	        }
-	    }
-	    successFunc&&successFunc();
-	};
-	///////////////////////////////
-
-	var GDeviceInfo = {};
-	// var _context = null;
-	// var _context_type = 0;//0--2d;1--webgl
-	///////////////////////////////
-
-	var GCanvasPlatform = GBridge.isBrowser()? 0 : 2;//0--H5;1--iOS;2--Android
-	var currentEl;
-	var contextTypes = ['2d','webgl']
-	var currentContextOfType = {};
-
-	function GCanvas(componentId)
-	{
-	    this.componentId = componentId;
-	    this.id = ++(GCanvas.idCounter);
-	}
-
-	GCanvas.idCounter = 0;
-	GCanvas.canvasMap = new GHashMap();
-
-	//-----------------------------
-	// GCanvas.start
-	//-----------------------------
-	GCanvas.start = function(el){
-	    GLog.d('gcanvas#start=====>>>');
-
-	    if (typeof WXEnvironment === 'object' && /ios/i.test(WXEnvironment.platform)) {
-	        GCanvasPlatform = 1;
-	    } else if (typeof navigator === 'object' && /ios/i.test(navigator.userAgent)) {
-	        GCanvasPlatform = 1;
-	    } else {
-	        GCanvasPlatform = 2;
-	    }
-
-	    GBridge.setup( {platform:GCanvasPlatform} );
-
-	    if(GCanvasPlatform === 0)
-	    {
-	        currentEl = el
-	        return currentEl;
-	    }
-	    else 
-	    {
-	        //bind canvas
-	        var config = [];
-	        config.push(GSupport.renderMode);
-	        config.push(GSupport.hybridLayerType);
-	        config.push(GSupport.supportScroll);
-	        config.push(GSupport.newCanvasMode);
-	        config.push(1);//compatible. 1 will call GCanvasJNI.getAllParameter("gcanvas");
-	        config.push(GSupport.clearColor);
-	        config.push(GSupport.sameLevel);
-	        GCanvas.enableRet = GBridge.callEnable(el.ref, config);
-	        var canvas = new GCanvas(el.ref);
-	        GCanvas.canvasMap.put(el.ref, canvas);
-	        return canvas;
-	    }
-	}
-
-	//-----------------------------
-	// Instance Method: getContext
-	//-----------------------------
-	GCanvas.prototype.getContext = function(contextID){
-	    GLog.d('gcanvas#getContext=====>>>');
-
-	    var context = this.context;
-	    //brower
-	    if(GCanvasPlatform === 0) {
-	        if (context){
-	            return context;//unsupport change type after create
-	        }
-	        else if(currentEl&&currentEl.getContext) {
-	            context = currentEl.getContext(contextID)
-	            if(context&&!context.render) context.render = function(){}
-	        }
-	        return context
-	    }
-
-	    if (context){
-	        return context;//unsupport change type after create
-	    }
-
-	    var context_type;
-	    if (contextID.match(/webgl/i)){
-	        context = new GContextWebGL(GCanvas.enableRet);
-	        context_type = 1;
-	    }else{
-	        context = new GContext2D();
-	        context_type = 0;
-	    }
-
-	    GBridge.setContextType(this.componentId, context_type);
-
-	    context.componentId = this.componentId;
-	    // if (!context.timer) {
-	    //    context.timer = setInterval(this.render.bind(this), 16);
-	    // }
-
-	    this.context = context;
-	    GBridge.callRegisterReattachJSCallback(this.componentId, context._clearImageTextures);
-
-	    this.startLoop();
-
-	    return context;
-	}
-
-	//-----------------------------
-	// Instance Method: render
-	//-----------------------------
-	GCanvas.prototype.render = function(){
-	    if(GCanvasPlatform !== 0 && this.context)
-	    {
-	        this.context.render("auto");
-	    }
-	}
-
-	//-----------------------------
-	// Instance Method: stopRender
-	//-----------------------------
-	GCanvas.prototype.stopRender = function(){
-	    if(!this.context){
-	        return;
-	    }
-
-	    if(this.context.timer){
-	        clearInterval(this.context.timer);
-	        this.context.timer = null;
-	    }
-	}
-
-	//-----------------------------
-	// Instance Method: startLoop
-	//-----------------------------
-	GCanvas.prototype.startLoop = function(fps){
-	    if(!this.context){
-	        return;
-	    }
-	 
-	    fps = parseInt(fps) || 16;
-	    if(!this.context.timer){
-	        this.context.timer = setInterval(this.render.bind(this),fps);
-	    }
-	}
-
-	//-----------------------------
-	// Instance Method: stopLoop
-	//-----------------------------
-	GCanvas.prototype.stopLoop = function(){
-	    if(!this.context){
-	        return;
-	    }
-	 
-	    if(this.context.timer){
-	        clearInterval(this.context.timer);
-	        this.context.timer = null;
-	    }
-	}
-
-
-	//-----------------------------
-	// Instance Method: reset
-	//-----------------------------
-	GCanvas.prototype.reset = function(){
-	    if(GCanvasPlatform !== 0){
-	        GBridge.resetComponent(this.componentId);
-	    }
-	}
-
-	//-----------------------------
-	// Instance Method: setDevicePixelRatio
-	//-----------------------------
-	GCanvas.prototype.setDevicePixelRatio = function(){
-	    if(!this.context){
-	        return;
-	    }
-
-	    GBridge.callSetDevPixelRatio(this.componentId);
-	}
-
-	//-----------------------------
-	// GCanvas.disable
-	//-----------------------------
-	GCanvas.disable = function(){
-	    // GLog.d('gcanvas#disable=====>>>');
-	    // if(GCanvasPlatform !== 0){
-	    //     GBridge.callDisable();
-	    // }
-	}
-
-	GCanvas.prototype.setup = function(support){
-	    if(!this.context){
-	        return;
-	    }
-	    var config = [];
-	    var mySupport = support || GSupport;
-
-	    for(var attr in GSupport){
-	      if(mySupport[attr] != undefined){
-	         GSupport[attr] = mySupport[attr];
-	      }
-	    }
-
-	    var config = {
-	      'renderMode':GSupport.renderMode,
-	      'hybridLayerType':GSupport.hybridLayerType,
-	      'supportScroll':GSupport.supportScroll,
-	      'sameLevel':GSupport. sameLevel,
-	      'newCanvasMode':GSupport.newCanvasMode,
-	      'clearColor': GSupport.clearColor
-	    };
-
-	    GBridge.callSetup(config, this.componentId, function(e){});
-	}
-
-	//-----------------------------
-	// GCanvas.setHiQuality
-	//-----------------------------
-	GCanvas.setHiQuality = function(){
-	    GLog.d('gcanvas#setHiQuality=====>>>' + quality);
-	    if(GCanvasPlatform !== 0) {
-	        GBridge.setHiQuality(quality);
-	    }
-	}
-
-	//-----------------------------
-	// GCanvas.setLogLevel
-	//-----------------------------
-	GCanvas.setLogLevel = function(level){
-	    GLog.d('gcanvas#setLogLevel=====>>> ' + level);
-	    if(GCanvasPlatform !== 0) {
-	        GBridge.setLogLevel(level);
-	    }
-	}
-
-	//-----------------------------
-	// GCanvas.htmlPlugin
-	//-----------------------------
-	GCanvas.htmlPlugin = htmlPlugin;
-
-	module.exports = GCanvas;
-
-
-/***/ }),
-
-/***/ 164:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var GBridge = __webpack_require__(165).GBridge;
-	var GHashMap = __webpack_require__(167);
-
-	// GCanvasImage
-	function GCanvasImage() {
-	  /**
-	   * The width of the image after it is loaded.
-	   *
-	   * @type {number}
-	   */
-	  this.width = 0;
-
-	  /**
-	   * The height of the image after it is loaded.
-	   *
-	   * @type {number}
-	   */
-	  this.height = 0;
-
-	  /**
-	   * A unique id assigned to each image upon creation.
-	   *
-	   * @type {number}
-	   */
-	  // this.id = (++GCanvasImage.idCounter);
-
-	  // this._id = this.id; // public facing "id" but _id used to internally
-	  // track image
-	  this._src = ""; // image source path
-	  this._complete = true; // "is loading" identifier for complete property
-	}
-
-	/**
-	 * Iterator for generating id values for GCanvasImage instances
-	 * internally.
-	 *
-	 * @private
-	 */
-	GCanvasImage.idCounter = 0;
-	GCanvasImage.imageMap = new GHashMap();
-
-	/**
-	 * Callback for when an image has successfully loaded a file path assigned
-	 * to {@link GCanvasImage#src}.
-	 *
-	 * @type {function}
-	 * @name GCanvasImage#onload
-	 */
-
-	/**
-	 * Callback for when an image has failed to load a file path assigned to
-	 * {@link GCanvasImage#src}.
-	 *
-	 * @type {function}
-	 * @name GCanvasImage#onerror
-	 */
-	GCanvasImage.prototype.removeEventListener = function(type, callback, force) {};
-
-	GCanvasImage.prototype.addEventListener = function(type, listener, force) {
-	  if (type === "load" && typeof listener === 'function') {
-	    this.onload = listener;
-	  }
-
-	  if (type === "error" && typeof listener === 'function') {
-	    this.onerror = listener;
-	  }
-	};
-
-	/**
-	 * The source property, identifying a URL path to the image's file location.
-	 * Upon setting this value to a file path value, the file is loaded into the
-	 * GCanvas plugin. For GCanvas images can be unloaded by setting the
-	 * src to null or "".
-	 *
-	 * @type {string}
-	 * @name GCanvasImage#src
-	 * @example var myImage = GCanvas.createImage(); myImage.onload =
-	 *          function(){ // ... myContext.drawImage(myImage, 0,0,100,100,
-	 *          0,0,100,100); GCanvas.render(); } myImage.onerror =
-	 *          function(){ console.log("Could not load image!"); } myImage.src =
-	 *          "images/spritesheet.jpg";
-	 */
-
-	Object.defineProperty(GCanvasImage.prototype, "src", {
-	  get: function() {
-	    return this._src;
-	  },
-	  set: function(src) {
-
-	    if (!src || src === this._src) {
-	      return;
-	    }
-
-	    this._src = src;
-
-	    // Loading
-	    this.complete = false;
-
-	    // callback wrappers
-	    var me = this;
-
-	    var data = GCanvasImage.imageMap.get(src);
-	    if (data) {
-	      me.id = data.id;
-	      me._id = data.id;
-	      me.complete = true;
-	      me.width = data.width;
-	      me.height = data.height;
-	      me.onload && me.onload();
-	      return;
-	    }
-
-	    this.id = (++GCanvasImage.idCounter);
-	    this._id = this.id; // public facing "id" but _id used to internally
-
-	    GBridge.preLoadImage([src, this.id], function(data) {
-	      if (typeof data === 'string') {
-	        try {
-	          data = JSON.parse(data);
-	        } catch (err) {}
-	      }
-
-	      if (data.error) {
-	        me.onerror && me.onerror();
-	      } else {
-	        me.complete = true;
-	        me.width = typeof data.width === 'number' ? data.width : 0;
-	        me.height = typeof data.height === 'number' ? data.height : 0;
-
-	        me.onload && me.onload();
-	        GCanvasImage.imageMap.put(src, data);
-	      }
-	    });
-	  }
-	});
-
-	/**
-	 * False when the image is in the process of loading an image after the src
-	 * property has been set. True when loading is complete or if src is never
-	 * set. If an error occurred when attempting to load the image, once the
-	 * process of loading is complete, despite the error, this value will still
-	 * become true.
-	 *
-	 * @type {boolean}
-	 * @name GCanvasImage#complete
-	 */
-	Object.defineProperty(GCanvasImage.prototype, "complete", {
-	  get: function() {
-	    return this._complete;
-	  },
-	  set: function(value) {
-	    this._complete = value;
-	  }
-	});
-
-	GCanvasImage.prototype.tagName = 'img';
-	GCanvasImage.prototype.getAttribute = function(name) {
-	  return this[name];
-	};
-
-	module.exports = typeof Image === 'function' ? Image : GCanvasImage;
-
-/***/ }),
-
-/***/ 165:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/////////////////////////////////////////////////////////////////
-	//GBridge
-	/////////////////////////////////////////////////////////////////
-	var GLog = __webpack_require__(166).GLog;
-
-	var inWeex = typeof callNative !== 'undefined';
-	var debug = true;
-	var platform;
-	var canvasModule;
-
-	canvasModule = (typeof weex!=='undefined'&&weex.requireModule) ? ( weex.requireModule('gcanvas') ) : (__weex_require__('@weex-module/gcanvas') );
-
-	var GBridge = {
-
-	    setup: function(data){
-	        platform = data.platform;
-	    },
-
-	    isIOS: function(){
-	      return platform === 1;
-	    },
-
-	    callRegisterReattachJSCallback: function(componentId, cb){
-	      if(!inWeex){
-	        return;
-	      }
-
-	      if(typeof cb !== 'function'){
-	        return;
-	      }
-
-	      canvasModule.registerRetachFunction && canvasModule.registerRetachFunction(componentId, cb);
-	    },
-
-	    /**执行render指令*/
-	    callRender: function (componentId, commands) {
-	        if (!inWeex) {
-	            return;
-	        }
-
-	        canvasModule.render && canvasModule.render( commands, componentId );
-	    },
-
-	    /**Android use**/
-	    callSetup:function(configObj, componentId, callback){
-	        if (!inWeex) {
-	            return;
-	        }
-
-	        var config = configObj || {};
-	        //GLog.d('bridge#callRender() commands is ' + commands);
-	        canvasModule.setup && canvasModule.setup(JSON.stringify(config), componentId , callback);
-	    },
-
-	    /**预加载图片*/
-	    preLoadImage: function (image, cb) {
-	        if (!inWeex) {
-	            return;
-	        }
-
-	        //返回width和height
-	        //image[src, id]
-	        canvasModule.preLoadImage(image, function (e) {
-	            GLog.d('bridge#preLoadImage() callback, e ' + JSON.stringify(e));
-	            e.url = image[0];
-	            e.id = image[1];
-	            cb && cb(e);  
-	        });
-	    },
-
-	    /**绑定纹理*/
-	    bindImageTexture: function (componentId, src, callback) {
-	        if (!inWeex) {
-	            return;
-	        }
-
-	        canvasModule.bindImageTexture && canvasModule.bindImageTexture(src, componentId, callback);
-	    },
-
-	    /**
-	     * 获取canvas引用
-	     * @param ref wx-canvas 引用
-	     * @param configArray 配置参数
-	     **/
-	    callEnable: function (ref, configArray, callback) {
-	        if (!inWeex) {
-	            return;
-	        }
-	        var params = {
-	            componentId: ref,
-	            config:configArray
-	        };
-
-	        return canvasModule.enable && canvasModule.enable(params);
-
-	        // canvasModule.enable(params, function (e) {
-	        //     GLog.d('bridge#callEnable() return val:' + JSON.stringify(e));
-	        //     callback && callback(e);
-	        // });
-	    },
-
-	    callSetDevPixelRatio: function(componentId){
-	        if(!inWeex){
-	          return;
-	        }
-	        canvasModule.setDevicePixelRatio && canvasModule.setDevicePixelRatio(componentId);
-	    },
-
-	    /**
-	     * 获取设备信息(android)
-	     * @param callback 设备信息
-	     **/
-	    getDeviceInfo: function (callback) {
-	        if (!inWeex) {
-	            return;
-	        }
-
-	        if(this.isBrowser()){
-	            //浏览器端不实现
-	            callback && callback({
-	                data:{platform:0}
-	            });
-	        }
-	        else {
-	            canvasModule.getDeviceInfo({}, function (e) {
-	                GLog.d('bridge#getDeviceInfo() return val:' + JSON.stringify(e));
-	                callback && callback(e);
-	            });
-	        }
-
-	    },
-
-	    /**
-	     * 判断是不是浏览器
-	     *
-	     **/
-	    isBrowser: function () {
-
-	        if(!canvasModule||!canvasModule.getDeviceInfo){
-	            return true
-	        }
-	    },
-
-	    /**
-	     *
-	     * 设置context类型,2d或者webgl
-	     *
-	     * @param context_type 0代表2d,1代表3d
-	     * */
-	    setContextType: function (componentId, context_type){
-	        if(context_type != 0 && context_type != 1){
-	            GLog.d('bridge#setContextType(): invalid context type===>' + context_type);
-	            return;
-	        }
-	        GLog.d('bridge#setContextType(): context type is ' + context_type + ' componentId:' + componentId);
-	        canvasModule.setContextType(context_type, componentId);
-	    },
-
-	    /**
-	     *
-	     * 设置日志级别
-	     *
-	     * @param context_type 0代表2d,1代表3d
-	     * */
-	    setLogLevel: function (level){
-	        GLog.d('bridge#setLogLevel(): native logLevel ' + level);
-	        canvasModule.setLogLevel(level);
-	    },
-
-	    /**
-	     *
-	     * 设置opengl渲染质量
-	     *
-	     * @param context_type 0代表2d,1代表3d
-	     * */
-	    setHiQuality: function (quality){
-	        GLog.d('bridge#setHiQuality(): quality: ' + quality);
-	        canvasModule.setHiQuality(quality);
-	    },
-
-
-	    resetComponent: function(componentId){
-	        GLog.d('bridge#resetComponent(): componentId: ' + componentId);
-	        canvasModule.resetComponent && canvasModule.resetComponent(componentId);
-	    },
-
-	    exeSyncCmd: function (componentId, action, args){
-	    	GLog.d('bridge#exeSyncCmd(): action: ' + action + ',args:' + args);
-	    	return canvasModule.execGcanvaSyncCMD(action,args);
-	    }
-	};
-
-
-	module.exports = {
-	    GBridge: GBridge,
-	    GLog: GLog
-	};
-
-
-/***/ }),
-
-/***/ 166:
-/***/ (function(module, exports) {
-
-	/////////////////////////////////////////////////////////////////
-	//GLog
-	/////////////////////////////////////////////////////////////////
-	var GLOG_DEBUG	= 0;
-	var GLOG_INFO   = 1;
-	var GLOG_WARN   = 2;
-	var GLOG_ERROR	= 3;
-	var GLOG_NULL   = -1;
-	var GLog = {};
-	GLog._nullFunc = function(){};
-	GLog.d = GLog._nullFunc;
-	GLog.i = GLog._nullFunc
-	GLog.w = GLog._nullFunc;
-	GLog.e = GLog._nullFunc;
-	GLog._nativeEnable = false;
-	GLog._setNativeLevel = function(level){
-		/*
-		if (!this._nativeEnable)
-			return;
-		if (level == GLOG_DEBUG)
-			GCanvas._toNative(null, null, 'GCanvas', 'setLogLevel', [ "debug" ]);
-		else if (level == GLOG_INFO)
-			GCanvas._toNative(null, null, 'GCanvas', 'setLogLevel', [ "info" ]);
-		else if (level == GLOG_WARN)
-			GCanvas._toNative(null, null, 'GCanvas', 'setLogLevel', [ "warn" ]);
-		else if (level == GLOG_ERROR)
-			GCanvas._toNative(null, null, 'GCanvas', 'setLogLevel', [ "error" ]);
-		else 
-			GCanvas._toNative(null, null, 'GCanvas', 'setLogLevel', [ "fatal" ]);	
-	     */
-	}
-	GLog._refresh = function(){
-
-		
-		if (this.enable == false){
-			this._setNativeLevel(GLOG_NULL);
-			this.d = this._nullFunc;
-			this.i = this._nullFunc
-			this.w = this._nullFunc;
-			this.e = this._nullFunc;
-		}
-		else
-		{
-			if (this.level <= GLOG_ERROR)
-				this.e = function(msg){ console.error(msg);};
-			else
-				this.e = this._nullFunc;
-				
-			if (this.level <= GLOG_WARN)
-				this.w = function(msg){ console.warn(msg);};
-			else
-				this.w = this._nullFunc;
-			
-			if (this.level <= GLOG_INFO)
-				this.i = function(msg){ console.info(msg);
-					var args = {
-						msg:msg
-					}
-				//WindVane.call("GLog", "writeLog", args || {}, null, null);
-			};
-			else
-				this.i = this._nullFunc;
-			
-			if (this.level <= GLOG_DEBUG)
-				this.d = function(msg){ console.info(msg);
-					var args = {
-						msg:msg
-					}
-				//WindVane.call("GLog", "writeLog", args || {}, null, null);
-			};
-			else
-				this.d = this._nullFunc;
-			
-			this._setNativeLevel(this.level);	
-		}
-	}
-	GLog.enable = function(){
-		this.enable = true;
-		this._refresh();
-	}
-	GLog.disable = function(){
-		this.enable = false;
-		this._refresh();
-	}
-	GLog.setLevel = function(level){
-		console.info("[setLevel] "+ this.level + "=>" + level);
-		this.level = level;
-		this.enable = true;
-		this._refresh();
-	}
-
-	//GLog.setLevel(GLOG_WARN);
-	GLog.setLevel(GLOG_DEBUG);
-
-	module.exports.GLog = GLog
-
-/***/ }),
-
-/***/ 167:
-/***/ (function(module, exports) {
-
-	function GHashMap() {
-	    /**Map大小**/
-	    var size = 0;
-	    /**对象**/
-	    var entry = new Object();
-	    /**Map的存put方法**/
-	    this.put = function(key, value) {
-	        if (!this.containsKey(key)) {
-	            size++;
-	            entry[key] = value;
-	        }
-	    }
-	    /**Map取get方法**/
-	    this.get = function(key) {
-	        return this.containsKey(key) ? entry[key] : null;
-	    }
-	    /**Map删除remove方法**/
-	    this.remove = function(key) {
-	        if (this.containsKey(key) && (delete entry[key])) {
-	            size--;
-	        }
-	    }
-	    /**是否包含Key**/
-	    this.containsKey = function(key) {
-	        return (key in entry);
-	    }
-	    /**是否包含Value**/
-	    this.containsValue = function(value) {
-	        for (var prop in entry) {
-	            if (entry[prop] == value) {
-	                return true;
-	            }
-	        }
-	        return false;
-	    }
-	    /**所有的Value**/
-	    this.values = function() {
-	        var values = new Array();
-	        for (var prop in entry) {
-	            values.push(entry[prop]);
-	        }
-	        return values;
-	    }
-	    /**所有的 Key**/
-	    this.keys = function() {
-	        var keys = new Array();
-	        for (var prop in entry) {
-	            keys.push(prop);
-	        }
-	        return keys;
-	    }
-	    /**Map size**/
-	    this.size = function() {
-	        return size;
-	    }
-	    /**清空Map**/
-	    this.clear = function() {
-	        size = 0;
-	        entry = new Object();
-	    }
-	}
-
-	module.exports=GHashMap;
-
-/***/ }),
-
-/***/ 168:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var GBridge = __webpack_require__(165).GBridge;
-	var GLog = __webpack_require__(165).GLog;
-	var GCanvas = __webpack_require__(163);
-
-	function GContextWebGL(params){
-	    GInitWebGLFuncId(this);
-	    GInitWebGLEnum(this);
-	    GInitWebGLParams(params);
-
-	    this._drawCommands = "";
-	    this._globalAlpha = 1.0;
-	    this._fillStyle = "rgb(0,0,0)";
-	    this._strokeStyle = "rgb(0,0,0)";
-	    this._lineWidth = 1;
-	    this._lineCap = "butt";
-	    this._lineJoin= "miter";
-	    this._miterLimit = 10;
-	    this._globalCompositeOperation = "source-over";
-	    this._textAlign = "start";
-	    this._textBaseline = "alphabetic";
-	    this._font = "10px sans-serif";
-	    this._images = {};
-	    this._canvases1 = {};
-	    this._canvases2 = {};
-	    this._getImageData = new Array();
-
-	    this._uniformMgr = {};
-	    this._uniformCount = 3;
-
-	    //GCanvas._forbiddenAutoReplaceCanvas =true;
-	    //this._apiCanvas  = document.createElement('canvas');
-	    //GCanvas._forbiddenAutoReplaceCanvas =false;
-	    //console.log("apicanvas="+this._apiCanvas);
-	    //this._apiContext = this._apiCanvas.getContext("2d");
-	    //this._apiContext.font = this._font;
-
-	    this._savedGlobalAlpha =[];
-	    this.componentId = null;
-
-	    
-	}
-
-	function GInitWebGLParams(params) 
-	{
-	    // if( !params || params.length == 0 )
-	    //     return;
-
-	    // var u8ar = Gbase64ToArr(params);
-	    // GCanvas._glParams = new Int32Array(u8ar.buffer);
-
-	    // console.log("GInitWebGLParams:"+GCanvas._glParams);
-	}
-
-	//////////////////////////////////////////////////////////////////////////
-
-	function GInitWebGLFuncId(obj){
-	    var i=1;
-	    obj.activeTextureId=(i++)+",";
-	    obj.attachShaderId=(i++)+",";
-	    obj.bindAttribLocationId=(i++)+",";
-	    obj.bindBufferId=(i++)+",";
-	    obj.bindFramebufferId=(i++)+",";
-	    obj.bindRenderbufferId=(i++)+",";
-	    obj.bindTextureId=(i++)+",";
-	    obj.blendColorId=(i++)+",";
-	    obj.blendEquationId=(i++)+",";
-	    obj.blendEquationSeparateId=(i++)+",";
-	    obj.blendFuncId=(i++)+",";
-	    obj.blendFuncSeparateId=(i++)+",";
-	    obj.bufferDataId=(i++)+",";
-	    obj.bufferSubDataId=(i++)+",";
-	    obj.checkFramebufferStatusId=(i++)+",";
-	    obj.clearId=(i++)+",";
-	    obj.clearColorId=(i++)+",";
-	    obj.clearDepthId=(i++)+",";
-	    obj.clearStencilId=(i++)+",";
-	    obj.colorMaskId=(i++)+",";
-	    obj.compileShaderId=(i++)+",";
-	    obj.compressedTexImage2DId=(i++)+",";
-	    obj.compressedTexSubImage2DId=(i++)+",";
-	    obj.copyTexImage2DId=(i++)+",";
-	    obj.copyTexSubImage2DId=(i++)+",";
-	    obj.createBufferId=(i++)+",";
-	    obj.createFramebufferId=(i++)+",";
-	    obj.createProgramId=(i++)+",";
-	    obj.createRenderbufferId=(i++)+",";
-	    obj.createShaderId=(i++)+",";
-	    obj.createTextureId=(i++)+",";
-	    obj.cullFaceId=(i++)+",";
-	    obj.deleteBufferId=(i++)+",";
-	    obj.deleteFramebufferId=(i++)+",";
-	    obj.deleteProgramId=(i++)+",";
-	    obj.deleteRenderbufferId=(i++)+",";
-	    obj.deleteShaderId=(i++)+",";
-	    obj.deleteTextureId=(i++)+",";
-	    obj.depthFuncId=(i++)+",";
-	    obj.depthMaskId=(i++)+",";
-	    obj.depthRangeId=(i++)+",";
-	    obj.detachShaderId=(i++)+",";
-	    obj.disableId=(i++)+",";
-	    obj.disableVertexAttribArrayId=(i++)+",";
-	    obj.drawArraysId=(i++)+",";
-	    obj.drawArraysInstancedANGLEId=(i++)+",";
-	    obj.drawElementsId=(i++)+",";
-	    obj.drawElementsInstancedANGLEId=(i++)+",";
-	    obj.enableId=(i++)+",";
-	    obj.enableVertexAttribArrayId=(i++)+",";
-	    obj.flushId=(i++)+",";
-	    obj.framebufferRenderbufferId=(i++)+",";
-	    obj.framebufferTexture2DId=(i++)+",";
-	    obj.frontFaceId=(i++)+",";
-	    obj.generateMipmapId=(i++)+",";
-	    obj.getActiveAttribId=(i++)+",";
-	    obj.getActiveUniformId=(i++)+",";
-	    obj.getAttachedShadersId=(i++)+",";
-	    obj.getAttribLocationId=(i++)+",";
-	    obj.getBufferParameterId=(i++)+",";
-	    obj.getContextAttributesId=(i++)+",";
-	    obj.getErrorId=(i++)+",";
-	    obj.getExtensionId=(i++)+",";
-	    obj.getFramebufferAttachmentParameterId=(i++)+",";
-	    obj.getParameterId=(i++)+",";
-	    obj.getProgramInfoLogId=(i++)+",";
-	    obj.getProgramParameterId=(i++)+",";
-	    obj.getRenderbufferParameterId=(i++)+",";
-	    obj.getShaderInfoLogId=(i++)+",";
-	    obj.getShaderParameterId=(i++)+",";
-	    obj.getShaderPrecisionFormatId=(i++)+",";
-	    obj.getShaderSourceId=(i++)+",";
-	    obj.getSupportedExtensionsId=(i++)+",";
-	    obj.getTexParameterId=(i++)+",";
-	    obj.getUniformId=(i++)+",";
-	    obj.getUniformLocationId=(i++)+",";
-	    obj.getVertexAttribId=(i++)+",";
-	    obj.getVertexAttribOffsetId=(i++)+",";
-	    obj.isBufferId=(i++)+",";
-	    obj.isContextLostId=(i++)+",";
-	    obj.isEnabledId=(i++)+",";
-	    obj.isFramebufferId=(i++)+",";
-	    obj.isProgramId=(i++)+",";
-	    obj.isRenderbufferId=(i++)+",";
-	    obj.isShaderId=(i++)+",";
-	    obj.isTextureId=(i++)+",";
-	    obj.lineWidthId=(i++)+",";
-	    obj.linkProgramId=(i++)+",";
-	    obj.pixelStoreiId=(i++)+",";
-	    obj.polygonOffsetId=(i++)+",";
-	    obj.readPixelsId=(i++)+",";
-	    obj.renderbufferStorageId=(i++)+",";
-	    obj.sampleCoverageId=(i++)+",";
-	    obj.scissorId=(i++)+",";
-	    obj.shaderSourceId=(i++)+",";
-	    obj.stencilFuncId=(i++)+",";
-	    obj.stencilFuncSeparateId=(i++)+",";
-	    obj.stencilMaskId=(i++)+",";
-	    obj.stencilMaskSeparateId=(i++)+",";
-	    obj.stencilOpId=(i++)+",";
-	    obj.stencilOpSeparateId=(i++)+",";
-	    obj.texImage2DId=(i++)+",";
-	    obj.texParameterfId=(i++)+",";
-	    obj.texParameteriId=(i++)+",";
-	    obj.texSubImage2DId=(i++)+",";
-	    obj.uniform1fId=(i++)+",";
-	    obj.uniform1fvId=(i++)+",";
-	    obj.uniform1iId=(i++)+",";
-	    obj.uniform1ivId=(i++)+",";
-	    obj.uniform2fId=(i++)+",";
-	    obj.uniform2fvId=(i++)+",";
-	    obj.uniform2iId=(i++)+",";
-	    obj.uniform2ivId=(i++)+",";
-	    obj.uniform3fId=(i++)+",";
-	    obj.uniform3fvId=(i++)+",";
-	    obj.uniform3iId=(i++)+",";
-	    obj.uniform3ivId=(i++)+",";
-	    obj.uniform4fId=(i++)+",";
-	    obj.uniform4fvId=(i++)+",";
-	    obj.uniform4iId=(i++)+",";
-	    obj.uniform4ivId=(i++)+",";
-	    obj.uniformMatrix2fvId=(i++)+",";
-	    obj.uniformMatrix3fvId=(i++)+",";
-	    obj.uniformMatrix4fvId=(i++)+",";
-	    obj.useProgramId=(i++)+",";
-	    obj.validateProgramId=(i++)+",";
-	    obj.vertexAttribDivisorANGLEId=(i++)+",";
-	    obj.vertexAttrib2fvId=(i++)+",";
-	    obj.vertexAttribPointerId=(i++)+",";
-	    obj.viewportId=(i++)+",";
-
-	    //extension for OES_vertex_array_object
-	    obj.bindVertexArrayOESId=(i++)+",";
-	    obj.deleteVertexArraysOESId=(i++)+",";
-	    obj.genVertexArraysOESId=(i++)+","
-	    obj.isVertexArrayOESId=(i++)+","
-	}
-
-	function GInitWebGLEnum(obj){
-	    //GL Constant Define
-	    obj.NONE = 0x0;
-	    obj.ONE = 0x1;
-	    obj.LINE_LOOP = 0x2;
-	    obj.LINE_STRIP = 0x3;
-	    obj.TRIANGLES = 0x4;
-	    obj.TRIANGLE_STRIP = 0x5;
-	    obj.TRIANGLE_FAN = 0x6;
-	    obj.DEPTH_BUFFER_BIT = 0x100;
-	    obj.NEVER = 0x200;
-	    obj.LESS = 0x201;
-	    obj.EQUAL = 0x202;
-	    obj.LEQUAL = 0x203;
-	    obj.GREATER = 0x204;
-	    obj.NOTEQUAL = 0x205;
-	    obj.GEQUAL = 0x206;
-	    obj.ALWAYS = 0x207;
-	    obj.SRC_COLOR = 0x300;
-	    obj.ONE_MINUS_SRC_COLOR = 0x301;
-	    obj.SRC_ALPHA = 0x302;
-	    obj.ONE_MINUS_SRC_ALPHA = 0x303;
-	    obj.DST_ALPHA = 0x304;
-	    obj.ONE_MINUS_DST_ALPHA = 0x305;
-	    obj.DST_COLOR = 0x306;
-	    obj.ONE_MINUS_DST_COLOR = 0x307;
-	    obj.SRC_ALPHA_SATURATE = 0x308;
-	    obj.STENCIL_BUFFER_BIT = 0x400;
-	    obj.FRONT = 0x404;
-	    obj.BACK = 0x405;
-	    obj.FRONT_AND_BACK = 0x408;
-	    obj.INVALID_ENUM = 0x500;
-	    obj.INVALID_VALUE = 0x501;
-	    obj.INVALID_OPERATION = 0x502;
-	    obj.OUT_OF_MEMORY = 0x505;
-	    obj.INVALID_FRAMEBUFFER_OPERATION = 0x506;
-	    obj.CW = 0x900;
-	    obj.CCW = 0x901;
-	    obj.LINE_WIDTH = 0xB21;
-	    obj.CULL_FACE = 0xB44;
-	    obj.CULL_FACE_MODE = 0xB45;
-	    obj.FRONT_FACE = 0xB46;
-	    obj.DEPTH_RANGE = 0xB70;
-	    obj.DEPTH_TEST = 0xB71;
-	    obj.DEPTH_WRITEMASK = 0xB72;
-	    obj.DEPTH_CLEAR_VALUE = 0xB73;
-	    obj.DEPTH_FUNC = 0xB74;
-	    obj.STENCIL_TEST = 0xB90;
-	    obj.STENCIL_CLEAR_VALUE = 0xB91;
-	    obj.STENCIL_FUNC = 0xB92;
-	    obj.STENCIL_VALUE_MASK = 0xB93;
-	    obj.STENCIL_FAIL = 0xB94;
-	    obj.STENCIL_PASS_DEPTH_FAIL = 0xB95;
-	    obj.STENCIL_PASS_DEPTH_PASS = 0xB96;
-	    obj.STENCIL_REF = 0xB97;
-	    obj.STENCIL_WRITEMASK = 0xB98;
-	    obj.VIEWPORT = 0xBA2;
-	    obj.DITHER = 0xBD0;
-	    obj.BLEND = 0xBE2;
-	    obj.SCISSOR_BOX = 0xC10;
-	    obj.SCISSOR_TEST = 0xC11;
-	    obj.COLOR_CLEAR_VALUE = 0xC22;
-	    obj.COLOR_WRITEMASK = 0xC23;
-	    obj.UNPACK_ALIGNMENT = 0xCF5;
-	    obj.PACK_ALIGNMENT = 0xD05;
-	    obj.MAX_TEXTURE_SIZE = 0xD33;
-	    obj.MAX_VIEWPORT_DIMS = 0xD3A;
-	    obj.SUBPIXEL_BITS = 0xD50;
-	    obj.RED_BITS = 0xD52;
-	    obj.GREEN_BITS = 0xD53;
-	    obj.BLUE_BITS = 0xD54;
-	    obj.ALPHA_BITS = 0xD55;
-	    obj.DEPTH_BITS = 0xD56;
-	    obj.STENCIL_BITS = 0xD57;
-	    obj.TEXTURE_2D = 0xDE1;
-	    obj.DONT_CARE = 0x1100;
-	    obj.FASTEST = 0x1101;
-	    obj.NICEST = 0x1102;
-	    obj.BYTE = 0x1400;
-	    obj.UNSIGNED_BYTE = 0x1401;
-	    obj.SHORT = 0x1402;
-	    obj.UNSIGNED_SHORT = 0x1403;
-	    obj.INT = 0x1404;
-	    obj.UNSIGNED_INT = 0x1405;
-	    obj.FLOAT = 0x1406;
-	    obj.INVERT = 0x150A;
-	    obj.TEXTURE = 0x1702;
-	    obj.STENCIL_INDEX = 0x1901;
-	    obj.DEPTH_COMPONENT = 0x1902;
-	    obj.ALPHA = 0x1906;
-	    obj.RGB = 0x1907;
-	    obj.RGBA = 0x1908;
-	    obj.LUMINANCE = 0x1909;
-	    obj.LUMINANCE_ALPHA = 0x190A;
-	    obj.KEEP = 0x1E00;
-	    obj.REPLACE = 0x1E01;
-	    obj.INCR = 0x1E02;
-	    obj.DECR = 0x1E03;
-	    obj.VENDOR = 0x1F00;
-	    obj.RENDERER = 0x1F01;
-	    obj.VERSION = 0x1F02;
-	    obj.NEAREST = 0x2600;
-	    obj.LINEAR = 0x2601;
-	    obj.NEAREST_MIPMAP_NEAREST = 0x2700;
-	    obj.LINEAR_MIPMAP_NEAREST = 0x2701;
-	    obj.NEAREST_MIPMAP_LINEAR = 0x2702;
-	    obj.LINEAR_MIPMAP_LINEAR = 0x2703;
-	    obj.TEXTURE_MAG_FILTER = 0x2800;
-	    obj.TEXTURE_MIN_FILTER = 0x2801;
-	    obj.TEXTURE_WRAP_S = 0x2802;
-	    obj.TEXTURE_WRAP_T = 0x2803;
-	    obj.REPEAT = 0x2901;
-	    obj.POLYGON_OFFSET_UNITS = 0x2A00;
-	    obj.COLOR_BUFFER_BIT = 0x4000;
-	    obj.CONSTANT_COLOR = 0x8001;
-	    obj.ONE_MINUS_CONSTANT_COLOR = 0x8002;
-	    obj.CONSTANT_ALPHA = 0x8003;
-	    obj.ONE_MINUS_CONSTANT_ALPHA = 0x8004;
-	    obj.BLEND_COLOR = 0x8005;
-	    obj.FUNC_ADD = 0x8006;
-	    obj.BLEND_EQUATION_RGB = 0x8009;
-	    obj.FUNC_SUBTRACT = 0x800A;
-	    obj.FUNC_REVERSE_SUBTRACT = 0x800B;
-	    obj.UNSIGNED_SHORT_4_4_4_4 = 0x8033;
-	    obj.UNSIGNED_SHORT_5_5_5_1 = 0x8034;
-	    obj.POLYGON_OFFSET_FILL = 0x8037;
-	    obj.POLYGON_OFFSET_FACTOR = 0x8038;
-	    obj.RGBA4 = 0x8056;
-	    obj.RGB5_A1 = 0x8057;
-	    obj.TEXTURE_BINDING_2D = 0x8069;
-	    obj.SAMPLE_ALPHA_TO_COVERAGE = 0x809E;
-	    obj.SAMPLE_COVERAGE = 0x80A0;
-	    obj.SAMPLE_BUFFERS = 0x80A8;
-	    obj.SAMPLES = 0x80A9;
-	    obj.SAMPLE_COVERAGE_VALUE = 0x80AA;
-	    obj.SAMPLE_COVERAGE_INVERT = 0x80AB;
-	    obj.BLEND_DST_RGB = 0x80C8;
-	    obj.BLEND_SRC_RGB = 0x80C9;
-	    obj.BLEND_DST_ALPHA = 0x80CA;
-	    obj.BLEND_SRC_ALPHA = 0x80CB;
-	    obj.CLAMP_TO_EDGE = 0x812F;
-	    obj.GENERATE_MIPMAP_HINT = 0x8192;
-	    obj.DEPTH_COMPONENT16 = 0x81A5;
-	    obj.DEPTH_STENCIL_ATTACHMENT = 0x821A;
-	    obj.UNSIGNED_SHORT_5_6_5 = 0x8363;
-	    obj.MIRRORED_REPEAT = 0x8370;
-	    obj.ALIASED_POINT_SIZE_RANGE = 0x846D;
-	    obj.ALIASED_LINE_WIDTH_RANGE = 0x846E;
-	    obj.TEXTURE0 = 0x84C0;
-	    obj.TEXTURE1 = 0x84C1;
-	    obj.TEXTURE2 = 0x84C2;
-	    obj.TEXTURE3 = 0x84C3;
-	    obj.TEXTURE4 = 0x84C4;
-	    obj.TEXTURE5 = 0x84C5;
-	    obj.TEXTURE6 = 0x84C6;
-	    obj.TEXTURE7 = 0x84C7;
-	    obj.TEXTURE8 = 0x84C8;
-	    obj.TEXTURE9 = 0x84C9;
-	    obj.TEXTURE10 = 0x84CA;
-	    obj.TEXTURE11 = 0x84CB;
-	    obj.TEXTURE12 = 0x84CC;
-	    obj.TEXTURE13 = 0x84CD;
-	    obj.TEXTURE14 = 0x84CE;
-	    obj.TEXTURE15 = 0x84CF;
-	    obj.TEXTURE16 = 0x84D0;
-	    obj.TEXTURE17 = 0x84D1;
-	    obj.TEXTURE18 = 0x84D2;
-	    obj.TEXTURE19 = 0x84D3;
-	    obj.TEXTURE20 = 0x84D4;
-	    obj.TEXTURE21 = 0x84D5;
-	    obj.TEXTURE22 = 0x84D6;
-	    obj.TEXTURE23 = 0x84D7;
-	    obj.TEXTURE24 = 0x84D8;
-	    obj.TEXTURE25 = 0x84D9;
-	    obj.TEXTURE26 = 0x84DA;
-	    obj.TEXTURE27 = 0x84DB;
-	    obj.TEXTURE28 = 0x84DC;
-	    obj.TEXTURE29 = 0x84DD;
-	    obj.TEXTURE30 = 0x84DE;
-	    obj.TEXTURE31 = 0x84DF;
-	    obj.ACTIVE_TEXTURE = 0x84E0;
-	    obj.MAX_RENDERBUFFER_SIZE = 0x84E8;
-	    obj.DEPTH_STENCIL = 0x84F9;
-	    obj.INCR_WRAP = 0x8507;
-	    obj.DECR_WRAP = 0x8508;
-	    obj.TEXTURE_CUBE_MAP = 0x8513;
-	    obj.TEXTURE_BINDING_CUBE_MAP = 0x8514;
-	    obj.TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
-	    obj.TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
-	    obj.TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
-	    obj.TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
-	    obj.TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
-	    obj.TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A;
-	    obj.MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C;
-	    obj.VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622;
-	    obj.VERTEX_ATTRIB_ARRAY_SIZE = 0x8623;
-	    obj.VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624;
-	    obj.VERTEX_ATTRIB_ARRAY_TYPE = 0x8625;
-	    obj.CURRENT_VERTEX_ATTRIB = 0x8626;
-	    obj.VERTEX_ATTRIB_ARRAY_POINTER = 0x8645;
-	    obj.NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2;
-	    obj.COMPRESSED_TEXTURE_FORMATS = 0x86A3;
-	    obj.BUFFER_SIZE = 0x8764;
-	    obj.BUFFER_USAGE = 0x8765;
-	    obj.STENCIL_BACK_FUNC = 0x8800;
-	    obj.STENCIL_BACK_FAIL = 0x8801;
-	    obj.STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802;
-	    obj.STENCIL_BACK_PASS_DEPTH_PASS = 0x8803;
-	    obj.BLEND_EQUATION_ALPHA = 0x883D;
-	    obj.MAX_VERTEX_ATTRIBS = 0x8869;
-	    obj.VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A;
-	    obj.MAX_TEXTURE_IMAGE_UNITS = 0x8872;
-	    obj.ARRAY_BUFFER = 0x8892;
-	    obj.ELEMENT_ARRAY_BUFFER = 0x8893;
-	    obj.ARRAY_BUFFER_BINDING = 0x8894;
-	    obj.ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
-	    obj.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F;
-	    obj.STREAM_DRAW = 0x88E0;
-	    obj.STATIC_DRAW = 0x88E4;
-	    obj.DYNAMIC_DRAW = 0x88E8;
-	    obj.FRAGMENT_SHADER = 0x8B30;
-	    obj.VERTEX_SHADER = 0x8B31;
-	    obj.MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C;
-	    obj.MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D;
-	    obj.SHADER_TYPE = 0x8B4F;
-	    obj.FLOAT_VEC2 = 0x8B50;
-	    obj.FLOAT_VEC3 = 0x8B51;
-	    obj.FLOAT_VEC4 = 0x8B52;
-	    obj.INT_VEC2 = 0x8B53;
-	    obj.INT_VEC3 = 0x8B54;
-	    obj.INT_VEC4 = 0x8B55;
-	    obj.BOOL = 0x8B56;
-	    obj.BOOL_VEC2 = 0x8B57;
-	    obj.BOOL_VEC3 = 0x8B58;
-	    obj.BOOL_VEC4 = 0x8B59;
-	    obj.FLOAT_MAT2 = 0x8B5A;
-	    obj.FLOAT_MAT3 = 0x8B5B;
-	    obj.FLOAT_MAT4 = 0x8B5C;
-	    obj.SAMPLER_2D = 0x8B5E;
-	    obj.SAMPLER_CUBE = 0x8B60;
-	    obj.DELETE_STATUS = 0x8B80;
-	    obj.COMPILE_STATUS = 0x8B81;
-	    obj.LINK_STATUS = 0x8B82;
-	    obj.VALIDATE_STATUS = 0x8B83;
-	    obj.INFO_LOG_LENGTH = 0x8B84;
-	    obj.ATTACHED_SHADERS = 0x8B85;
-	    obj.ACTIVE_UNIFORMS = 0x8B86;
-	    obj.ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87;
-	    obj.SHADER_SOURCE_LENGTH = 0x8B88;
-	    obj.ACTIVE_ATTRIBUTES = 0x8B89;
-	    obj.ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A;
-	    obj.SHADING_LANGUAGE_VERSION = 0x8B8C;
-	    obj.CURRENT_PROGRAM = 0x8B8D;
-	    obj.STENCIL_BACK_REF = 0x8CA3;
-	    obj.STENCIL_BACK_VALUE_MASK = 0x8CA4;
-	    obj.STENCIL_BACK_WRITEMASK = 0x8CA5;
-	    obj.FRAMEBUFFER_BINDING = 0x8CA6;
-	    obj.RENDERBUFFER_BINDING = 0x8CA7;
-	    obj.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0;
-	    obj.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1;
-	    obj.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2;
-	    obj.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3;
-	    obj.FRAMEBUFFER_COMPLETE = 0x8CD5;
-	    obj.FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6;
-	    obj.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7;
-	    obj.FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9;
-	    obj.FRAMEBUFFER_UNSUPPORTED = 0x8CDD;
-	    obj.COLOR_ATTACHMENT0 = 0x8CE0;
-	    obj.DEPTH_ATTACHMENT = 0x8D00;
-	    obj.STENCIL_ATTACHMENT = 0x8D20;
-	    obj.FRAMEBUFFER = 0x8D40;
-	    obj.RENDERBUFFER = 0x8D41;
-	    obj.RENDERBUFFER_WIDTH = 0x8D42;
-	    obj.RENDERBUFFER_HEIGHT = 0x8D43;
-	    obj.RENDERBUFFER_INTERNAL_FORMAT = 0x8D44;
-	    obj.STENCIL_INDEX8 = 0x8D48;
-	    obj.RENDERBUFFER_RED_SIZE = 0x8D50;
-	    obj.RENDERBUFFER_GREEN_SIZE = 0x8D51;
-	    obj.RENDERBUFFER_BLUE_SIZE = 0x8D52;
-	    obj.RENDERBUFFER_ALPHA_SIZE = 0x8D53;
-	    obj.RENDERBUFFER_DEPTH_SIZE = 0x8D54;
-	    obj.RENDERBUFFER_STENCIL_SIZE = 0x8D55;
-	    obj.RGB565 = 0x8D62;
-	    obj.LOW_FLOAT = 0x8DF0;
-	    obj.MEDIUM_FLOAT = 0x8DF1;
-	    obj.HIGH_FLOAT = 0x8DF2;
-	    obj.LOW_INT = 0x8DF3;
-	    obj.MEDIUM_INT = 0x8DF4;
-	    obj.HIGH_INT = 0x8DF5;
-	    obj.SHADER_COMPILER = 0x8DFA;
-	    obj.MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB;
-	    obj.MAX_VARYING_VECTORS = 0x8DFC;
-	    obj.MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD;
-
-	    obj.UNPACK_FLIP_Y_WEBGL = 0x9240;
-	    // obj.UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241;
-	    // obj.CONTEXT_LOST_WEBGL = 0x9242;
-	    // obj.UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243;
-	    // obj.BROWSER_DEFAULT_WEBGL = 0x9244;
-
-	    //extsion
-	    obj.OES_vertex_array_object = 1;
-	    obj.OES_texture_float = 1;
-	    obj.OES_element_index_uint = 1;
-	}
-
-	function GAttribLocation() {
-	    this.id = (++GAttribLocation.idCounter);
-	}
-	GAttribLocation.idCounter = 0;
-	GAttribLocation.mapKey = [];
-	GAttribLocation.mapVal = [];
-
-
-	function GProgram() {
-	    this.id = (++GProgram.idCounter);
-	}
-	GProgram.idCounter = 0;
-
-	function GShader() {
-	    this.id = (++GShader.idCounter);
-	}
-	GShader.idCounter = 0;
-
-	function GTexture() {
-	    this.id = (++GTexture.idCounter);
-	}
-	GTexture.idCounter = 0;
-
-	function GUniformLocation() {
-	    this.id = (++GUniformLocation.idCounter);
-	}
-	GUniformLocation.idCounter = 0;
-	GUniformLocation.mapKey = [];
-	GUniformLocation.mapVal = [];
-
-	function GWebGLBuffer() {
-	    this.id = (++GWebGLBuffer.idCounter);
-	}
-	GWebGLBuffer.idCounter = 0;
-
-	function GWebGLFramebuffer() {
-	    this.id = (++GWebGLFramebuffer.idCounter);
-	}
-	GWebGLFramebuffer.idCounter = 0;
-
-	function GWebGLRenderbuffer() {
-	    this.id = (++GWebGLRenderbuffer.idCounter);
-	}
-	GWebGLRenderbuffer.idCounter = 0;
-
-	function GWebGLShaderPrecisionFormat(){
-	}
-
-
-
-	function GarrToBase64(array) 
-	{   
-	    var str = '';
-	    if( array.join === 'function' )
-	    {
-	        str = array.join();
-	    }
-	    else
-	    {
-	        for (var i = 0; i < array.length; i++) 
-	        {
-	            if( i < array.length - 1 )
-	            {
-	                str = str + array[i] + ',';
-	            }
-	            else
-	            {
-	                str = str + array[i];
-	            }
-	        }
-	    }
-	    // GLog.d("GarrToBase64(), before: "+ str);
-	    // GLog.d("GarrToBase64(), after : "+ btoa(str));
-	    return btoa(str);
-	}
-
-	function Gbase64ToArr(base64)
-	{
-	    // GLog.d("base64:" + base64);
-	    var binary_string = atob(base64);
-	    // GLog.d("binary_string:" + binary_string);
-	    var array = binary_string.slice();
-	    return array;
-	    // var len = binary_string.length;
-	    // var bytes = new Uint8Array( len );
-	    // for (var i = 0; i < len; i++)        {
-	    //     bytes[i] = binary_string.charCodeAt(i);
-	    // }
-	    // return bytes.buffer;
-	}
-	//////////////////////////////////////////////////////////////////////////
-
-
-
-	GContextWebGL.prototype.render = function() {
-	    var commands = this._drawCommands;
-	    this._drawCommands = "";
-	    if (commands != null && commands != "") {
-	        // GLog.d("GContextWebGL#render() called, commands is "+ commands);
-	        //GCanvas._toNative(null, null, 'GCanvas', 'render', [ commands ]);
-	        GBridge.callRender(this.componentId, commands)
-	    }
-	};
-
-
-	//////////////////////////////////////////////////////////////////////////
-
-	////////////////////////////// WEBGL API //////////////////////////////////
-
-	GContextWebGL.prototype.activeTexture = function(texture){
-	    this._drawCommands += (this.activeTextureId + texture + ";");
-	};
-
-	GContextWebGL.prototype.attachShader = function(program, shader){
-	    this._drawCommands += (this.attachShaderId + program.id + "," + shader.id + ";");
-	};
-
-	GContextWebGL.prototype.bindAttribLocation = function(program, index, name){
-	    this._drawCommands += (this.bindAttribLocationId + program.id + "," + index + "," + name + ";");
-	};
-
-	GContextWebGL.prototype.bindBuffer = function(target, buffer){
-	    this._drawCommands += (this.bindBufferId + target + "," + ((null == buffer)?-1:buffer.id) + ";");
-	};
-
-	GContextWebGL.prototype.bindFramebuffer = function(target, buf){
-	    this._drawCommands += (this.bindFramebufferId + target + "," + ((null == buf)?-1:buf.id) + ";");
-	};
-
-	GContextWebGL.prototype.bindRenderbuffer = function(target, buf){
-	    this._drawCommands += (this.bindRenderbufferId + target + "," + ((null == buf)?-1:buf.id) + ";");
-	};
-
-	GContextWebGL.prototype.bindTexture = function(target, texture){
-	    this._drawCommands += (this.bindTextureId + target + "," + ((null == texture)?-1:texture.id) + ";");
-	};
-
-	GContextWebGL.prototype.blendEquation = function(mode){
-	    this._drawCommands += (this.blendEquationId + mode + ";");
-	};
-
-	GContextWebGL.prototype.blendEquationSeparate = function(modeRGB, modeAlpha){
-	    this._drawCommands += (this.blendEquationSeparateId + modeRGB + "," + modeAlpha  + ";");
-	};
-
-
-	GContextWebGL.prototype.blendFunc = function(sfactor, dfactor){
-	    this._drawCommands += (this.blendFuncId + sfactor + "," + dfactor  + ";");
-	};
-
-	GContextWebGL.prototype.blendFuncSeparate = function(srcRGB, dstRGB, srcAlpha, dstAlpha){
-	    this._drawCommands += (this.blendFuncSeparateId + srcRGB + "," + dstRGB + "," + srcAlpha + "," + dstAlpha  + ";");
-	};
-
-	GContextWebGL.prototype.bufferData = function(target, array, usage){
-	    // GLog.d("[bufferData] before:_drawCommands.length=" + this._drawCommands.length);
-	    // GLog.d("[bufferData] array.length=" + array.length);
-	    this._drawCommands += (this.bufferDataId + target + "," + array.BYTES_PER_ELEMENT + "," + GarrToBase64(array) + "," + usage + ";");
-	    // GLog.d("[bufferData] after :_drawCommands.length=" + this._drawCommands.length);
-	};
-
-	GContextWebGL.prototype.checkFramebufferStatus_ = function(target){
-	    return this.FRAMEBUFFER_COMPLETE;// TODO:
-	};
-
-	GContextWebGL.prototype.clear = function(mask){
-	    this._drawCommands += (this.clearId + mask + ";");
-	};
-
-	GContextWebGL.prototype.clearColor = function(r, g, b, a){
-	    this._drawCommands += (this.clearColorId + r + "," + g + "," + b + "," + a + ";");
-	};
-
-	GContextWebGL.prototype.clearDepth = function(depth){
-	    this._drawCommands += (this.clearDepthId + depth + ";");
-	};
-
-	GContextWebGL.prototype.clearStencil = function(s){
-	    this._drawCommands += (this.clearStencilId + s + ";");
-	};
-
-	GContextWebGL.prototype.colorMask = function(r, g, b, a){
-	    this._drawCommands += (this.colorMaskId + r?1: true?1:0 + "," + b?1:0 + "," + a?1:0 + ";");
-	};
-
-	GContextWebGL.prototype.compileShader = function(shader) {
-	    this._drawCommands += (this.compileShaderId + shader.id + ";");
-	};
-
-	GContextWebGL.prototype.createBuffer = function(){
-	    var buffer = new GWebGLBuffer();
-	    this._drawCommands += (this.createBufferId + buffer.id + ";");
-	    return buffer;
-	};
-
-	GContextWebGL.prototype.createFramebuffer = function(){
-	    var framebuffer = new GWebGLFramebuffer();
-	    this._drawCommands += (this.createFramebufferId + framebuffer.id + ";");
-	    return framebuffer;
-	};
-
-	GContextWebGL.prototype.createRenderbuffer = function(){
-	    var renderbuffer= new GWebGLRenderbuffer();
-	    this._drawCommands += (this.createRenderbufferId + renderbuffer.id + ";");
-	    return renderbuffer;
-	};
-
-	GContextWebGL.prototype.createProgram = function(){
-	    var program = new GProgram();
-	    this._drawCommands += (this.createProgramId + program.id + ";");
-	    return program;
-	};
-
-	GContextWebGL.prototype.createShader = function(type) {
-	    var shader = new GShader();
-	    this._drawCommands += (this.createShaderId + shader.id + "," + type + ";");
-	    return shader;
-	};
-
-	GContextWebGL.prototype.createTexture = function() {
-	    var texture = new GTexture();
-	    this._drawCommands += (this.createTextureId + texture.id + ";");
-	    return texture;
-	};
-
-	GContextWebGL.prototype.cullFace = function(mode){
-	    this._drawCommands += (this.cullFaceId + mode + ";");
-	};
-
-	GContextWebGL.prototype.deleteBuffer = function(buffer){
-	    this._drawCommands += (this.deleteBufferId + buffer.id + ";");
-	};
-
-	GContextWebGL.prototype.deleteFramebuffer = function(framebuffer){
-	    this._drawCommands += (this.deleteFramebufferId + framebuffer.id + ";");
-	};
-
-	GContextWebGL.prototype.deleteProgram = function(program){
-	    this._drawCommands += (this.deleteProgramId + program.id + ";");
-	};
-
-	GContextWebGL.prototype.deleteRenderbuffer = function(renderbuffer){
-	    this._drawCommands += (this.deleteRenderbufferId + renderbuffer.id + ";");
-	};
-
-	GContextWebGL.prototype.deleteShader = function(shader){
-	    this._drawCommands += (this.deleteShaderId + shader.id + ";");
-	};
-
-	GContextWebGL.prototype.deleteTexture = function(texture){
-	    this._drawCommands += (this.deleteTextureId + texture.id + ";");
-	};
-
-	GContextWebGL.prototype.depthFunc = function(func){
-	    this._drawCommands += (this.depthFuncId + func + ";");
-	};
-
-	GContextWebGL.prototype.depthMask = function(flag){
-	    this._drawCommands += (this.depthMaskId + (flag?1:0) + ";");
-	};
-
-	GContextWebGL.prototype.depthRange = function(near, far){
-	    this._drawCommands += (this.depthRangeId + near + ", " + far + ";");
-	}
-
-	GContextWebGL.prototype.disable = function(cap){
-	    this._drawCommands += (this.disableId + cap + ";");
-	};
-
-	GContextWebGL.prototype.disableVertexAttribArray = function(index){
-	    this._drawCommands += (this.disableVertexAttribArrayId + index + ";");
-	};
-
-	GContextWebGL.prototype.drawArrays = function(mode, first, count){
-	    this._drawCommands += (this.drawArraysId + mode + "," + first + "," + count +  ";");
-	};
-
-	GContextWebGL.prototype.drawElements = function(mode, count, type, offset){
-	    this._drawCommands += (this.drawElementsId + mode + "," + count + "," + type + "," + offset +  ";");
-	};
-
-	GContextWebGL.prototype.enable = function(cap){
-	    this._drawCommands += (this.enableId + cap + ";");
-	};
-
-	GContextWebGL.prototype.enableVertexAttribArray = function(index){
-	    this._drawCommands += (this.enableVertexAttribArrayId + index + ";");
-	};
-
-	GContextWebGL.prototype.flush = function(){
-	    this._drawCommands += (this.flushId + ";");
-	};
-
-	GContextWebGL.prototype.generateMipmap = function(target){
-	    this._drawCommands += (this.generateMipmapId + target + ";");
-	};
-
-	GContextWebGL.prototype.framebufferRenderbuffer = function(target, attachment, renderbuffertarget, renderbuffer){
-	    this._drawCommands += (this.framebufferRenderbufferId + target + "," + attachment + "," + renderbuffertarget + "," + renderbuffer.id + ";");
-	};
-
-	GContextWebGL.prototype.framebufferTexture2D = function(target, attachment, textarget, texture, level){
-	    this._drawCommands += (this.framebufferTexture2DId + target + "," + attachment + "," + textarget + "," + texture.id + "," + level + ";");
-	};
-
-	GContextWebGL.prototype.frontFace = function(mode){
-	    this._drawCommands += (this.frontFaceId + mode + ";");
-	};
-
-	GContextWebGL.prototype.getAttribLocation   = function(program, name) {
-	    var key = program.id + ":" + name;
-	    var index = GAttribLocation.mapKey.indexOf(key);
-	    if (index > -1){
-	        //GLog.d("[getAttribLocation] " + key + "=" + GAttribLocation.mapVal[index].id);
-	        return GAttribLocation.mapVal[index];
-	    }
-
-	    var id = GAttribLocation.idCounter++;
-	    this._drawCommands += (this.getAttribLocationId + program.id + "," + name + "," + id + ";");
-
-	    GAttribLocation.mapKey.push(key);
-	    GAttribLocation.mapVal.push(id);
-	    //GLog.d("[GAttribLocation] " + key + "=" + id);
-
-	    return id;
-	};
-
-	GContextWebGL.prototype.getExtension = function(name) {
-	    //GLog.w("[getExtension] " + name);
-	    return null;
-	//  var ret = new Object();
-	//  return ret;// TODO: need call opengl es
-	};
-
-
-	//TODO
-	GContextWebGL.prototype.getParameter = function(name) {
-	    if (typeof(GCanvas._glParams) == 'undefined'){
-	        return null;
-	    }
-	    if (name == this.ALIASED_POINT_SIZE_RANGE){
-	        var f32ar =  new Float32Array(2);
-	        f32ar[0]= 1;
-	        f32ar[1]= 256;
-	        return f32ar;
-	    }
-	    //GLog.d("[GContextWebGL::getParameter] " + name + "=" + GCanvas._glParams[name]);
-	    return GCanvas._glParams[name];
-	    // TODO: unsupport this code:var _compressedTextureFormats = _glExtensionCompressedTextureS3TC ? _gl.getParameter( _gl.COMPRESSED_TEXTURE_FORMATS ) : [];
-	};
-
-	GContextWebGL.prototype.getProgramInfoLog = function(program){
-	    return ""; // TODO:need asyn deal
-	};
-
-	GContextWebGL.prototype.getProgramParameter = function(id, type){
-	    var args = id + ',' + type;
-	    var result = GBridge.exeSyncCmd('getProgramParameter',args);
-	    
-	    // return result;
-	    return "";
-	};
-
-	GContextWebGL.prototype.getShaderInfoLog = function(id){
-	    var args = id;
-	    var result = GBridge.exeSyncCmd('getShaderInfoLog',args);
-	    
-	    // return result;
-	    return "";
-	};
-
-	GContextWebGL.prototype.getShaderParameter = function(shader, pname){
-	    var args = shader + ',' + pname;
-	    var result = GBridge.exeSyncCmd('getShaderParameter',args);
-	    
-	    // return result;
-	    return "";
-	};
-
-	GContextWebGL.prototype.getActiveUniform = function(id, index){
-	    var args = id + ',' + index;
-	    var result = GBridge.exeSyncCmd('getActiveUniform',args);
-	    var tmp = result.split(',');
-	    return {
-	        type: tmp[0],
-	        name: tmp[1]
-	    };
-	}
-
-	GContextWebGL.prototype.getActiveAttrib = function(id, index){
-	    var args = id + ',' + index;
-	    var result = GBridge.exeSyncCmd('getActiveAttrib',args);
-	    var tmp = result.split(',');
-	    return {
-	        type: tmp[0],
-	        name: tmp[1]
-	    };
-	}
-
-	GContextWebGL.prototype.scissor = function(x, y, w, h) {
-	    this._drawCommands += (this.scissorId + x + "," + y + ","
-	    + w+ "," + h + ";");
-	};
-
-
-	GContextWebGL.prototype.getShaderPrecisionFormat = function(shader, pname){
-	    //var ret = new GWebGLShaderPrecisionFormat();
-	    //ret.range = 127;
-	    //ret.precision = 23;
-	    //if (shader == gl.VERTEX_SHADER) {
-	    //    switch (pname) {
-	    //        case gl.LOW_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[0];
-	    //            ret.precision = GCanvas._glParams[1];
-	    //            break;
-	    //        }
-	    //        case gl.MEDIUM_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[2];
-	    //            ret.precision = GCanvas._glParams[3];
-	    //            break;
-	    //        }
-	    //        case gl.HIGH_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[4];
-	    //            ret.precision = GCanvas._glParams[5];
-	    //            break;
-	    //        }
-	    //        case gl.LOW_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[6];
-	    //            ret.precision = GCanvas._glParams[7];
-	    //            break;
-	    //        }
-	    //        case gl.MEDIUM_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[8];
-	    //            ret.precision = GCanvas._glParams[9];
-	    //            break;
-	    //        }
-	    //        case gl.HIGH_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[10];
-	    //            ret.precision = GCanvas._glParams[11];
-	    //            break;
-	    //        }
-	    //
-	    //    } //end switch
-	    //}
-	    //if (shader == gl.FRAGMENT_SHADER) {
-	    //    switch (pname) {
-	    //        case gl.LOW_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[12];
-	    //            ret.precision = GCanvas._glParams[13];
-	    //            break;
-	    //        }
-	    //        case gl.MEDIUM_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[14];
-	    //            ret.precision = GCanvas._glParams[15];
-	    //            break;
-	    //        }
-	    //        case gl.HIGH_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[16];
-	    //            ret.precision = GCanvas._glParams[17];
-	    //            break;
-	    //        }
-	    //        case gl.LOW_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[18];
-	    //            ret.precision = GCanvas._glParams[19];
-	    //            break;
-	    //        }
-	    //        case gl.MEDIUM_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[20];
-	    //            ret.precision = GCanvas._glParams[21];
-	    //            break;
-	    //        }
-	    //        case gl.HIGH_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[22];
-	    //            ret.precision = GCanvas._glParams[23];
-	    //            break;
-	    //        }
-	    //
-	    //    } //end switch
-	    //}
-	    //
-	    //return ret;
-	};
-
-	GContextWebGL.prototype.getUniformLocation = function(program, name) {
-
-	    var key = program.id + ":" + name;
-	    var index = GUniformLocation.mapKey.indexOf(key);
-	    if (index > -1){
-	        //GLog.d("[getUniformLocation] " + key + "=" + GUniformLocation.mapVal[index].id);
-	        return GUniformLocation.mapVal[index];
-	    }
-
-	    var uniform = new GUniformLocation();
-	    this._drawCommands += (this.getUniformLocationId + program.id + "," + name + "," + uniform.id + ";");
-
-	    GUniformLocation.mapKey.push(key);
-	    GUniformLocation.mapVal.push(uniform);
-	    //GLog.d("[getUniformLocation] " + key + "=" + uniform.id);
-	    return uniform;
-	};
-
-	GContextWebGL.prototype.isContextLost = function(){
-	    return false;
-	};
-	GContextWebGL.prototype.lineWidth = function(width){
-	    this._drawCommands += (this.lineWidthId + width + ";");
-	};
-
-	GContextWebGL.prototype.linkProgram = function(program){
-	    this._drawCommands += (this.linkProgramId + program.id + ";");
-	};
-
-	GContextWebGL.prototype.pixelStorei = function(pname, param){
-	    if (true == param)
-	        param = 1;
-	    else if (false == param)
-	        param = 0;
-	    this._drawCommands += (this.pixelStoreiId + pname + "," + param + ";");
-	};
-
-	GContextWebGL.prototype.shaderSource = function(shader, source){
-	    this._drawCommands += (this.shaderSourceId + shader.id + "," + btoa(source) + ";");
-	};
-
-
-
-	GContextWebGL.prototype.renderbufferStorage = function(target, internalformat, width, height){
-	    this._drawCommands += (this.renderbufferStorageId + target + "," + internalformat + "," + width + "," + height + ";");
-	};
-
-
-
-
-	//texImage2D(webgl.TEXTURE_2D, 0, webgl.RGB, webgl.RGB, webgl.UNSIGNED_BYTE, img);
-	//WebGLRenderingContext.texImage2D(target, level, internalformat, width, height, border, format, type, pixels);
-	//texImage2D( _gl.TEXTURE_2D, 0, _gl.RGB, 16, 16, 0, _gl.RGB, _gl.UNSIGNED_BYTE, null );
-	GContextWebGL.prototype.texImage2D = function(target, level, internalformat){
-	    var argc = arguments.length;
-	    //GLog.d("[texImage2D]arguments.length=" + argc);
-
-	    if (6==argc){
-	        var image = arguments[5];
-	        var imgData;
-	        // if (image instanceof HTMLCanvasElement){
-	        //     imgData = image.toDataURL("image/jpeg");
-	        // }else{
-	            imgData = image.src;
-	        // }
-	        this._drawCommands += (this.texImage2DId + argc + "," + target + "," + level
-	        + "," + internalformat + "," + arguments[3] + "," + arguments[4]
-	        + "," + imgData + ";");
-	        GLog.d("[texImage2D] finish..." + imgData.length);
-	    }else if (9==argc){
-	        var image = arguments[5];
-	        this._drawCommands += (this.texImage2DId + argc + "," + target + "," + level
-	        + "," + internalformat + "," + arguments[3] + "," + arguments[4]
-	        + "," + arguments[5] + "," + arguments[6] + "," + arguments[7]
-	        + "," + arguments[8] + ";");
-	    }
-	};
-
-	GContextWebGL.prototype.texParameteri = function(target, pname, param){
-	    this._drawCommands += (this.texParameteriId + target + "," + pname + "," + param + ";");
-	};
-
-
-	GContextWebGL.prototype.uniform1f = function(location, value){
-	    this._drawCommands += (this.uniform1fId + location.id + "," + value + ";");
-	};
-
-	function trans2ArrayType(type, ar){
-	    if (ar instanceof type)
-	        return ar;
-	    var len = ar.length;
-	    var f32ar = new type(len);
-	    for (var i = 0; i < len; i++) {
-	        f32ar[i]=ar[i];
-	    }
-	    return f32ar;
-	}
-
-	GContextWebGL.prototype.uniformXXv = function(id, value, type, cmd){
-	    if (value.length == 0)
-	        return;
-
-	    value = trans2ArrayType(type, value);
-	    this._drawCommands += (cmd + id + ","
-	    + GarrToBase64(value) + ";");
-	};
-
-	GContextWebGL.prototype.uniform1f = function(location, value){
-	    this._drawCommands += (this.uniform1fId  + location.id + "," + value + ";");
-	};
-
-	GContextWebGL.prototype.uniform1fv = function(location, value){
-	    this.uniformXXv(location.id, value, Float32Array, this.uniform1fvId );
-	};
-
-	GContextWebGL.prototype.uniform1i = function(location, value){
-	    if (true == value)
-	        value= 1;
-	    else if (false == value)
-	        value = 0;
-	    this._drawCommands += (this.uniform1iId + location.id + "," + value + ";");
-	};
-
-	GContextWebGL.prototype.uniform1iv = function(location, value){
-	    this.uniformXXv(location.id, value, Int32Array, this.uniform1ivId );
-	};
-
-	GContextWebGL.prototype.uniform2f = function(location, x, y){
-	    this._drawCommands += (this.uniform2fId  + location.id + "," + x + "," + y + ";");
-	};
-
-	GContextWebGL.prototype.uniform2fv = function(location, value){
-	    this.uniformXXv(location.id, value, Float32Array, this.uniform2fvId);
-	};
-
-	GContextWebGL.prototype.uniform2i = function(location, x, y){
-	    this._drawCommands += (this.uniform2iId + location.id + "," + x + "," + y + ";");
-	};
-
-	GContextWebGL.prototype.uniform2iv = function(location, value){
-	    this.uniformXXv(location.id, value, Int32Array, this.uniform2ivId );
-	};
-
-	GContextWebGL.prototype.uniform3f = function(location, x, y, z){
-	    this._drawCommands += (this.uniform3fId + location.id + "," + x + "," + y + "," + z + ";");
-	};
-
-	GContextWebGL.prototype.uniform3fv = function(location, value){
-	    this.uniformXXv(location.id, value, Float32Array, this.uniform3fvId);
-	};
-
-	GContextWebGL.prototype.uniform3i = function(location, x, y, z){
-	    this._drawCommands += (this.uniform3iId + location.id + "," + x + "," + y + "," + z + ";");
-	};
-
-	GContextWebGL.prototype.uniform3iv = function(location, value){
-	    this.uniformXXv(location.id, value, Int32Array, this.uniform3ivId );
-	};
-
-	GContextWebGL.prototype.uniform4f = function(location, x, y, z, w){
-	    this._drawCommands += (this.uniform4fId + location.id + "," + x + "," + y + "," + z + "," + w + ";");
-	};
-
-	GContextWebGL.prototype.uniform4fv = function(location, value){
-	    this.uniformXXv(location.id, value, Float32Array, this.uniform4fvId);
-	};
-
-	GContextWebGL.prototype.uniform4i = function(location, x, y, z, w){
-	    this._drawCommands += (this.uniform4iId + location.id + "," + x + "," + y + "," + z + "," + w + ";");
-	};
-
-	GContextWebGL.prototype.uniform4iv = function(location, value){
-	    this.uniformXXv(location.id, value, Int32Array, this.uniform4ivId );
-	};
-
-
-
-	GContextWebGL.prototype.uniformMatrixXfv = function(location, transpose, value, apiId){
-	    if (value.length == 0)
-	        return;
-	    this._drawCommands += (apiId + location.id + "," + (transpose?1:0));
-	    this._drawCommands += "," + GarrToBase64(value) + (";");
-	};
-
-
-	GContextWebGL.prototype.uniformMatrix2fv = function(location, transpose, value){
-	    this.uniformMatrixXfv(location, transpose, value, this.uniformMatrix2fvId);
-	};
-
-	GContextWebGL.prototype.uniformMatrix3fv = function(location, transpose, value){
-	    this.uniformMatrixXfv(location, transpose, value, this.uniformMatrix3fvId);
-	};
-
-	GContextWebGL.prototype.uniformMatrix4fv = function(location, transpose, value){
-	    this.uniformMatrixXfv(location, transpose, value, this.uniformMatrix4fvId);
-	};
-
-
-	GContextWebGL.prototype.useProgram = function(program){
-	    this._drawCommands += (this.useProgramId + program.id + ";");
-	};
-
-	GContextWebGL.prototype.validateProgram = function(program){
-	    // TODO:
-	};
-
-	GContextWebGL.prototype.vertexAttrib2fv = function(index, value){
-	    this._drawCommands += this.vertexAttrib2fvId + index;
-	    for (var i = 0; i < value.length; i++) {
-	        this._drawCommands += ",";
-	        this._drawCommands += value[i].toFixed(3);
-	    }
-	};
-
-	GContextWebGL.prototype.vertexAttribPointer = function(index, size, type, normalized, stride, offset){
-	    this._drawCommands += (this.vertexAttribPointerId + index + "," + size + ","
-	    + type + "," + (normalized?1:0) + "," + stride + "," + offset + ";");
-	};
-
-
-	GContextWebGL.prototype.viewport = function(x, y, w, h) {
-	    this._drawCommands += (this.viewportId + x + "," + y + ","
-	    + w+ "," + h + ";");
-	};
-
-	GContextWebGL.prototype.getString = function(name) {
-	    var args = name;
-	    var result = GBridge.exeSyncCmd('getString',args);
-	    return result;
-	}
-	//extension for OES_vertex_array_object
-	GContextWebGL.prototype.bindVertexArrayOES = function(array) {
-	    this._drawCommands += (this.bindVertexArrayOESId + array + ";");
-	};
-
-	GContextWebGL.prototype.deleteVertexArraysOES = function(size, arrayRef) {
-	    this._drawCommands += (this.deleteVertexArraysOESId + size + "," + arrayRef + ";");
-	};
-
-	GContextWebGL.prototype.genVertexArraysOES = function(size, arrayRef) {
-	    this._drawCommands += (this.genVertexArraysOESId + size + "," + arrayRef + ";");
-	};
-
-	GContextWebGL.prototype.isVertexArrayOES = function(array) {
-	    var args = array;
-	    var result = GBridge.exeSyncCmd('isVertexArrayOES',args);
-	    return result;
-	};
-
-	//function autoInjectMetaViewport(){
-	//    var metas = document.getElementsByTagName("meta");
-	//    for (var i_matas = 0; i_matas < metas.length; ++i_matas) {
-	//        var meta_name = metas[i_matas].getAttribute("name");
-	//        if (meta_name == "viewport") {
-	//            return;
-	//        }
-	//    }
-	//    var injectMeta = "<meta n" + "ame='viewport' content='width=device-width, initial-scale=1.0' />"
-	//    GLog.d("[autoInjectMetaViewport] injectMeta:" + injectMeta);
-	//    document.write(injectMeta);
-	//};
-	//
-	//autoInjectMetaViewport();
-
-
-
-
-
-
-	module.exports = GContextWebGL;
-
-
-/***/ }),
-
-/***/ 169:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var GBridge = __webpack_require__(165).GBridge;
-	var GLog = __webpack_require__(165).GLog;
-	var GHashMap = __webpack_require__(167);
-	var GCanvasImage = __webpack_require__(164);
-
-	function GContext2D() {
-	    this._drawCommands = "";
-	    this._globalAlpha = 1.0;
-	    this._fillStyle = "rgb(0,0,0)";
-	    this._strokeStyle = "rgb(0,0,0)";
-	    this._lineWidth = 1;
-	    this._lineCap = "butt";
-	    this._lineJoin= "miter";
-	    this._miterLimit = 10;
-	    this._globalCompositeOperation = "source-over";
-	    this._textAlign = "start";
-	    this._textBaseline = "alphabetic";
-	    this._font = "10px sans-serif";
-	    this._images = {};
-	    this._canvases1 = {};
-	    this._canvases2 = {};
-	    this._getImageData = new Array();
-
-	//    GCanvas._forbiddenAutoReplaceCanvas =true;
-	//    this._apiCanvas  = document.createElement('canvas');
-	//    GCanvas._forbiddenAutoReplaceCanvas =false;
-	//    console.error("apicanvas="+this._apiCanvas);
-	//    this._apiContext = this._apiCanvas.getContext("2d");
-	//    this._apiContext.font = this._font;
-
-	    this._savedGlobalAlpha =[];
-	    this.timer = null;
-	    this.componentId = null;
-
-	    this._imageMap = new GHashMap();
-	    this._textureMap = new GHashMap();
-	    this._firstBindFlag = true;
-
-	}
-
-	function FillStylePattern(img, pattern) {
-	    this._style = pattern;
-	    this._img = img;
-	}
-
-	function FillStyleLinearGradient(x0, y0, x1, y1) {
-	    this._start_pos = { _x : x0, _y : y0 };
-	    this._end_pos = { _x : x1, _y : y1 };
-	    this._stop_count = 0;
-	    this._stops = [0, 0, 0, 0, 0];
-	}
-
-	FillStyleLinearGradient.prototype.addColorStop = function(pos, color) {
-	    if (this._stop_count < 5 && 0.0 <= pos && pos <= 1.0) {
-	        this._stops[this._stop_count] = { _pos : pos, _color : color };
-	        this._stop_count++;
-	    }
-	}
-
-	function FillStyleRadialGradient(x0, y0, r0, x1, y1, r1) {
-	    this._start_pos = { _x : x0, _y : y0, _r : r0 };
-	    this._end_pos = { _x : x1, _y : y1, _r : r1 };
-	    this._stop_count = 0;
-	    this._stops = [0, 0, 0, 0, 0];
-	}
-
-	FillStyleRadialGradient.prototype.addColorStop = function(pos, color) {
-	    if (this._stop_count < 5 && 0.0 <= pos && pos <= 1.0) {
-	        this._stops[this._stop_count] = { _pos : pos, _color : color };
-	        this._stop_count++;
-	    }
-	}
-
-	/**
-	 * Represents the alpha value to be used with drawing commands where 1 is
-	 * completely visible and 0 is fully transparent.
-	 *
-	 * @type {number}
-	 * @name GContext2D#globalAlpha
-	 */
-	Object.defineProperty(GContext2D.prototype, "globalAlpha", {
-	    get : function() {
-	        return this._globalAlpha;
-	    },
-	    set : function(value) {
-	        // if (this._globalAlpha != value) {
-	        this._globalAlpha = value;
-	        this._drawCommands = this._drawCommands.concat("a" + value.toFixed(6)
-	                + ";");
-	        // }
-	    }
-	});
-
-	/**
-	 * Represents the color or style to use inside shapes. It can only be a
-	 * string which must be parsed as CSS <color> value for now.
-	 *
-	 * @type {string}
-	 * @name GContext2D#fillStyle
-	 * @example // set context fillStyle context.fillStyle = 'rgb(121,194,245)';
-	 */
-	Object.defineProperty(GContext2D.prototype, "fillStyle", {
-	    get : function() {
-	        return this._fillStyle;
-	    },
-	    set : function(value) {
-	        this._fillStyle = value;
-
-	        if (typeof(value) == 'string') {
-	            this._drawCommands = this._drawCommands.concat("F" + value + ";");
-	        }
-	        else if (value instanceof FillStylePattern) {
-	            if (value._img instanceof Image) {
-	                if (!(value._img.src in this._images)) {
-	                    var new_image = GCanvas.createImage();
-	                    new_image.width = value._img.width;
-	                    new_image.height = value._img.height;
-	                    new_image.src = value._img.src;
-	                    new_image.complete = value._img.complete;
-	                    this._images[value._img.src] = new_image;
-	                } else {
-	                    this._drawCommands = this._drawCommands.concat("G" + this._images[value._img.src]._id + "," + value._style + ";");
-	                 }
-	            }
-	            else if (value._img instanceof GCanvasImage){
-	                this._drawCommands = this._drawCommands.concat("G" + value._img._id + "," + value._style + ";");
-	            }
-	        }
-	        else if (value instanceof FillStyleLinearGradient) {
-	            var command = "D" + value._start_pos._x + "," + value._start_pos._y + ","
-	                + value._end_pos._x + "," + value._end_pos._y + "," + value._stop_count;
-
-	            for (var i = 0; i < value._stop_count; ++i) {
-	                command += ("," + value._stops[i]._pos + "," + value._stops[i]._color);
-	            }
-	            this._drawCommands = this._drawCommands.concat(command + ";");
-	            //console.log('createLinearGradient command -> ' + command);
-	        }
-	        else if (value instanceof FillStyleRadialGradient) {
-	            var command = "H" + value._start_pos._x + "," + value._start_pos._y + "," + value._start_pos._r + ","
-	                + value._end_pos._x + "," + value._end_pos._y + "," + value._end_pos._r + "," + value._stop_count;
-
-	            for (var i = 0; i < value._stop_count; ++i) {
-	                command += ("," + value._stops[i]._pos + "," + value._stops[i]._color);
-	            }
-	            this._drawCommands = this._drawCommands.concat(command + ";");
-	            //console.log('FillStyleRadialGradient command -> ' + command);
-	        }
-	    }
-	});
-
-	/**
-	 * Represents the color or style for the lines. It can only be a string
-	 * which must be parsed as CSS <color> value for now.
-	 *
-	 * @type {string}
-	 * @name GContext2D#strokeStyle
-	 * @example // set context strokeStyle context.strokeStyle = 'rgb(121,194,245)';
-	 */
-	Object.defineProperty(GContext2D.prototype, "strokeStyle", {
-	    get : function() {
-	        return this._strokeStyle;
-	    },
-	    set : function(value) {
-	        this._strokeStyle = value;
-
-	        if (typeof(value) == 'string') {
-	            this._drawCommands = this._drawCommands.concat("S" + value + ";");
-	        }
-	        else if (value instanceof FillStylePattern) {
-	            if (value._img instanceof Image) {
-	                if (!(value._img.src in this._images)) {
-	                    var new_image = GCanvas.createImage();
-	                    new_image.width = value._img.width;
-	                    new_image.height = value._img.height;
-	                    new_image.src = value._img.src;
-	                    new_image.complete = value._img.complete;
-	                    this._images[value._img.src] = new_image;
-	                } else {
-	                    this._drawCommands = this._drawCommands.concat("G" + this._images[value._img.src]._id + "," + value._style + ";");
-	                 }
-	            }
-	            else if (value._img instanceof GCanvasImage){
-	                this._drawCommands = this._drawCommands.concat("G" + value._img._id + "," + value._style + ";");
-	            }
-	        }
-	        else if (value instanceof FillStyleLinearGradient) {
-	            var command = "D" + value._start_pos._x + "," + value._start_pos._y + ","
-	                + value._end_pos._x + "," + value._end_pos._y + "," + value._stop_count;
-
-	            for (var i = 0; i < value._stop_count; ++i) {
-	                command += ("," + value._stops[i]._pos + "," + value._stops[i]._color);
-	            }
-	            this._drawCommands = this._drawCommands.concat(command + ";");
-	            //console.log('createLinearGradient command -> ' + command);
-	        }
-	        else if (value instanceof FillStyleRadialGradient) {
-	            var command = "H" + value._start_pos._x + "," + value._start_pos._y + "," + value._start_pos._r + ","
-	                + value._end_pos._x + "," + value._end_pos._y + "," + value._end_pos._r + "," + value._stop_count;
-
-	            for (var i = 0; i < value._stop_count; ++i) {
-	                command += ("," + value._stops[i]._pos + "," + value._stops[i]._color);
-	            }
-	            this._drawCommands = this._drawCommands.concat(command + ";");
-	            //console.log('FillStyleRadialGradient command -> ' + command);
-	        }
-	    }
-	});
-
-	/**
-	 * Represents the width of the lines.
-	 *
-	 * @type {number}
-	 * @name GContext2D#lineWidth
-	 * @example // set context lineWidth context.lineWidth = 2;
-	 */
-	Object.defineProperty(GContext2D.prototype, "lineWidth", {
-	    get : function() {
-	        return this._lineWidth;
-	    },
-	    set : function(value) {
-	        this._lineWidth = value;
-	        this._drawCommands = this._drawCommands.concat("W" + value
-	                + ";");
-	    }
-	});
-	/**
-	 * The lineCap property sets or returns the style of the end caps for a line.
-	 *
-	 * @type {number}
-	 * @name GContext2D#lineCap
-	 * @example // set context lineCap context.lineCap="round";
-	 */
-	Object.defineProperty(GContext2D.prototype, "lineCap", {
-	    get : function() {
-	        return this._lineCap;
-	    },
-	    set : function(value) {
-	        this._lineCap = value;
-	        this._drawCommands = this._drawCommands.concat("C" + value + ";");
-	    }
-	});
-
-
-	/**
-	 * Sets or returns the type of corner created, when two lines meet
-	 *
-	 * @type {number}
-	 * @name GContext2D#lineJoin
-	 * @example // set context lineJoin context.lineJoin="round";
-	 */
-	Object.defineProperty(GContext2D.prototype, "lineJoin", {
-	    get : function() {
-	        return this._lineJoin;
-	    },
-	    set : function(value) {
-	        this._lineJoin = value;
-	        this._drawCommands = this._drawCommands.concat("J" + value + ";");
-	    }
-	});
-
-
-	/**
-	 * Sets or returns the maximum miter length
-	 *
-	 * @type {number}
-	 * @name GContext2D#miterLimit
-	 * @example // set context miterLimit context.miterLimit=10;
-	 */
-	Object.defineProperty(GContext2D.prototype, "miterLimit", {
-	    get : function() {
-	        return this._miterLimit;
-	    },
-	    set : function(value) {
-	        this._miterLimit = value;
-	        this._drawCommands = this._drawCommands.concat("M" + value + ";");
-	    }
-	});
-
-	/**
-	 * Represents the globalCompositeOperation value to be used with drawing
-	 * commands where 1 is completely visible and 0 is fully transparent.
-	 *
-	 * @type {number}
-	 * @name GContext2D#globalCompositeOperation
-	 */
-	Object.defineProperty(GContext2D.prototype, "globalCompositeOperation", {
-	    get : function() {
-	        return this._globalCompositeOperation;
-	    },
-
-	    set : function(value) {
-	        // if (this._globalCompositeOperation != value) {
-
-	        this._globalCompositeOperation = value;
-	        var mode = 0;
-	        switch (value) {
-	        case "source-over":
-	            mode = 0;
-	            break;
-	        case "source-atop":
-	            mode = 5;
-	            break;
-	        case "source-in":
-	            mode = 0;
-	            break;
-	        case "source-out":
-	            mode = 2;
-	            break;
-	        case "destination-over":
-	            mode = 4;
-	            break;
-	        case "destination-atop":
-	            mode = 4;
-	            break;
-	        case "destination-in":
-	            mode = 4;
-	            break;
-	        case "destination-out":
-	            mode = 3;
-	            break;
-	        case "lighter":
-	            mode = 1;
-	            break;
-	        case "copy":
-	            mode = 2;
-	            break;
-	        case "xor":
-	            mode = 6;
-	            break;
-	        default:
-	            mode = 0;
-	        }
-
-	        this._drawCommands = this._drawCommands.concat("B" + mode + ";");
-	        // }
-	    }
-	});
-
-	/**
-	 * Represents the textAlign value to be used with drawing commands
-	 *
-	 * @type {number}
-	 * @name GContext2D#textAlign
-	 */
-	Object.defineProperty(GContext2D.prototype, "textAlign", {
-	    get : function() {
-	        return this._textAlign;
-	    },
-
-	    set : function(value) {
-	        // if (this._textAlign != value) {
-	        this._textAlign = value;
-	        var Align = 0;
-	        switch (value) {
-	        case "start":
-	            Align = 0;
-	            break;
-	        case "end":
-	            Align = 1;
-	            break;
-	        case "left":
-	            Align = 2;
-	            break;
-	        case "center":
-	            Align = 3;
-	            break;
-	        case "right":
-	            Align = 4;
-	            break;
-	        default:
-	            Align = 0;
-	        }
-
-	        this._drawCommands = this._drawCommands.concat("A" + Align + ";");
-	        // }
-	    }
-
-	});
-
-	/**
-	 * Represents the _textBaseline value to be used with drawing commands
-	 *
-	 * @type {number}
-	 * @name GContext2D#_textBaseline
-	 */
-	Object.defineProperty(GContext2D.prototype, "textBaseline", {
-	    get : function() {
-	        return this._textBaseline;
-	    },
-
-	    set : function(value) {
-	        this._textBaseline = value;
-	        var baseline = 0;
-	        switch (value) {
-	        case "alphabetic":
-	            baseline = 0;
-	            break;
-	        case "middle":
-	            baseline = 1;
-	            break;
-	        case "top":
-	            baseline = 2;
-	            break;
-	        case "hanging":
-	            baseline = 3;
-	            break;
-	        case "bottom":
-	            baseline = 4;
-	            break;
-	        case "ideographic":
-	            baseline = 5;
-	            break;
-	        default:
-	            baseline = 0;
-	            break;
-	        }
-
-	        this._drawCommands = this._drawCommands.concat("E" + baseline + ";");
-	    }
-
-	});
-
-	/**
-	 * Represents the textAlign value to be used with drawing commands
-	 *
-	 * @type {number}
-	 * @name GContext2D#textAlign
-	 */
-	Object.defineProperty(GContext2D.prototype, "font", {
-	    get : function() {
-	        return this._font;
-	    },
-	    set : function(value) {
-	        // if (this._font != value) {
-	        this._font = value;
-	        //this._apiContext.font = this._font;
-	        this._drawCommands = this._drawCommands.concat("j" + value + ";");
-	        // }
-	    }
-
-	});
-
-	/**
-	 * Loads an image into the plugin to be used as a texture in the GCanvas.
-	 * Generally this method is never called directly. Instead, it is called
-	 * indirectly through GCanvasImage instances upon setting their
-	 * {@link GCanvasImage#src|GCanvasImage.src} property.
-	 *
-	 * @param {GCanvasImage}
-	 *            image The image to be loaded into the GCanvas plugin.
-	 * @param {function}
-	 *            [successCallback] A callback that is fired when the image has
-	 *            been successfully loaded.
-	 * @param {function}
-	 *            [errorCallback] A callback that is fired when there was an
-	 *            error in loading the image.
-	 * @example // create a new image and load // it from a relative URL path
-	 *          var myImage = GCanvas.createImage(); myImage.src =
-	 *          "images/spritesheet.jpg"; // calls loadTexture for you
-	 * @private
-	 */
-	GContext2D.prototype.loadTexture = function(image, successCallback, errorCallback) {
-	    var data = this._imageMap.get(image.src);
-	    if( data )
-	    {
-	        successCallback && successCallback(data);
-	        return;
-	    }
-
-	    var that = this;
-	    GBridge.preLoadImage([image.src, image.id], function(e){
-	        if (e){
-	            that._imageMap.put(image.src, e);
-	            successCallback && successCallback(e);
-	        }else{
-	            GLog.d("GContext2D loadTexture errorCallback!");
-	            errorCallback && errorCallback(e);
-	        }
-	    });
-	};
-
-	/**
-	 * Unloads an image from the GCanvas plugin. Generally this method is
-	 * never called directly. Instead, it is called indirectly through
-	 * GCanvasImage instances upon setting their
-	 * {@link GCanvasImage#src|GCanvasImage.src} property to a false value
-	 * such as <code>null</code> or an empty string (<code>""</code>).
-	 *
-	 * @param {GCanvasImage}
-	 *            image The image to be unloaded from the GCanvas plugin.
-	 * @example // unload an image from memory myImage.src = null; // calls
-	 *          unloadTexture for you
-	 * @private
-	 */
-	GContext2D.prototype.unloadTexture = function(image) {
-	    this._imageMap.remove(image.src);
-	};
-
-	/**
-	 * Defines the 2D matrix transform applied to drawings within the context.
-	 *
-	 * @param {number}
-	 *            a The value that affects the positioning of pixels along the x
-	 *            axis when scaling or rotating the context.
-	 * @param {number}
-	 *            b The value that affects the positioning of pixels along the y
-	 *            axis when rotating or skewing the context.
-	 * @param {number}
-	 *            c The value that affects the positioning of pixels along the x
-	 *            axis when rotating or skewing the context.
-	 * @param {number}
-	 *            d The value that affects the positioning of pixels along the y
-	 *            axis when scaling or rotating the context.
-	 * @param {number}
-	 *            tx The distance by which to translate the context along the x
-	 *            axis.
-	 * @param {number}
-	 *            ty The distance by which to translate the context along the y
-	 *            axis.
-	 */
-	GContext2D.prototype.setTransform = function(a, b, c, d, tx, ty) {
-	    this._drawCommands = this._drawCommands.concat("t"
-	            + (a === 1 ? "1" : a.toFixed(6)) + ","
-	            + (b === 0 ? "0" : b.toFixed(6)) + ","
-	            + (c === 0 ? "0" : c.toFixed(6)) + ","
-	            + (d === 1 ? "1" : d.toFixed(6)) + "," + tx + "," + ty + ";");
-	};
-
-	/**
-	 * Defines an added 2D matrix transform applied to drawings within the
-	 * context.
-	 *
-	 * @param {number}
-	 *            a The value added to the value that affects the positioning of
-	 *            pixels along the x axis when scaling or rotating the context.
-	 * @param {number}
-	 *            b The value added to the value that affects the positioning of
-	 *            pixels along the y axis when rotating or skewing the context.
-	 * @param {number}
-	 *            c The value added to the value that affects the positioning of
-	 *            pixels along the x axis when rotating or skewing the context.
-	 * @param {number}
-	 *            d The value added to the value that affects the positioning of
-	 *            pixels along the y axis when scaling or rotating the context.
-	 * @param {number}
-	 *            tx The value added to the distance by which to translate the
-	 *            context along the x axis.
-	 * @param {number}
-	 *            ty The value added to the distance by which to translate the
-	 *            context along the y axis.
-	 */
-	GContext2D.prototype.transform = function(a, b, c, d, tx, ty) {
-	    this._drawCommands = this._drawCommands.concat("f"
-	            + (a === 1 ? "1" : a.toFixed(6)) + ","
-	            + (b === 0 ? "0" : b.toFixed(6)) + ","
-	            + (c === 0 ? "0" : c.toFixed(6)) + ","
-	            + (d === 1 ? "1" : d.toFixed(6)) + "," + tx + "," + ty + ";");
-	};
-
-	/**
-	 * Restores the 2D matrix transform to the identity matrix. This is
-	 * equivalent to calling <code>context.setTransform(1,0,0,1,0,0)</code>.
-	 */
-	GContext2D.prototype.resetTransform = function() {
-	    this._drawCommands = this._drawCommands.concat("m;");
-	};
-
-	/**
-	 * Scales the 2D matrix transform along the x and y axes.
-	 *
-	 * @param {number}
-	 *            a The value added to the value that affects the positioning of
-	 *            pixels along the x axis when scaling or rotating the context.
-	 * @param {number}
-	 *            d The value added to the value that affects the positioning of
-	 *            pixels along the y axis when scaling or rotating the context.
-	 */
-	GContext2D.prototype.scale = function(a, d) {
-	    this._drawCommands = this._drawCommands.concat("k" + a.toFixed(6) + ","
-	            + d.toFixed(6) + ";");
-	};
-
-	/**
-	 * Rotates the 2D matrix transform by a specified number of radians.
-	 *
-	 * @param {number}
-	 *            angle The value in radians to rotate the context.
-	 */
-	GContext2D.prototype.rotate = function(angle) {
-	    this._drawCommands = this._drawCommands
-	            .concat("r" + angle.toFixed(6) + ";");
-	};
-
-	/**
-	 * Moves the 2D matrix transform along the x and y axes.
-	 *
-	 * @param {number}
-	 *            tx The value added to the distance by which to translate the
-	 *            context along the x axis.
-	 * @param {number}
-	 *            ty The value added to the distance by which to translate the
-	 *            context along the y axis.
-	 */
-	GContext2D.prototype.translate = function(tx, ty) {
-	    this._drawCommands = this._drawCommands.concat("l" + tx + "," + ty + ";");
-	};
-
-	/**
-	 * Sets a save point for the current context transform. This allows you to
-	 * arbitrarily modify the transform and restore it back to its to its
-	 * original state at the time save() was called by using restore().
-	 *
-	 * @see GContext2D#restore
-	 */
-	GContext2D.prototype.save = function() {
-	    this._savedGlobalAlpha.push(this._globalAlpha);
-	    this._drawCommands = this._drawCommands.concat("v;");
-	};
-
-	/**
-	 * Restores the state of the context transform to the state at the point in
-	 * time when save() was last called.
-	 *
-	 * @see GContext2D#save
-	 */
-	GContext2D.prototype.restore = function() {
-	    this._drawCommands = this._drawCommands.concat("e;");
-	    this._globalAlpha = this._savedGlobalAlpha.pop();
-	};
-
-
-	GContext2D.prototype._concatDrawCmd = function(numArgs, imageInfo,
-	    sx, sy, sw, sh, // source (or destination if fewer args)
-	    dx, dy, dw, dh){// destination
-
-	    if(!imageInfo){
-	        return;
-	    }
-
-	    if(numArgs === 3){
-	        var x = parseFloat(sx) || 0;
-	        var y = parseFloat(sy) || 0;
-
-	        this._drawCommands += ("d" + imageInfo.id + ",0,0,"
-	            + imageInfo.width + "," + imageInfo.height + ","
-	            + x + "," + y + "," + imageInfo.width + "," + imageInfo.height + ";");
-	    }else if(numArgs === 5){
-	        var x = parseFloat(sx) || 0;
-	        var y = parseFloat(sy) || 0;
-	        var width = parseInt(sw) || imageInfo.width;
-	        var height = parseInt(sh) || imageInfo.height;
-
-	        this._drawCommands += ("d" + imageInfo.id + ",0,0,"
-	            + imageInfo.width + "," + imageInfo.height + ","
-	            + x + "," + y + "," + width + "," + height + ";");
-	    }else if(numArgs === 9){
-	        var sx = parseFloat(sx) || 0;
-	        var sy = parseFloat(sy) || 0;
-	        var sw = parseInt(sw) || imageInfo.width;
-	        var sh = parseInt(sh) || imageInfo.height;
-	        var dx = parseFloat(dx) || 0;
-	        var dy = parseFloat(dy) || 0;
-	        var dw = parseInt(dw) || imageInfo.width;
-	        var dh = parseInt(dh) || imageInfo.height;
-
-	        this._drawCommands += ("d" + imageInfo.id + ","
-	            + sx + "," + sy + "," + sw + "," + sh + ","
-	            + dx + "," + dy + "," + dw + "," + dh + ";");
-	    }
-	};
-
-	GContext2D.prototype.drawImage = function(image, // image
-	    sx, sy, sw, sh, // source (or destination if fewer args)
-	    dx, dy, dw, dh) { // destination
-
-	    //GLog.d("[GContext2D.drawImage] start...");
-
-	    var that = this;
-	    var numArgs = arguments.length;
-
-	    var imageCache = this._getImageTexture(image.src);
-	    if (imageCache) {
-	        this._concatDrawCmd(numArgs, image, sx, sy, sw, sh, dx, dy, dw, dh);
-	        return;
-	    }
-
-	    if( GBridge.isIOS() )
-	    {
-	        GBridge.bindImageTexture(that.componentId, image.src, function(){});
-	        that._concatDrawCmd(numArgs, image, sx, sy, sw, sh, dx, dy, dw, dh);
-	        that._saveImageTexture(image.src, image);
-	    }
-	    else
-	    {
-	        GBridge.bindImageTexture(that.componentId, image.src, function(e){
-	            if( !e.error )
-	            {
-	                if(image.width === 0 && e.width > 0){
-	                  image.width = e.width;
-	                }
-
-	                if(image.height === 0 && e.height > 0){
-	                  image.height = e.height;
-	                }
-	                that._concatDrawCmd(numArgs, image, sx, sy, sw, sh, dx, dy, dw, dh);
-	                that._saveImageTexture(image.src, image);
-	            }
-	        });
-	    }
-	};
-
-
-	GContext2D.prototype._getImageTexture = function(url){
-	    if( url )
-	    {
-	        return this._textureMap.get(url);
-	    }
-	    return null;
-	}
-
-	GContext2D.prototype._removeImageTexture = function(url){
-	    if( url )
-	    {
-	        this._textureMap.remove(url);
-	    }
-	}
-
-
-	GContext2D.prototype._saveImageTexture = function(url, e){
-	    if( e && e.src )
-	    {
-	        this._textureMap.put(url, e);
-	    }
-	}
-
-	GContext2D.prototype._clearImageTextures = function(){
-	  this._textureMap.clear();
-	}
-
-
-	/**
-	 * Informs the drawing context that drawing commands have completed for the
-	 * current frame and the should be sent to the GCanvas plugin for drawing
-	 * to the screen.
-	 * <p>
-	 * This method is unique to GContext2D and does not exist within the HTML
-	 * 2D context, so the utility method {@link GCanvas.render} should be
-	 * used to make it easy to call or not call this method depending on the
-	 * context you are currently working with.
-	 * </p>
-	 *
-	 * @example // makes necessary GCanvas render call // if canvas being
-	 *          used is GCanvas var myCanvas = GCanvas.create(); var
-	 *          myContext = myCanvas.getContext("2d");
-	 *  // ... myContext.translate(10,10); myContext.rotate(Math.PI); //
-	 * ...
-	 *  // after all context calls are complete // for the current frame:
-	 * GCanvas.render(); // calls GContext2D.render()
-	 */
-
-	GContext2D.prototype.render = function(flag) {
-	    if (this.timer && typeof flag === "undefined"){
-	        clearInterval(this.timer);
-	        this.timer = null;
-	    }
-
-	    var commands = this._drawCommands;
-	    this._drawCommands = "";
-	    if (commands !== null && commands !== "") {
-	        GBridge.callRender(this.componentId, commands);
-	    }
-	};
-
-	/**
-	 * Implementation of GCanvas.capture.
-	 *
-	 * @private
-	 */
-	GContext2D.prototype.capture = function(x, y, w, h, fileName, successCallback, errorCallback) {
-	    // if (successCallback && typeof successCallback !== 'function') {
-	    //     throw new Error('successCallback parameter not a function');
-	    // }
-	    // if (errorCallback && typeof errorCallback !== 'function') {
-	    //     throw new Error('errorCallback parameter not a function');
-	    // }
-
-	    // GCanvas._toNative(successCallback, errorCallback, 'GCanvas',
-	    //         'capture', [ x, y, w, h, fileName ]);
-	};
-
-
-	GContext2D.prototype.createPattern = function(img, pattern) {
-	    return new FillStylePattern(img, pattern);
-	};
-
-	/**
-	 * Implementation of GCanvas.createLinearGradient(x0, y0, x1, y1).
-	 *
-	 * @private
-	 */
-	 GContext2D.prototype.createLinearGradient = function(x0, y0, x1, y1) {
-	    return new FillStyleLinearGradient(x0, y0, x1, y1);
-	};
-
-	/**
-	 * Implementation of GCanvas.createRadialGradient(x0, y0, x1, y1).
-	 *
-	 * @private
-	 */
-	 GContext2D.prototype.createRadialGradient = function(x0, y0, r0, x1, y1, r1) {
-	    return new FillStyleRadialGradient(x0, y0, r0, x1, y1, r1);
-	};
-
-	GContext2D.prototype.strokeRect = function(x, y, w, h, successCallback,
-	        errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("s" + x + "," + y + "," + w
-	            + "," + h + ";");
-	};
-
-	GContext2D.prototype.clearRect = function(x, y, w, h, successCallback,
-	        errorCallback) {
-	    // TODO: enable it later.
-	    this._drawCommands = this._drawCommands.concat("c" + x + "," + y + "," + w
-	        + "," + h + ";");
-	}
-
-	GContext2D.prototype.clip = function(successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("p;");
-	}
-
-	GContext2D.prototype.resetClip = function(successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("q;");
-	}
-
-	GContext2D.prototype.closePath = function(successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("o;");
-	}
-
-	GContext2D.prototype.moveTo = function(x, y, successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("g" + x.toFixed(6) + ","
-	            + y.toFixed(6) + ";");
-	}
-
-	GContext2D.prototype.lineTo = function(x, y, successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("i" + x.toFixed(6) + ","
-	            + y.toFixed(6) + ";");
-	}
-
-	GContext2D.prototype.quadraticCurveTo = function(cpx, cpy, x, y,
-	        successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("u" + cpx + "," + cpy + ","
-	            + x + "," + y + ";");
-	}
-
-	GContext2D.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y,
-	        successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("z" + cp1x + "," + cp1y
-	            + "," + cp2x + "," + cp2y + "," + x + "," + y + ";");
-	}
-
-	GContext2D.prototype.arcTo = function(x1, y1, x2, y2, radius,
-	        successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("h" + x1 + "," + y1 + ","
-	            + x2 + "," + y2 + "," + radius + ";");
-	}
-
-	/**
-	 * Resets the current default path.
-	 *
-	 * @param null
-	 */
-	GContext2D.prototype.beginPath = function() {
-	    this._drawCommands = this._drawCommands.concat("b;");
-	};
-
-	/**
-	 * Paint the specified rectangular area using the fillStyle. If either
-	 * height or width are zero, this method has no effect.
-	 *
-	 * @param {number}
-	 *            x The x location of the source clipping rectangle
-	 * @param {number}
-	 *            y The y location of the source clipping rectangle
-	 * @param {number}
-	 *            w The width of the rectangle
-	 * @param {number}
-	 *            h The height of the rectangle
-	 */
-	GContext2D.prototype.fillRect = function(x, y, w, h) {
-	    this._drawCommands = this._drawCommands.concat("n" + x + "," + y + "," + w
-	            + "," + h + ";");
-	};
-
-	/**
-	 * Adds a new closed subpath to the path, representing the given rectangle.
-	 *
-	 * @param {number}
-	 *            x The x location of the rectangle
-	 * @param {number}
-	 *            y The y location of the rectangle
-	 * @param {number}
-	 *            w The width of the rectangle
-	 * @param {number}
-	 *            h The height of the rectangle
-	 */
-	GContext2D.prototype.rect = function(x, y, w, h) {
-	    this._drawCommands = this._drawCommands.concat("w" + x + "," + y + "," + w
-	            + "," + h + ";");
-	};
-
-	/**
-	 * Fills the subpaths of the current default path or the given path with the
-	 * current fill style.
-	 *
-	 * @param {string}
-	 *            path The given path to fill.
-	 */
-	GContext2D.prototype.fill = function(path) {
-	    this._drawCommands = this._drawCommands.concat("L;");
-	};
-
-	/**
-	 * Strokes the subpaths of the current default path or the given path with
-	 * the current stroke style.
-	 *
-	 * @param {string}
-	 *            path The given path to stroke.
-	 */
-	GContext2D.prototype.stroke = function(path) {
-	    this._drawCommands = this._drawCommands.concat("x;");
-	};
-
-	/**
-	 * Adds points to the subpath such that the arc described by the
-	 * circumference of the circle described by the arguments, starting at the
-	 * given start angle and ending at the given end angle, going in the given
-	 * direction (defaulting to clockwise), is added to the path, connected to
-	 * the previous point by a straight line.
-	 *
-	 * @param {number}
-	 *            x
-	 * @param {number}
-	 *            y
-	 * @param {number}
-	 *            radius
-	 * @param {number}
-	 *            startAngle
-	 * @param {number}
-	 *            endAngle
-	 * @param {string}
-	 *            anticlockwise
-	 */
-	GContext2D.prototype.arc = function(x, y, radius, startAngle, endAngle,
-	        anticlockwise) {
-
-	    var ianticlockwise = 0;
-	    if (anticlockwise)
-	        ianticlockwise = 1;
-
-	    this._drawCommands = this._drawCommands.concat("y" + x + "," + y + ","
-	            + radius + "," + startAngle + "," + endAngle + "," + ianticlockwise
-	            + ";");
-	};
-
-
-
-	GContext2D.prototype.fillText = function(text, x, y) {
-	    var tmptext =text.replace(/!/g,"!!");
-	        tmptext =tmptext.replace(/,/g,"!,");
-	        tmptext =tmptext.replace(/;/g,"!;");
-	    this._drawCommands = this._drawCommands.concat("T" + tmptext + "," + x + ","
-	            + y + ",0.0;");
-	};
-
-	GContext2D.prototype.strokeText = function(text, x, y) {
-	    this._drawCommands = this._drawCommands.concat("U" + text + "," + x + ","
-	            + y + ",0.0;");
-	};
-
-
-	//TODO:这个api有用需要原生的canvas对象,所以不支持
-	GContext2D.prototype.measureText = function(text) {
-	    return -1;
-	    //return this._apiContext.measureText(text);
-	};
-
-	GContext2D.prototype.isPointInPath = function(x,y) {
-	    return true;
-	};
-
-
-	/////////////////////////////////////////////////////////////////
-	//base64
-	/////////////////////////////////////////////////////////////////
-
-	function GarrToBase64(buffer) {
-	    var binary = ''
-	    var bytes = new Uint8Array( buffer )
-	    var len = bytes.byteLength;
-	    for (var i = 0; i < len; i++) {
-	        binary += String.fromCharCode( bytes[ i ] )
-	    }
-	    return btoa( binary );
-	}
-
-	function _GcharDecode (nChr) {
-	  return nChr > 64 && nChr < 91 ?
-	      nChr - 65
-	    : nChr > 96 && nChr < 123 ?
-	      nChr - 71
-	    : nChr > 47 && nChr < 58 ?
-	      nChr + 4
-	    : nChr === 43 ?
-	      62
-	    : nChr === 47 ?
-	      63
-	    :
-	      0;
-	}
-
-	function Gbase64ToArr (sBase64, nBlocksSize) {
-	  var
-	    sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length,
-	    nOutLen = nBlocksSize ? Math.ceil((nInLen * 3 + 1 >> 2) / nBlocksSize) * nBlocksSize : nInLen * 3 + 1 >> 2, taBytes = new Uint8Array(nOutLen);
-
-	  for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
-	    nMod4 = nInIdx & 3;
-	    nUint24 |= _GcharDecode(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;
-	    if (nMod4 === 3 || nInLen - nInIdx === 1) {
-	      for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
-	        taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;
-	      }
-	      nUint24 = 0;
-
-	    }
-	  }
-
-	  return taBytes;
-	}
-
-
-
-	/////////////////////////////////////////////////////////////////
-	//GCanvasImage
-	/////////////////////////////////////////////////////////////////
-	function GImageData(w, h) {
-	    GLog.d("GImageData wh=" + w + "," + h);
-	    this.width = w;
-	    this.height = h;
-	    this.data = new Uint8Array(w*h*4);
-	}
-
-	GContext2D.prototype.createImageData = function(w, h) {
-	    GLog.d("GContext2D::createImageData wh=" + w + "," + h);
-	    return new GImageData(w,h);
-	};
-
-
-	GContext2D.prototype._putImageData = function(data,dx, dy, sw, sh,  dw, dh){
-	    this._drawCommands = this._drawCommands.concat("P"
-	        + dx + ","
-	        + dy + ","
-	        + sw + ","
-	        + sh + ","
-	        + dw + ","
-	        + dh + ","
-	        + GarrToBase64(data) + ";");
-	}
-	GContext2D.prototype.putImageData = function(imgData, x, y, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {
-	    GLog.d("GContext2D::putImageData [" + arguments.length + "] "
-	        + "dest_xy=(" + x + "," + y + ") "
-	        + "dirty_xy=(" + dirtyX + "," + dirtyY + ") "
-	        + "dirty_wh=(" + dirtyWidth + "," + dirtyHeight + ") ");
-
-	    if (arguments.length <= 3){
-	        this._putImageData(imgData.data, x, y, imgData.width, imgData.height, imgData.width, imgData.height);
-	    }
-	    else{
-	        var destData = new Uint8Array(dirtyWidth*dirtyHeight*4);
-	        var imgPos;
-	        var destPos = 0
-	        for(var i =0; i < dirtyHeight; i++){
-	            imgPos = (imgData.width*(dirtyY + i) + dirtyX)*4;
-	            for(var j=0; j< dirtyWidth; ++j){
-	                destData[destPos++]=imgData.data[imgPos++];
-	                destData[destPos++]=imgData.data[imgPos++];
-	                destData[destPos++]=imgData.data[imgPos++];
-	                destData[destPos++]=imgData.data[imgPos++];
-	            }
-	        }
-
-	        this._putImageData(destData, x+dirtyX, y+dirtyY, dirtyWidth, dirtyHeight, dirtyWidth, dirtyHeight);
-	    }
-	};
-
-
-	GContext2D.prototype.getImageDataAsyn = function(x, y, w, h) {
-	    return '';
-	    // GLog.d("GContext2D::getImageDataAsyn xy=(" + x + "," + y + "), wh=(" + w + ","+ h +")");
-	    // GCanvas._instance.getContext().render("auto");
-	    // var len = w*h;
-	    // var imgData = new GImageData(w,h);
-	    // imgData._x = x;
-	    // imgData._y = y;
-	    // imgData._dataGet = 0;
-	    // imgData._split = 0;
-	    // var me = this;
-	    // me._getImageData.push(imgData);
-
-	    // var h2 = Math.floor(262144/w);// 2^18
-	    // if (h2 < h)
-	    //     imgData._split = 1;
-
-	    // function getImageDataAsynSuccess(getData) {
-	    //     var destData = me._getImageData[0];
-	    //     GLog.d("GContext2D::getImageDataAsyn: dataGet=" + destData._dataGet);
-	    //     if (0 == destData._split){// one part
-	    //         destData.data = Gbase64ToArr(getData);
-	    //         destData._dataGet += destData.data.length;
-	    //     }else{// multi parts
-	    //         var taBytes  = Gbase64ToArr(getData);
-	    //         destData._dataGet += taBytes.length;
-	    //         for (var i=0;i<taBytes.length;i++){
-	    //             destData.data[destData._dataGet+i] = taBytes[i];
-	    //         }
-	    //     }
-
-	    //     if (destData._dataGet >= (destData._x*destData._y)){
-	    //         if (typeof destData.onload === 'function') {
-	    //             GLog.d("GContext2D::getImageDataAsyn: callback exec.");
-	    //             destData.onload();
-	    //         }
-	    //         me._getImageData.splice(0,1);//delete first data
-	    //     }
-	    // }
-
-	    // for(var i=0; i<h; i+= h2){
-	    //     GCanvas._toNative(getImageDataAsynSuccess, getImageDataAsynSuccess, 'GCanvas',
-	    //             'getImageData', [ x, y+i, w, (i+h2>h)?(h-i):h2 ]);
-	    // }
-
-
-	    // return imgData;
-	};
-
-
-
-	module.exports = GContext2D;
-
-
-/***/ }),
-
-/***/ 170:
-/***/ (function(module, exports) {
-
-	
-	var context;
-	function getProto (Weex) {
-	  return {
-	    create: function () {
-	      this.node = document.createElement('canvas')
-	      return this.node
-	    },
-	    getContext: function (type) {
-	      context = this.node.getContext(type || '2d')
-	      return context
-	    },
-
-	    getContextAsyn: function (type, callback) {
-	      context = this.node.getContext(type || '2d')
-	      callback(context)
-	    },
-
-	    drawImage: function (url) {
-	      var img = new Image();
-	      img.src = url
-	      arguments[0] = img
-	      return context.drawImage.apply(context, arguments)
-	    }
-
-	  }
-	}
-
-	function init (Weex) {
-	  var Component = Weex.Component
-	  var extend = Weex.utils.extend
-
-	  function GCanvas (data) {
-	    Component.call(this, data)
-	  }
-
-	  GCanvas.prototype = Object.create(Component.prototype)
-	  extend(GCanvas.prototype, getProto(Weex))
-
-	  Weex.registerComponent('gcanvas', GCanvas)
-	}
-
-	module.exports =  {
-	  init: init
-	}
-
-
-
-/***/ }),
-
-/***/ 171:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    ref: "test",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c(_vm.tagName, {
-	    ref: "canvas_holder",
-	    tag: "component",
-	    staticStyle: _vm.$processStyle({
-	      "width": "750px",
-	      "height": "750px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "width": "750",
-	      "height": "750"
-	    }
-	  })], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-096734e7", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/modules/clipboard.js b/src/main/assets/vue-web/vue/modules/clipboard.js
deleted file mode 100644
index 647af44..0000000
--- a/src/main/assets/vue-web/vue/modules/clipboard.js
+++ /dev/null
@@ -1,1102 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(172)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 14:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(15)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(17),
-	  /* template */
-	  __webpack_require__(18),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-33548b34",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.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] button.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-33548b34", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-33548b34", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 15:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(16);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("3204e9c3", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 16:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.btn[data-v-33548b34] {\n  margin-bottom: 0;\n  align-items: center;\n  justify-content: center;\n  border-width: 1px;\n  border-style: solid;\n  border-color: #333;\n\n  /*white-space: nowrap;*/\n  /*vertical-align: middle;*/\n  /*touch-action: manipulation;*/\n  /*cursor: pointer;*/\n  /*-webkit-user-select: none;*/\n  /*background-image: none;*/\n  /*border-image-source: initial;*/\n  /*border-image-slice: initial;*/\n  /*border-image-width: initial;*/\n  /*border-image-outset: initial;*/\n  /*border-image-repeat: initial;*/\n}\n.btn-txt[data-v-33548b34] {\n}\n\n/**TYPE**/\n.btn-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-primary[data-v-33548b34] {\n  background-color: rgb(40, 96, 144);\n  border-color: rgb(40, 96, 144);\n}\n.btn-success[data-v-33548b34] {\n  background-color: rgb(92, 184, 92);\n  border-color: rgb(76, 174, 76);\n}\n.btn-info[data-v-33548b34] {\n  background-color: rgb(91, 192, 222);\n  border-color: rgb(70, 184, 218);\n}\n.btn-warning[data-v-33548b34] {\n  background-color: rgb(240, 173, 78);\n  border-color: rgb(238, 162, 54);\n}\n.btn-danger[data-v-33548b34] {\n  background-color: rgb(217, 83, 79);\n  border-color: rgb(212, 63, 58);\n}\n.btn-link[data-v-33548b34] {\n  border-color: transparent;\n  border-radius: 0;\n}\n.btn-txt-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-txt-primary[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-success[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-info[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-warning[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-danger[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-link[data-v-33548b34] {\n  color: rgb(51, 122, 183);\n  /*font-weight: 400;*/\n}\n\n/**SIZE**/\n.btn-sz-large[data-v-33548b34] {\n  width: 300px;\n  height: 100px;\n  padding-top: 25px;\n  padding-bottom: 25px;\n  padding-left: 40px;\n  padding-right: 40px;\n  /*line-height: 1.33333;*/\n  border-radius: 15px;\n}\n.btn-sz-middle[data-v-33548b34] {\n  width: 240px;\n  height: 80px;\n  padding-top: 15px;\n  padding-bottom: 15px;\n  padding-left: 30px;\n  padding-right: 30px;\n  /*line-height: 1.42857;*/\n  border-radius: 10px;\n}\n.btn-sz-small[data-v-33548b34] {\n  width: 170px;\n  height: 60px;\n  padding-top: 12px;\n  padding-bottom: 12px;\n  padding-left: 25px;\n  padding-right: 25px;\n  /*line-height: 1.5;*/\n  border-radius: 7px;\n}\n.btn-txt-sz-large[data-v-33548b34] {\n  font-size: 45px;\n}\n.btn-txt-sz-middle[data-v-33548b34] {\n  font-size: 35px;\n}\n.btn-txt-sz-small[data-v-33548b34] {\n  font-size: 30px;\n}\n\n/*DISABLED*/\n.disabled[data-v-33548b34] {\n}\n\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 17:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 18:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-33548b34", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 22:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(23)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(25),
-	  /* template */
-	  __webpack_require__(26),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-f15788ee",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.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] tip.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-f15788ee", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-f15788ee", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 23:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(24);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("b14ba53e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 24:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.tip[data-v-f15788ee] {\n  padding-left: 36px;\n  padding-right: 36px;\n  padding-top: 36px;\n  padding-bottom: 36px;\n  border-radius: 10px;\n}\n.tip-txt[data-v-f15788ee]{\n  font-size: 28px;\n}\n.tip-success[data-v-f15788ee] {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.tip-txt-success[data-v-f15788ee] {\n  color: #3c763d;\n}\n.tip-info[data-v-f15788ee] {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.tip-txt-info[data-v-f15788ee] {\n  color: #31708f;\n}\n.tip-warning[data-v-f15788ee] {\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.tip-txt-warning[data-v-f15788ee] {\n  color: #8a6d3b;\n}\n.tip-danger[data-v-f15788ee] {\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.tip-txt-danger[data-v-f15788ee] {\n  color: #a94442;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 25:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 26:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-f15788ee", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 172:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(173),
-	  /* template */
-	  __webpack_require__(174),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/clipboard.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] clipboard.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-12d9e9ba", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-12d9e9ba", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 173:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	var clipboard = weex.requireModule('clipboard');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      textToCopy: '',
-	      textFromPaste: '',
-	      tips: ''
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9),
-	    tip: __webpack_require__(22),
-	    button: __webpack_require__(14)
-	  },
-	  mounted: function mounted() {
-	    this.tips = "1. Just click COPY button. It will auto generate a string with random text, and copy to system clipboard. \n 2. do copy in another app, then come back and click PASTE button.";
-	  },
-	  methods: {
-	    doCopy: function doCopy() {
-	      modal.toast({ 'message': 'doCopy!', duration: 0.5 });
-	      textToCopy = "autoGenerateTextToCopy" + Math.random();
-	      clipboard.setString(textToCopy);
-	      this.textToCopy = textToCopy;
-	      this.tips = "copy done. Now system clipboard has string of '" + textToCopy + "', try PASTE button, or paste in another app.";
-	    },
-	    doPaste: function doPaste() {
-	      var me = this;
-	      modal.toast({ 'message': 'doPaste!', duration: 0.5 });
-	      clipboard.getString(function (ret) {
-	        console.log("paste result is " + JSON.stringify(ret));
-	        me.textFromPaste = ret.data;
-	        me.tips = "Paste done. Only support native(Android/iOS) NOW. according to security reason, paste in html5 is not supported.";
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 174:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Clipboard",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Copy to clipboard5"
-	    }
-	  }, [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "line-height": "40px",
-	      "font-size": "28px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.textToCopy))]), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "info",
-	      "size": "middle",
-	      "value": "Copy"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.doCopy($event)
-	      }
-	    }
-	  })]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Paste from clipboard"
-	    }
-	  }, [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "line-height": "40px",
-	      "font-size": "28px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.textFromPaste))]), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "info",
-	      "size": "middle",
-	      "value": "Paste"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.doPaste($event)
-	      }
-	    }
-	  })]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Result"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-bottom": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": _vm.tips
-	    }
-	  })], 1)], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-12d9e9ba", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/modules/instance-api.js b/src/main/assets/vue-web/vue/modules/instance-api.js
deleted file mode 100644
index f2644ba..0000000
--- a/src/main/assets/vue-web/vue/modules/instance-api.js
+++ /dev/null
@@ -1,736 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(175)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 175:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(176),
-	  /* template */
-	  __webpack_require__(177),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/instance-api.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] instance-api.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-c510a736", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-c510a736", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 176:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      config: ''
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9)
-	  },
-	  created: function created() {
-	    var config = this.$getConfig();
-	    console.log('config', JSON.stringify(config));
-	    this.config = JSON.stringify(config, null, 2);
-	  }
-	};
-
-/***/ }),
-
-/***/ 177:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "$getConfig()",
-	      "type": "primary"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.config))])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-c510a736", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/modules/modal.js b/src/main/assets/vue-web/vue/modules/modal.js
deleted file mode 100644
index 07b43d5..0000000
--- a/src/main/assets/vue-web/vue/modules/modal.js
+++ /dev/null
@@ -1,977 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(178)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 14:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(15)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(17),
-	  /* template */
-	  __webpack_require__(18),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-33548b34",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.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] button.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-33548b34", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-33548b34", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 15:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(16);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("3204e9c3", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 16:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.btn[data-v-33548b34] {\n  margin-bottom: 0;\n  align-items: center;\n  justify-content: center;\n  border-width: 1px;\n  border-style: solid;\n  border-color: #333;\n\n  /*white-space: nowrap;*/\n  /*vertical-align: middle;*/\n  /*touch-action: manipulation;*/\n  /*cursor: pointer;*/\n  /*-webkit-user-select: none;*/\n  /*background-image: none;*/\n  /*border-image-source: initial;*/\n  /*border-image-slice: initial;*/\n  /*border-image-width: initial;*/\n  /*border-image-outset: initial;*/\n  /*border-image-repeat: initial;*/\n}\n.btn-txt[data-v-33548b34] {\n}\n\n/**TYPE**/\n.btn-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-primary[data-v-33548b34] {\n  background-color: rgb(40, 96, 144);\n  border-color: rgb(40, 96, 144);\n}\n.btn-success[data-v-33548b34] {\n  background-color: rgb(92, 184, 92);\n  border-color: rgb(76, 174, 76);\n}\n.btn-info[data-v-33548b34] {\n  background-color: rgb(91, 192, 222);\n  border-color: rgb(70, 184, 218);\n}\n.btn-warning[data-v-33548b34] {\n  background-color: rgb(240, 173, 78);\n  border-color: rgb(238, 162, 54);\n}\n.btn-danger[data-v-33548b34] {\n  background-color: rgb(217, 83, 79);\n  border-color: rgb(212, 63, 58);\n}\n.btn-link[data-v-33548b34] {\n  border-color: transparent;\n  border-radius: 0;\n}\n.btn-txt-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-txt-primary[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-success[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-info[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-warning[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-danger[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-link[data-v-33548b34] {\n  color: rgb(51, 122, 183);\n  /*font-weight: 400;*/\n}\n\n/**SIZE**/\n.btn-sz-large[data-v-33548b34] {\n  width: 300px;\n  height: 100px;\n  padding-top: 25px;\n  padding-bottom: 25px;\n  padding-left: 40px;\n  padding-right: 40px;\n  /*line-height: 1.33333;*/\n  border-radius: 15px;\n}\n.btn-sz-middle[data-v-33548b34] {\n  width: 240px;\n  height: 80px;\n  padding-top: 15px;\n  padding-bottom: 15px;\n  padding-left: 30px;\n  padding-right: 30px;\n  /*line-height: 1.42857;*/\n  border-radius: 10px;\n}\n.btn-sz-small[data-v-33548b34] {\n  width: 170px;\n  height: 60px;\n  padding-top: 12px;\n  padding-bottom: 12px;\n  padding-left: 25px;\n  padding-right: 25px;\n  /*line-height: 1.5;*/\n  border-radius: 7px;\n}\n.btn-txt-sz-large[data-v-33548b34] {\n  font-size: 45px;\n}\n.btn-txt-sz-middle[data-v-33548b34] {\n  font-size: 35px;\n}\n.btn-txt-sz-small[data-v-33548b34] {\n  font-size: 30px;\n}\n\n/*DISABLED*/\n.disabled[data-v-33548b34] {\n}\n\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 17:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 18:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-33548b34", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 178:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(179),
-	  /* template */
-	  __webpack_require__(180),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/modal.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] modal.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-78a4073a", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-78a4073a", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 179:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {};
-	  },
-	  components: {
-	    panel: __webpack_require__(9),
-	    button: __webpack_require__(14)
-	  },
-	  methods: {
-	    toast: function toast(msg, duration) {
-	      if (!msg || typeof msg !== 'string') {
-	        msg = 'I am Toast show!';
-	      }
-	      duration = duration || 2;
-	      modal.toast({
-	        'message': msg,
-	        'duration': duration
-	      });
-	    },
-	    alert: function alert(msg, okTitle, cancelTitle) {
-	      if (!msg || typeof msg !== 'string') {
-	        msg = "I am Alert!";
-	      }
-	      modal.alert({
-	        'message': msg,
-	        'okTitle': okTitle,
-	        'cancelTitle': cancelTitle
-	      }, function () {
-	        modal.toast({ message: "Click Alert OK Bnt!!" });
-	      });
-	    },
-	    confirm: function confirm(msg, okTitle, cancelTitle) {
-	      if (!msg || typeof msg !== 'string') {
-	        msg = "I am Confirm!";
-	      }
-	      okTitle = okTitle || "OK";
-	      cancelTitle = cancelTitle || "Cancel";
-	      modal.confirm({
-	        'message': msg,
-	        'okTitle': okTitle,
-	        'cancelTitle': cancelTitle
-	      }, function (result) {
-	        modal.toast({ message: "Click Confirm  " + JSON.stringify(result) });
-	      });
-	    },
-	    prompt: function prompt() {
-	      modal.prompt({
-	        'message': 'I am Prompt!',
-	        'okTitle': 'ok',
-	        'cancelTitle': 'cancel'
-	      }, function (result) {
-	        modal.toast({ message: "Click Prompt  " + JSON.stringify(result) });
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 180:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Toast",
-	      "type": "primary"
-	    }
-	  }, [_c('button', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "primary",
-	      "value": "Toast"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.toast($event)
-	      }
-	    }
-	  })]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Dialog",
-	      "type": "primary"
-	    }
-	  }, [_c('button', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-bottom": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "success",
-	      "value": "Alert"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.alert($event)
-	      }
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-bottom": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "primary",
-	      "value": "Confirm"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.confirm($event)
-	      }
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "warning",
-	      "value": "Prompt"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.prompt($event)
-	      }
-	    }
-	  })])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-78a4073a", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/modules/picker.js b/src/main/assets/vue-web/vue/modules/picker.js
deleted file mode 100644
index c9e9a67..0000000
--- a/src/main/assets/vue-web/vue/modules/picker.js
+++ /dev/null
@@ -1,706 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(181)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 181:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(182)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(184),
-	  /* template */
-	  __webpack_require__(185),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/picker.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] picker.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-c0314b5e", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-c0314b5e", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 182:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(183);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("1ae92393", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-c0314b5e\",\"scoped\":false,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./picker.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-c0314b5e\",\"scoped\":false,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./picker.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 183:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.container {\n\tflex: 1;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 184:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var picker = weex.requireModule('picker');
-	module.exports = {
-	  data: {
-	    normalpickData: '',
-	    pickDateData: '',
-	    pickTimeData: ''
-	  },
-	  methods: {
-	    normalpick: function normalpick() {
-	      var self = this;
-	      picker.pick({
-	        height: '300px',
-	        items: [1, 2, 3, 4]
-	      }, function (ret) {
-	        var result = ret.result;
-	        if (result == 'success') {
-	          self.normalpickData = ret.data;
-	        }
-	      });
-	    },
-	    pickDate: function pickDate(e) {
-	      var self = this;
-	      picker.pickDate({
-	        'value': '2016-12-20',
-	        'max': '2016-12-30',
-	        'min': '2014-12-30'
-	      }, function (ret) {
-	        var result = ret.result;
-	        if (result == 'success') {
-	          self.pickDateData = ret.data;
-	        }
-	      });
-	    },
-	    pickTime: function pickTime() {
-	      var self = this;
-	      picker.pickTime({}, function (ret) {
-	        var result = ret.result;
-	        if (result == 'success') {
-	          self.pickTimeData = ret.data;
-	        }
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 185:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "conatiner",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80px",
-	      "padding": "20px",
-	      "color": "white"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("picker")])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "margin": "20px",
-	      "padding": "20px",
-	      "background-color": "#1ba1e2",
-	      "color": "#fff"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.normalpick
-	    }
-	  }, [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "color": "#fff"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("normalpick" + _vm._s(_vm.normalpickData))])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "margin": "20px",
-	      "padding": "20px",
-	      "background-color": "#1ba1e2",
-	      "color": "#fff"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.pickDate
-	    }
-	  }, [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "color": "#fff"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("pickDate" + _vm._s(_vm.pickDateData))])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "margin": "20px",
-	      "padding": "20px",
-	      "background-color": "#1ba1e2",
-	      "color": "#fff"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.pickTime
-	    }
-	  }, [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "color": "#fff"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("pickTime" + _vm._s(_vm.pickTimeData))])])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-c0314b5e", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/modules/storage.js b/src/main/assets/vue-web/vue/modules/storage.js
deleted file mode 100644
index cca64c5..0000000
--- a/src/main/assets/vue-web/vue/modules/storage.js
+++ /dev/null
@@ -1,823 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(186)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 186:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(187),
-	  /* template */
-	  __webpack_require__(188),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/storage.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] storage.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-fc812270", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-fc812270", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 187:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var storage = weex.requireModule('storage');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      setItemResult: 'loading',
-	      getItemResult: 'loading',
-	      removeItemResult: 'loading',
-	      lengthResult: 'loading',
-	      getAllKeysResult: 'loading'
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9)
-	  },
-	  created: function created() {
-	    var me = this;
-
-	    //setItem
-	    storage.setItem('foo', 'foo-value', function (e) {
-	      console.log('set [foo<->foo-value]:' + JSON.stringify(e));
-	      me.setItemResult = 'foo:' + JSON.stringify(e) + '\n';
-	    });
-	    storage.setItem('bar', 'bar-value', function (e) {
-	      console.log('set [bar<->bar-value]:' + JSON.stringify(e));
-	      me.setItemResult = me.setItemResult + 'bar:' + JSON.stringify(e);
-	    });
-
-	    //getItem
-	    storage.getItem('foo', function (e) {
-	      console.log('get foo result:' + JSON.stringify(e));
-	      me.getItemResult = 'get foo,value is ' + e.data + '\n';
-	    });
-	    storage.getItem('bar', function (e) {
-	      console.log('get bar result:' + JSON.stringify(e));
-	      me.getItemResult += 'get bar,value is ' + e.data;
-	    });
-
-	    //length
-	    storage.length(function (e) {
-	      console.log('length:' + JSON.stringify(e));
-	      me.lengthResult = 'current length is ' + e.data;
-	    });
-
-	    //getAllKeys
-	    storage.getAllKeys(function (e) {
-	      console.log('getAllKeys:' + JSON.stringify(e));
-	      me.getAllKeysResult = '' + e.data;
-	      //me.getAllKeysResult +=' '+ typeof e.data
-	    });
-
-	    //removeItem
-	    storage.removeItem('foo', function (e) {
-	      console.log('remove foo:' + JSON.stringify(e));
-	      me.removeItemResult = 'remove item foo ' + e.result;
-	    });
-	  }
-	};
-
-/***/ }),
-
-/***/ 188:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "storage API",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "setItem"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.setItemResult))])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "getItem"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.getItemResult))])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "length"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.lengthResult))])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "getAllKeys"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.getAllKeysResult))])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "removeItem"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.removeItemResult))])])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-fc812270", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/modules/stream.js b/src/main/assets/vue-web/vue/modules/stream.js
deleted file mode 100644
index 692e5b5..0000000
--- a/src/main/assets/vue-web/vue/modules/stream.js
+++ /dev/null
@@ -1,923 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(189)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 189:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(190),
-	  /* template */
-	  __webpack_require__(191),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/stream.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] stream.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-a5324f7a", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-a5324f7a", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 190:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var stream = weex.requireModule('stream');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      getJsonpResult: 'loading...',
-	      getResult: 'loading...',
-	      postResult: 'loading...',
-	      putResult: 'loading...',
-	      deleteResult: 'loading...',
-	      headResult: 'loading...',
-	      patchResult: 'loading...'
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9)
-	  },
-	  created: function created() {
-	    var me = this;
-	    var GET_URL_JSONP = 'http://jsfiddle.net/echo/jsonp/?callback=anything&result=content_in_response';
-	    var GET_URL = 'http://httpbin.org/get';
-	    var POST_URL = 'http://httpbin.org/post';
-	    var PUT_URL = 'http://httpbin.org/put';
-	    var DELETE_URL = 'http://httpbin.org/delete';
-	    var HEAD_URL = 'http://httpbin.org/status/418';
-	    var PATCH_URL = 'http://httpbin.org/patch';
-
-	    stream.fetch({
-	      method: 'GET',
-	      url: GET_URL_JSONP,
-	      type: 'jsonp'
-	    }, function (ret) {
-	      if (!ret.ok) {
-	        me.getJsonpResult = "request failed";
-	      } else {
-	        console.log('get:' + ret);
-	        me.getJsonpResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get jsonp in progress:' + response.length);
-	      me.getJsonpResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'GET',
-	      url: GET_URL,
-	      type: 'json'
-	    }, function (ret) {
-	      if (!ret.ok) {
-	        me.getResult = "request failed";
-	      } else {
-	        console.log('get:' + ret);
-	        me.getResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.getResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'POST',
-	      url: POST_URL,
-	      type: 'json'
-	    }, function (ret) {
-	      if (!ret.ok) {
-	        me.postResult = "request failed";
-	      } else {
-	        console.log('get:' + JSON.stringify(ret));
-	        me.postResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.postResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'PUT',
-	      url: PUT_URL,
-	      type: 'json'
-	    }, function (ret) {
-	      if (!ret.ok) {
-	        me.putResult = "request failed";
-	      } else {
-	        console.log('get:' + JSON.stringify(ret));
-	        me.putResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.putResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'DELETE',
-	      url: DELETE_URL,
-	      type: 'json'
-	    }, function (ret) {
-
-	      if (!ret.ok) {
-	        me.deleteResult = "request failed";
-	      } else {
-	        console.log('get:' + JSON.stringify(ret));
-	        me.deleteResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.deleteResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'HEAD',
-	      url: HEAD_URL,
-	      type: 'json'
-	    }, function (ret) {
-	      if (ret.statusText !== 'I\'m a teapot') {
-	        me.headResult = "request failed";
-	      } else {
-	        console.log('get:' + JSON.stringify(ret));
-	        me.headResult = ret.statusText;
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.headResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'PATCH',
-	      url: PATCH_URL,
-	      type: 'json'
-	    }, function (ret) {
-	      if (!ret.ok) {
-	        me.patchResult = "request failed";
-	      } else {
-	        console.log('get:' + JSON.stringify(ret));
-	        me.patchResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.patchResult = "bytes received:" + response.length;
-	    });
-	  }
-	};
-
-/***/ }),
-
-/***/ 191:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "stream.fetch",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "method = GET"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.getResult))])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "method = GET / type = jsonp"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.getJsonpResult))])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "method = POST"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.postResult))])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "method = PUT"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.putResult))])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "method = DELETE"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.deleteResult))])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "method = HEAD"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.headResult))])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "method = PATCH"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.patchResult))])])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-a5324f7a", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/modules/websocket.js b/src/main/assets/vue-web/vue/modules/websocket.js
deleted file mode 100644
index d4bcf45..0000000
--- a/src/main/assets/vue-web/vue/modules/websocket.js
+++ /dev/null
@@ -1,895 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(192)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 192:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(193)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(195),
-	  /* template */
-	  __webpack_require__(196),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-5ba86e58",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/websocket.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] websocket.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-5ba86e58", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-5ba86e58", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 193:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(194);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("2bb68c68", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-5ba86e58\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./websocket.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-5ba86e58\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./websocket.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 194:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.input[data-v-5ba86e58] {\n  font-size: 40px;\n  height: 80px;\n  width: 600px;\n}\n.button[data-v-5ba86e58] {\n  font-size: 36px;\n  width: 150px;\n  color: #41B883;\n  text-align: center;\n  padding-top: 25px;\n  padding-bottom: 25px;\n  border-width: 2px;\n  border-style: solid;\n  margin-right: 20px;\n  border-color: rgb(162, 217, 192);\n  background-color: rgba(162, 217, 192, 0.2);\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 195:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	Object.defineProperty(exports, "__esModule", {
-	  value: true
-	});
-
-	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var websocket = weex.requireModule('webSocket');
-	exports.default = {
-	  data: function data() {
-	    return {
-	      connectinfo: '',
-	      sendinfo: '',
-	      onopeninfo: '',
-	      onmessage: '',
-	      oncloseinfo: '',
-	      onerrorinfo: '',
-	      closeinfo: '',
-	      txtInput: '',
-	      navBarHeight: 88,
-	      title: 'Navigator',
-	      dir: 'examples',
-	      baseURL: ''
-	    };
-	  },
-
-	  methods: {
-
-	    connect: function connect() {
-	      websocket.WebSocket('ws://echo.websocket.org', '');
-	      var self = this;
-	      self.onopeninfo = 'connecting...';
-	      websocket.onopen = function (e) {
-	        self.onopeninfo = 'websocket open';
-	      };
-	      websocket.onmessage = function (e) {
-	        console.log(_typeof(e.data));
-	        if (typeof e.data === 'string') {
-	          self.onmessage = e.data;
-	        } else {
-	          var str = 'receive array buffer show with string:' + String.fromCharCode.apply(null, new Float32Array(e.data));
-	          self.onmessage = str;
-	        }
-	      };
-	      websocket.onerror = function (e) {
-	        self.onerrorinfo = e.data;
-	      };
-	      websocket.onclose = function (e) {
-	        self.onopeninfo = '';
-	        self.oncloseinfo = e.code;
-	      };
-	    },
-	    send: function send(e) {
-	      var input = this.$refs.input;
-	      input.blur();
-	      websocket.send(this.txtInput);
-	      this.sendinfo = this.txtInput;
-	    },
-	    sendArrayBuffer: function sendArrayBuffer(e) {
-	      var input = this.$refs.input;
-	      input.blur();
-	      var buffer = new ArrayBuffer(16);
-	      var view = new Float32Array(buffer);
-	      view.set([4, 89, 36.9, 0.765]);
-	      console.log(buffer);
-	      var str = 'send array buffer show with string:' + String.fromCharCode.apply(null, new Float32Array(buffer));
-	      this.sendinfo = str;
-	      websocket.send(buffer);
-	    },
-	    oninput: function oninput(event) {
-	      this.txtInput = event.value;
-	    },
-	    close: function close(e) {
-	      this.closeinfo = 'close connect';
-	      websocket.close();
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 196:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('div', [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#286090"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80px",
-	      "padding": "20px",
-	      "color": "white"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("websocket")])]), _vm._v(" "), _c('input', {
-	    ref: "input",
-	    staticClass: "input",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input message to send",
-	      "autofocus": "false",
-	      "value": ""
-	    },
-	    on: {
-	      "input": _vm.oninput
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row",
-	      "justify-content": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "button",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.connect
-	    }
-	  }, [_vm._v("connect")]), _vm._v(" "), _c('text', {
-	    staticClass: "button",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.send
-	    }
-	  }, [_vm._v("send")]), _vm._v(" "), _c('text', {
-	    staticClass: "button",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.sendArrayBuffer
-	    }
-	  }, [_vm._v("sendArrayBuffer")]), _vm._v(" "), _c('text', {
-	    staticClass: "button",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.close
-	    }
-	  }, [_vm._v("close")])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "lightgray"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80px",
-	      "padding": "20px",
-	      "color": "black"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("method = close")])]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "color": "black",
-	      "height": "80px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.closeinfo))]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "lightgray"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80px",
-	      "padding": "20px",
-	      "color": "black"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("method = send")])]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "color": "black",
-	      "height": "80px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.sendinfo))]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "lightgray"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80px",
-	      "padding": "20px",
-	      "color": "black"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("method = onopen")])]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "color": "black",
-	      "height": "80px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.onopeninfo))]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "lightgray"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80px",
-	      "padding": "20px",
-	      "color": "black"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("method = onmessage")])]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "color": "black",
-	      "height": "400px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.onmessage))]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "lightgray"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80px",
-	      "padding": "20px",
-	      "color": "black"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("method = onclose")])]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "color": "black",
-	      "height": "80px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.oncloseinfo))]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "lightgray"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "height": "80px",
-	      "padding": "20px",
-	      "color": "black"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("method = onerror")])]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "color": "black",
-	      "height": "80px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.onerrorinfo))])])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-5ba86e58", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/showcase/a-node-click.js b/src/main/assets/vue-web/vue/showcase/a-node-click.js
deleted file mode 100644
index c379caa..0000000
--- a/src/main/assets/vue-web/vue/showcase/a-node-click.js
+++ /dev/null
@@ -1,685 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(197)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 197:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(198)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(200),
-	  /* template */
-	  __webpack_require__(201),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-0e4a4720",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/a-node-click.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] a-node-click.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-0e4a4720", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-0e4a4720", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 198:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(199);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("542bf0f6", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0e4a4720\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./a-node-click.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0e4a4720\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./a-node-click.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 199:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.list[data-v-0e4a4720] {\n  height: 2000px;\n}\n.cell[data-v-0e4a4720] {\n  height: 400px;\n  background-color: blue;\n}\n.txt[data-v-0e4a4720] {\n  font-size: 64px;\n  height: 84px;\n  line-height: 84px;\n  padding: 10px;\n}\n.ct[data-v-0e4a4720] {\n  width: 200px;\n  height: 200px;\n  background-color: #fff;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 200:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	Object.defineProperty(exports, "__esModule", {
-	  value: true
-	});
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	exports.default = {
-	  data: function data() {
-	    return {
-	      // url: '//m.taobao.com'
-	      url: '#'
-	    };
-	  },
-
-	  components: {
-	    xlink: {
-	      props: {
-	        href: String
-	      },
-	      render: function render(createElement) {
-	        return createElement('a', {
-	          ref: 'link',
-	          attrs: {
-	            'component-name': 'link',
-	            'href': this.href
-	          }
-	        }, this.$slots.default);
-	      }
-	    }
-	  },
-	  methods: {
-	    click: function click(evt) {
-	      evt.preventDefault();
-	      // var d = Date.now()
-	      // while (true) {
-	      //   var now = Date.now()
-	      //   if (now - d > 2000) { break }
-	      // }
-	      // throw new Error('test')
-	      console.log('click on inner');
-	    },
-	    clickCell: function clickCell(evt) {
-	      console.log('click on cell');
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 201:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list', {
-	    staticClass: "list",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('cell', {
-	    staticClass: "cell",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.clickCell
-	    }
-	  }, [_c('xlink', {
-	    staticStyle: _vm.$processStyle({
-	      "width": "400px",
-	      "height": "400px",
-	      "background-color": "yellow"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "target": "_blank",
-	      "href": _vm.url
-	    }
-	  }, [_c('div', {
-	    staticClass: "ct",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.click
-	    }
-	  }, [_c('text', [_vm._v("CLICK ME")])])])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-0e4a4720", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/showcase/boxshadow.js b/src/main/assets/vue-web/vue/showcase/boxshadow.js
deleted file mode 100644
index 2324d15..0000000
--- a/src/main/assets/vue-web/vue/showcase/boxshadow.js
+++ /dev/null
@@ -1,710 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(202)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 202:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(203)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(205),
-	  /* template */
-	  __webpack_require__(206),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-02c2c604",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/boxshadow.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] boxshadow.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-02c2c604", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-02c2c604", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 203:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(204);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("4e1becd6", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-02c2c604\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./boxshadow.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-02c2c604\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./boxshadow.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 204:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.wrapper[data-v-02c2c604] {align-items: center; margin-top: 120px;\n}\n.title[data-v-02c2c604] {font-size: 48px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 205:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	    data: function data() {
-	        return {
-	            logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-	            target: 'World'
-	        };
-	    }
-	};
-
-/***/ }),
-
-/***/ 206:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "width": "400px",
-	      "height": "60px",
-	      "background-color": "#FFE4C4",
-	      "box-shadow": "20px  10px rgb(255, 69, 0)"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "text-align": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "80px",
-	      "width": "400px",
-	      "height": "60px",
-	      "background-color": "#FFE4C4",
-	      "box-shadow": "20px  10px 5px rgba(255, 69, 0, 0.8)"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "text-align": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "80px",
-	      "width": "400px",
-	      "height": "60px",
-	      "background-color": "#FFE4C4",
-	      "box-shadow": "inset 20px  10px 5px rgba(255, 69, 0, 0.8)"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "text-align": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "80px",
-	      "width": "400px",
-	      "height": "60px",
-	      "background-color": "#FFE4C4",
-	      "box-shadow": "inset 20px  10px 5px rgb(255, 69, 0)"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "text-align": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "80px",
-	      "width": "400px",
-	      "height": "60px",
-	      "background-color": "#FFE4C4",
-	      "box-shadow": "20px  10px 5px black"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "text-align": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])]), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-top": "80px",
-	      "width": "400px",
-	      "height": "60px",
-	      "background-color": "#FFE4C4",
-	      "box-shadow": "20px  10px 5px #008B00"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle({
-	      "text-align": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-02c2c604", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/showcase/calculator.js b/src/main/assets/vue-web/vue/showcase/calculator.js
deleted file mode 100644
index 5083e1e..0000000
--- a/src/main/assets/vue-web/vue/showcase/calculator.js
+++ /dev/null
@@ -1,820 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(207)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 207:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(208)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(210),
-	  /* template */
-	  __webpack_require__(211),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-0f286679",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/calculator.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] calculator.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-0f286679", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-0f286679", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 208:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(209);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("e989c2f2", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0f286679\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./calculator.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0f286679\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./calculator.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 209:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.row[data-v-0f286679] {\n  flex-direction: row;\n}\n.result[data-v-0f286679] {\n  text-align: right;\n  background-color: #666;\n  font-size: 40px;\n  color: white;\n}\n.btn[data-v-0f286679] {\n  flex: 1;\n  text-align: center;\n  background-color: #eee;\n  font-size: 36px;\n}\n.btn[data-v-0f286679], .result[data-v-0f286679] {\n  height: 100px;\n  padding: 30px;\n  margin: 5px;\n}\n.btn-operator[data-v-0f286679] {\n  background-color: #669;\n  font-size: 40px;\n  color: white;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 210:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var OP = ['+', '-', '*', '/'];
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      result: '',
-	      inputs: []
-	    };
-	  },
-	  methods: {
-	    input: function input(e) {
-	      modal.toast({ message: 'input: ' + e.target.attr.value, duration: 1 });
-	      var value = e.target.attr['value'];
-	      var inputs = this.inputs;
-	      var lastOne = inputs.length ? inputs[inputs.length - 1] : '';
-	      if (OP.indexOf(lastOne) > -1 && OP.indexOf(value) > -1) {
-	        return;
-	      }
-	      inputs.push(value);
-	      var buf = [],
-	          char;
-	      for (var i = 0; i < inputs.length; i++) {
-	        char = inputs[i];
-	        if (OP.indexOf(char) > -1) {
-	          char = ' ' + char + ' ';
-	        }
-	        buf.push(char);
-	      }
-	      this.result = buf.join('');
-	    },
-	    calculate: function calculate() {
-	      var result = eval(this.result);
-	      this.inputs = [result];
-	      this.result = result;
-	    },
-	    clear: function clear() {
-	      this.inputs = [];
-	      this.result = '';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 211:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "padding": "5px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "result",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.result))]), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("1")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("2")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("3")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn btn-operator",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("+")])]), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("4")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("5")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("6")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn btn-operator",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("-")])]), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("7")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("8")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("9")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn btn-operator",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("*")])]), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("0")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v(".")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.clear
-	    }
-	  }, [_vm._v("AC")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn btn-operator",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.calculate
-	    }
-	  }, [_vm._v("=")])])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-0f286679", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/showcase/compositing.js b/src/main/assets/vue-web/vue/showcase/compositing.js
deleted file mode 100644
index a07d66a..0000000
--- a/src/main/assets/vue-web/vue/showcase/compositing.js
+++ /dev/null
@@ -1,740 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(212)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 212:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(213)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(215),
-	  /* template */
-	  __webpack_require__(216),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/compositing.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] compositing.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-1420fc1d", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-1420fc1d", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 213:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(214);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("14ff2e37", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-1420fc1d\",\"scoped\":false,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./compositing.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-1420fc1d\",\"scoped\":false,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./compositing.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 214:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.wrapper {\n  align-items: center; \n  opacity: 0.8;\n}\n.itemWrapper {\n  flex:1;\n  border-top-right-radius: 80;\n  border-bottom-right-radius: 80;\n  border-top-width: 10;\n  border-top-color: red;\n  border-style: dashed;\n  align-items: center;\n  background-color: white;\n}\n.nameWrapper {\n  background-color:rgba(255,0,0,0.5);\n  border-radius: 30;\n  overflow: visible;\n  border-color: black;\n  border-width: 10;\n}\n.item {\n  margin-top: 120px; \n  background-color: #CCCCCC;\n  align-items: center;\n}\n.itemName {\n  font-size:28;\n  color:#333333;\n  line-height:42;\n  text-align:left;\n  margin-top: 24;\n}\n.itemPhoto {\n  margin-top: 18;\n  width: 220;\n  height: 220;\n  margin-bottom: 18;\n  border-radius: 30;\n  overflow: hidden;\n  background-color: blue;\n}\n.itemDesc {\n  font-size:24;\n  margin:12;\n  color:#999999;\n  line-height:36;\n  text-align:left;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 215:
-/***/ (function(module, exports) {
-
-	"use strict";
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {},
-	  methods: {}
-	};
-
-/***/ }),
-
-/***/ 216:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_c('div', {
-	    staticClass: "item",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "compositing": "true"
-	    }
-	  }, [_c('div', {
-	    staticClass: "itemWrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('div', {
-	    staticClass: "nameWrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "itemName",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Thomas Carlyle")])]), _vm._v(" "), _c('image', {
-	    staticClass: "itemPhoto",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "https://gw.alicdn.com/tps/TB1Jl1CPFXXXXcJXXXXXXXXXXXX-370-370.jpg"
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticClass: "descWrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "itemDesc",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Genius only means hard-working all one\\'s life")])])])]), _vm._v(" "), _c('div', {
-	    staticClass: "item",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "compositing": "false"
-	    }
-	  }, [_c('div', {
-	    staticClass: "itemWrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('div', {
-	    staticClass: "nameWrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "itemName",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Thomas Carlyle")])]), _vm._v(" "), _c('image', {
-	    staticClass: "itemPhoto",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "https://gw.alicdn.com/tps/TB1Jl1CPFXXXXcJXXXXXXXXXXXX-370-370.jpg"
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticClass: "descWrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    staticClass: "itemDesc",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Genius only means hard-working all one\\'s life")])])])])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-1420fc1d", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/showcase/gesture.js b/src/main/assets/vue-web/vue/showcase/gesture.js
deleted file mode 100644
index 29a0f1f..0000000
--- a/src/main/assets/vue-web/vue/showcase/gesture.js
+++ /dev/null
@@ -1,649 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(217)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 217:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(218)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(220),
-	  /* template */
-	  __webpack_require__(221),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-980be43c",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/gesture.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] gesture.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-980be43c", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-980be43c", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 218:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(219);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("25472be0", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-980be43c\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./gesture.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-980be43c\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./gesture.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 219:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.ct[data-v-980be43c] {\n  position: absolute;\n  width: 750px;\n  height: 1000px;\n  background-color: #f7f7f7;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 220:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      text: 'no press.',
-	      top: '0px',
-	      left: '0px',
-	      flag: false
-	    };
-	  },
-	  methods: {
-	    handlePress: function handlePress(e) {
-	      this.text = '->longpress(' + e.touch.pageX + ',' + e.touch.pageY + ')id:' + e.touch.identifier;
-	    },
-	    handleSwipe: function handleSwipe(e) {
-	      this.text += '->swipe(' + e.touch.pageX + ',' + e.touch.pageY + ')id:' + e.touch.identifier;
-	    },
-	    handlePanStart: function handlePanStart(e) {
-	      this.flag = false;
-	      this.text = '->panstart(' + e.touch.pageX + ',' + e.touch.pageY + ')id:' + e.touch.identifier;
-	    },
-	    handlePanMove: function handlePanMove(e) {
-	      if (this.flag) {
-	        return;
-	      }
-	      this.flag = true;
-	      this.text += '->panmove(' + e.touch.pageX + ',' + e.touch.pageY + ')id:' + e.touch.identifier;
-	    },
-	    handlePanEnd: function handlePanEnd(e) {
-	      this.text += '->panend(' + e.touch.pageX + ',' + e.touch.pageY + ')id:' + e.touch.identifier;
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 221:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('div', {
-	    staticClass: "ct",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      top: _vm.top,
-	      left: _vm.left
-	    })),
-	    on: {
-	      "longpress": _vm.handlePress,
-	      "swipe": _vm.handleSwipe,
-	      "panstart": _vm.handlePanStart,
-	      "panmove": _vm.handlePanMove,
-	      "panend": _vm.handlePanEnd
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.text))])])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-980be43c", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/showcase/itemlist.js b/src/main/assets/vue-web/vue/showcase/itemlist.js
deleted file mode 100644
index 1b67f38..0000000
--- a/src/main/assets/vue-web/vue/showcase/itemlist.js
+++ /dev/null
@@ -1,1533 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(222)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 222:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(223)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(225),
-	  /* template */
-	  __webpack_require__(226),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-7a6dbc30",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/itemlist.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] itemlist.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-7a6dbc30", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-7a6dbc30", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 223:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(224);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("7344e1b0", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7a6dbc30\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./itemlist.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7a6dbc30\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./itemlist.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 224:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.flexRow[data-v-7a6dbc30] {\n  flex-direction: row;\n}\n.flexColumn[data-v-7a6dbc30] {\n  flex-direction: column;\n}\n.text[data-v-7a6dbc30] {\n}\n.div[data-v-7a6dbc30] {\n}\n.fixed[data-v-7a6dbc30] {\n  position: fixed;\n  bottom: 50px;\n  left: 50px;\n  width: 300px;\n  height: 50px;\n  align-items: center;\n  justify-content: center\n}\n.shopImg[data-v-7a6dbc30] {\n  width: 220px;\n  height: 220px;\n}\n.list[data-v-7a6dbc30] {\n  flex-direction: column;\n  overflow: hidden;\n  width: 750px;\n  height: 1200px;\n  background-color: #dddddd;\n}\n.cell[data-v-7a6dbc30] {\n  background-color: #dddddd;\n  flex-direction: column;\n  width: 750px;\n}\n.test[data-v-7a6dbc30] {\n  width:60px;\n  height:60px;\n}\n.shopDiv[data-v-7a6dbc30] {\n  flex-direction: column;\n  background-color: #ffffff;\n  margin: 5px;\n  padding: 10px;\n  border-width: 1px;\n  border-color: #cccccc;\n  overflow: visible;\n}\n.shopRowList[data-v-7a6dbc30] {\n  flex-direction: column;\n  border-width: 1px;\n  border-color: #cccccc;\n  overflow: visible;\n  margin: 5px;\n  padding: 10px;\n  background-color: #ffffff;\n}\n.shopHeader[data-v-7a6dbc30] {\n  flex-direction: row;\n  width: 720px;\n}\n.shopFooter[data-v-7a6dbc30] {\n  flex-direction: row;\n  width: 720px;\n}\n.smallImg[data-v-7a6dbc30] {\n  width: 20px;\n  height: 20px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 225:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      shopList: [{
-	        id: 1,
-	        scopeValue: 1,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Mendeleyev',
-	        PersonVisitTime: 'today',
-	        shopDesc: 'Genius only means hard-working all one\'s life',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB1rtOnHpXXXXXLaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/bao/uploaded/i4/TB15KrfFVXXXXXJXXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB1t5YBGVXXXXXcaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 2,
-	        scopeValue: 2,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Napoleon',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'The man who has made up his mind to win will never say "impossible "',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/imgextra/i1/2655929383/TB2.qITjpXXXXcIXXXXXXXXXXXX_!!2655929383.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd3.alicdn.com/imgextra/i3/2655929383/TB2eWwZjpXXXXbHXXXXXXXXXXXX_!!2655929383.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/2655929383/TB2tgQWjpXXXXbZXXXXXXXXXXXX_!!2655929383.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 3,
-	        scopeValue: 3,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Balzac',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'There is no such thing as a great talent without great will - power',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/imgextra/i1/TB1AFz9LXXXXXbrXVXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/2557954751/TB2is2njXXXXXatXpXXXXXXXXXX_!!2557954751.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/2557954751/TB2PNYGjXXXXXbXXXXXXXXXXXXX_!!2557954751.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 4,
-	        scopeValue: 4,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Thomas Carlyle',
-	        PersonVisitTime: '3 day ago',
-	        shopDesc: 'Cease to struggle and you cease to live',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/69426324/TB2zbwdfXXXXXa4XpXXXXXXXXXX_!!69426324.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/69426324/TB2L7ZAfXXXXXXOXXXXXXXXXXXX_!!69426324.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/69426324/TB2p9wufXXXXXbiXXXXXXXXXXXX_!!69426324.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 5,
-	        scopeValue: 5,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Addison',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'A strong man will struggle with the storms of fate',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd3.alicdn.com/bao/uploaded/i3/TB1MQ8_KVXXXXaLXVXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/53218032/TB2bGSqiXXXXXXyXpXXXXXXXXXX_!!53218032.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB1kP2zKFXXXXbIXXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 6,
-	        scopeValue: 1,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Ruskin',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'Living without an aim is like sailing without a compass',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/bao/uploaded/i4/TB11yFnHXXXXXakaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/32720628/TB2CRJUcXXXXXXwXpXXXXXXXXXX_!!32720628.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB17LUzHXXXXXcEaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 7,
-	        scopeValue: 2,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Yiming',
-	        PersonVisitTime: 'today',
-	        shopDesc: 'Live a noble and honest life. Reviving past times in your old age will help you to enjoy your life again',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/bao/uploaded/i4/TB1hvNoJXXXXXaMaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/2058567235/TB2V8iygFXXXXaRXpXXXXXXXXXX_!!2058567235.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/2058567235/TB2im1QgFXXXXX8XXXXXXXXXXXX_!!2058567235.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 8,
-	        scopeValue: 3,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Brown',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'Behind every successful man there\'s a lot u unsuccessful years',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/bao/uploaded/i1/TB18BZ2KFXXXXb8XFXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/imgextra/i1/2775383848/TB2r012jVXXXXXHXpXXXXXXXXXX_!!2775383848.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd3.alicdn.com/imgextra/i3/2775383848/TB2iI9VjVXXXXaoXpXXXXXXXXXX_!!2775383848.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 9,
-	        scopeValue: 4,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'YIMING',
-	        PersonVisitTime: 'today',
-	        shopDesc: 'Enrich your life today,. yesterday is history.tomorrow is mystery',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/bao/uploaded/i1/TB1JB.rLpXXXXXLXXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/2702739128/TB2JdvmjVXXXXXjXXXXXXXXXXXX_!!2702739128.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/2702739128/TB2A.e6jVXXXXXGXpXXXXXXXXXX_!!2702739128.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 10,
-	        scopeValue: 5,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'YIMING',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'The secret of success is constancy to purpose',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd3.alicdn.com/bao/uploaded/i3/TB17zXOGXXXXXbEXVXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/imgextra/i1/2265445951/TB22ACTbFXXXXXBXXXXXXXXXXXX_!!2265445951.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd3.alicdn.com/imgextra/i3/2265445951/TB2oXqUbFXXXXXIXXXXXXXXXXXX_!!2265445951.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-	      }]
-	    };
-	  },
-	  methods: {
-	    loadmore: function loadmore(e) {
-	      modal.toast({
-	        'message': 'loadmore',
-	        'duration': 2.0
-	      });
-	    },
-	    oncellclick: function oncellclick(id) {
-	      modal.toast({
-	        'message': 'row ' + id + ' clicked',
-	        'duration': 2.0
-	      });
-	    }
-	  }
-
-	};
-
-/***/ }),
-
-/***/ 226:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list', {
-	    staticClass: "list",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "loadmoreoffset": "2000"
-	    },
-	    on: {
-	      "loadmore": _vm.loadmore
-	    }
-	  }, _vm._l((_vm.shopList), function(item) {
-	    return _c('cell', {
-	      staticClass: "cell",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "scope": item.scopeValue
-	      },
-	      on: {
-	        "click": function($event) {
-	          _vm.oncellclick(item.id)
-	        }
-	      }
-	    }, [_c('div', {
-	      staticClass: "shopDiv",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', {
-	      staticClass: "shopHeader",
-	      staticStyle: _vm.$processStyle({
-	        "flex-direction": "row"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "flex": "2",
-	        "flex-direction": "row"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', [_c('image', {
-	      staticClass: "test",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": item.PersonPhoto
-	      }
-	    })]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "flex-direction": "column",
-	        "margin-left": "5px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-top": "5px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('text', {
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item.PersonName))])]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-top": "5px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('text', {
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20",
-	        "color": "#cccccc"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item.PersonVisitTime))])])])]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "flex": "5",
-	        "flex-direction": "row"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "flex-direction": "row",
-	        "margin-left": "10px",
-	        "margin-top": "10px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', [_c('image', {
-	      staticStyle: _vm.$processStyle({
-	        "width": "20px",
-	        "height": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": "https://img.alicdn.com/tps/i4/TB1zkDeIFXXXXXrXVXX07tlTXXX-200-200.png_88x88xz.jpg"
-	      }
-	    })]), _vm._v(" "), _c('div', [_c('text', {
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v("Hope")])])]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "position": "absolute",
-	        "left": "90px",
-	        "top": "10px",
-	        "flex-direction": "row"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', [_c('image', {
-	      staticStyle: _vm.$processStyle({
-	        "width": "20px",
-	        "height": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": "https://img.alicdn.com/tps/i2/TB1hRb1IXXXXXX3XVXXXQaP.pXX-87-87.jpeg"
-	      }
-	    })]), _vm._v(" "), _c('div', [_c('text', {
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v("Mem")])])]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "position": "absolute",
-	        "left": "170px",
-	        "top": "10px",
-	        "flex-direction": "row"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', [_c('image', {
-	      staticStyle: _vm.$processStyle({
-	        "width": "20px",
-	        "height": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": "https://img.alicdn.com/tps/i3/TB1DGkJJFXXXXaZXFXX07tlTXXX-200-200.png"
-	      }
-	    })]), _vm._v(" "), _c('div', [_c('text', {
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v("auth")])])]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "position": "absolute",
-	        "left": "250px",
-	        "top": "10px",
-	        "flex-direction": "row"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', [_c('image', {
-	      staticStyle: _vm.$processStyle({
-	        "width": "20px",
-	        "height": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": "https://img.alicdn.com/tps/i1/TB1nFvPIXXXXXbUXXXXUAkPJpXX-87-87.png"
-	      }
-	    })]), _vm._v(" "), _c('div', [_c('text', {
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v("Friend")])])]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "position": "absolute",
-	        "left": "330px",
-	        "top": "10px",
-	        "flex-direction": "row"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', [_c('image', {
-	      staticStyle: _vm.$processStyle({
-	        "width": "20px",
-	        "height": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": "https://img.alicdn.com/tps/i2/TB1CpD7IXXXXXbSXXXXUAkPJpXX-87-87.png"
-	      }
-	    })]), _vm._v(" "), _c('div', [_c('text', {
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v("issue")])])]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "position": "absolute",
-	        "left": "410px",
-	        "top": "10px",
-	        "flex-direction": "row"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', [_c('image', {
-	      staticStyle: _vm.$processStyle({
-	        "width": "20px",
-	        "height": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": "https://gtms02.alicdn.com/tps/i2/TB11ZZfIVXXXXbMXFXXEDhGGXXX-32-32.png"
-	      }
-	    })]), _vm._v(" "), _c('div', [_c('text', {
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v("super")])])])])]), _vm._v(" "), _c('div', {
-	      staticClass: "shopBody",
-	      staticStyle: _vm.$processStyle({
-	        "flex-direction": "column"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', {
-	      staticClass: "descDiv",
-	      staticStyle: _vm.$processStyle({
-	        "margin-top": "10px",
-	        "margin-left": "10px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('text', {
-	      staticClass: "shopDesc",
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "25px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item.shopDesc))])]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "flex-direction": "row"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, _vm._l((item.shopImgList), function(img) {
-	      return _c('div', {
-	        staticClass: "imgDiv",
-	        staticStyle: _vm.$processStyle({
-	          "flex": "1",
-	          "height": "300px",
-	          "flex-direction": "column",
-	          "margin": "10px"
-	        }),
-	        style: (_vm.$processStyle(undefined))
-	      }, [_c('div', [_c('image', {
-	        staticClass: "shopImg",
-	        staticStyle: _vm.$processStyle(undefined),
-	        style: (_vm.$processStyle({
-	          width: img.shopImgWidth,
-	          height: img.shopImgHeight
-	        })),
-	        attrs: {
-	          "src": img.shopImg
-	        }
-	      })]), _vm._v(" "), _c('div', {
-	        staticStyle: _vm.$processStyle({
-	          "flex": "1",
-	          "margin-top": "10px",
-	          "flex-direction": "row"
-	        }),
-	        style: (_vm.$processStyle(undefined))
-	      }, [_c('div', {
-	        staticStyle: _vm.$processStyle({
-	          "flex": "1",
-	          "justify-content": "center",
-	          "flex-direction": "row"
-	        }),
-	        style: (_vm.$processStyle(undefined))
-	      }, [_c('div', [_c('image', {
-	        staticStyle: _vm.$processStyle({
-	          "width": "20px",
-	          "height": "20px"
-	        }),
-	        style: (_vm.$processStyle(undefined)),
-	        attrs: {
-	          "src": "https://img.alicdn.com/tps/i1/TB1nFvPIXXXXXbUXXXXUAkPJpXX-87-87.png"
-	        }
-	      })]), _vm._v(" "), _c('div', {
-	        staticStyle: _vm.$processStyle({
-	          "margin-left": "5px"
-	        }),
-	        style: (_vm.$processStyle(undefined))
-	      }, [_c('text', {
-	        staticStyle: _vm.$processStyle({
-	          "font-size": "20px",
-	          "text-align": "center"
-	        }),
-	        style: (_vm.$processStyle(undefined))
-	      }, [_vm._v("Up")])])]), _vm._v(" "), _c('div', {
-	        staticStyle: _vm.$processStyle({
-	          "flex": "1",
-	          "justify-content": "center",
-	          "flex-direction": "row"
-	        }),
-	        style: (_vm.$processStyle(undefined))
-	      }, [_c('div', [_c('image', {
-	        staticStyle: _vm.$processStyle({
-	          "width": "20px",
-	          "height": "20px"
-	        }),
-	        style: (_vm.$processStyle(undefined)),
-	        attrs: {
-	          "src": "https://img.alicdn.com/tps/i2/TB1CpD7IXXXXXbSXXXXUAkPJpXX-87-87.png"
-	        }
-	      })]), _vm._v(" "), _c('div', {
-	        staticStyle: _vm.$processStyle({
-	          "margin-left": "5px"
-	        }),
-	        style: (_vm.$processStyle(undefined))
-	      }, [_c('text', {
-	        staticStyle: _vm.$processStyle({
-	          "font-size": "20px",
-	          "text-align": "center"
-	        }),
-	        style: (_vm.$processStyle(undefined))
-	      }, [_vm._v("down")])])])])])
-	    }))]), _vm._v(" "), _c('div', {
-	      staticClass: "shopFooter",
-	      staticStyle: _vm.$processStyle({
-	        "flex-direction": "row",
-	        "margin-top": "10px",
-	        "margin-left": "10px",
-	        "justify-content": "flex-end"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-right": "5px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('image', {
-	      staticClass: "shopLikeImg smallImg",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": item.shopLikeImg
-	      }
-	    })]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-right": "15px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('text', {
-	      staticClass: "shopLikeText",
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item.shopLikeText))])]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-right": "5px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('image', {
-	      staticClass: "shopCommentImg smallImg",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": item.shopCommentImg
-	      }
-	    })]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-right": "15px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('text', {
-	      staticClass: "shopCommentText",
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item.shopCommentText))])]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-right": "5px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('image', {
-	      staticClass: "shopLookImg smallImg",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": item.shopLookImg
-	      }
-	    })]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-right": "15px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('text', {
-	      staticClass: "shopLookText",
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item.shopLookText))])]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-right": "5px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('image', {
-	      staticClass: "shareImg smallImg",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": item.shareImg
-	      }
-	    })]), _vm._v(" "), _c('div', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-right": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('text', {
-	      staticClass: "shareText",
-	      staticStyle: _vm.$processStyle({
-	        "font-size": "20px"
-	      }),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item.shareText))])])])])])
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-7a6dbc30", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/showcase/new-fashion.js b/src/main/assets/vue-web/vue/showcase/new-fashion.js
deleted file mode 100644
index 510837f..0000000
--- a/src/main/assets/vue-web/vue/showcase/new-fashion.js
+++ /dev/null
@@ -1,4220 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(227)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-/* 1 */,
-/* 2 */,
-/* 3 */,
-/* 4 */
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-/* 8 */,
-/* 9 */,
-/* 10 */,
-/* 11 */,
-/* 12 */,
-/* 13 */,
-/* 14 */,
-/* 15 */,
-/* 16 */,
-/* 17 */,
-/* 18 */,
-/* 19 */,
-/* 20 */,
-/* 21 */,
-/* 22 */,
-/* 23 */,
-/* 24 */,
-/* 25 */,
-/* 26 */,
-/* 27 */,
-/* 28 */,
-/* 29 */,
-/* 30 */,
-/* 31 */,
-/* 32 */,
-/* 33 */,
-/* 34 */,
-/* 35 */,
-/* 36 */,
-/* 37 */,
-/* 38 */,
-/* 39 */,
-/* 40 */,
-/* 41 */,
-/* 42 */,
-/* 43 */,
-/* 44 */,
-/* 45 */,
-/* 46 */,
-/* 47 */,
-/* 48 */,
-/* 49 */,
-/* 50 */,
-/* 51 */,
-/* 52 */,
-/* 53 */,
-/* 54 */,
-/* 55 */,
-/* 56 */,
-/* 57 */,
-/* 58 */,
-/* 59 */,
-/* 60 */,
-/* 61 */,
-/* 62 */,
-/* 63 */,
-/* 64 */,
-/* 65 */,
-/* 66 */,
-/* 67 */,
-/* 68 */,
-/* 69 */,
-/* 70 */,
-/* 71 */,
-/* 72 */,
-/* 73 */,
-/* 74 */,
-/* 75 */,
-/* 76 */,
-/* 77 */,
-/* 78 */,
-/* 79 */,
-/* 80 */,
-/* 81 */,
-/* 82 */,
-/* 83 */,
-/* 84 */,
-/* 85 */,
-/* 86 */,
-/* 87 */,
-/* 88 */,
-/* 89 */,
-/* 90 */,
-/* 91 */,
-/* 92 */,
-/* 93 */,
-/* 94 */,
-/* 95 */,
-/* 96 */,
-/* 97 */,
-/* 98 */,
-/* 99 */,
-/* 100 */,
-/* 101 */,
-/* 102 */,
-/* 103 */,
-/* 104 */,
-/* 105 */,
-/* 106 */,
-/* 107 */,
-/* 108 */,
-/* 109 */,
-/* 110 */,
-/* 111 */,
-/* 112 */,
-/* 113 */,
-/* 114 */,
-/* 115 */,
-/* 116 */,
-/* 117 */,
-/* 118 */,
-/* 119 */,
-/* 120 */,
-/* 121 */,
-/* 122 */,
-/* 123 */,
-/* 124 */,
-/* 125 */,
-/* 126 */,
-/* 127 */,
-/* 128 */,
-/* 129 */,
-/* 130 */,
-/* 131 */,
-/* 132 */,
-/* 133 */,
-/* 134 */,
-/* 135 */,
-/* 136 */,
-/* 137 */,
-/* 138 */,
-/* 139 */,
-/* 140 */,
-/* 141 */,
-/* 142 */,
-/* 143 */,
-/* 144 */,
-/* 145 */,
-/* 146 */,
-/* 147 */,
-/* 148 */,
-/* 149 */,
-/* 150 */,
-/* 151 */,
-/* 152 */,
-/* 153 */,
-/* 154 */,
-/* 155 */,
-/* 156 */,
-/* 157 */,
-/* 158 */,
-/* 159 */,
-/* 160 */,
-/* 161 */,
-/* 162 */,
-/* 163 */,
-/* 164 */,
-/* 165 */,
-/* 166 */,
-/* 167 */,
-/* 168 */,
-/* 169 */,
-/* 170 */,
-/* 171 */,
-/* 172 */,
-/* 173 */,
-/* 174 */,
-/* 175 */,
-/* 176 */,
-/* 177 */,
-/* 178 */,
-/* 179 */,
-/* 180 */,
-/* 181 */,
-/* 182 */,
-/* 183 */,
-/* 184 */,
-/* 185 */,
-/* 186 */,
-/* 187 */,
-/* 188 */,
-/* 189 */,
-/* 190 */,
-/* 191 */,
-/* 192 */,
-/* 193 */,
-/* 194 */,
-/* 195 */,
-/* 196 */,
-/* 197 */,
-/* 198 */,
-/* 199 */,
-/* 200 */,
-/* 201 */,
-/* 202 */,
-/* 203 */,
-/* 204 */,
-/* 205 */,
-/* 206 */,
-/* 207 */,
-/* 208 */,
-/* 209 */,
-/* 210 */,
-/* 211 */,
-/* 212 */,
-/* 213 */,
-/* 214 */,
-/* 215 */,
-/* 216 */,
-/* 217 */,
-/* 218 */,
-/* 219 */,
-/* 220 */,
-/* 221 */,
-/* 222 */,
-/* 223 */,
-/* 224 */,
-/* 225 */,
-/* 226 */,
-/* 227 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(228)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(230),
-	  /* template */
-	  __webpack_require__(280),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-1ef3bcb8",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/new-fashion.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] new-fashion.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-1ef3bcb8", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-1ef3bcb8", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 228 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(229);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("a5b17b34", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-1ef3bcb8\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./new-fashion.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-1ef3bcb8\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./new-fashion.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 229 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.content[data-v-1ef3bcb8] {\n  color: #353535;\n  background-color: #666;\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n}\n.refresh[data-v-1ef3bcb8] {\n  align-items: center;\n  justify-content: center;\n}\n.loading[data-v-1ef3bcb8] {\n  align-items: center;\n  justify-content: center;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 230 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	var timer = weex.requireModule('timer');
-
-	module.exports = {
-	  components: {
-	    headlines: __webpack_require__(231),
-	    category: __webpack_require__(245),
-	    coupon: __webpack_require__(250),
-	    goods: __webpack_require__(255),
-	    resource: __webpack_require__(260),
-	    scene: __webpack_require__(265),
-	    match: __webpack_require__(270),
-	    brand: __webpack_require__(275)
-	  },
-	  data: {
-	    navBarHeight: 88,
-	    cnt: 0,
-	    show0: true,
-	    show1: false,
-	    show2: false,
-	    displayRefresh: 'show',
-	    displayLoading: 'show',
-	    showData: {}
-	  },
-	  created: function created() {
-	    this.showData = {
-	      "header": {
-	        "topBanner": "https://gw.alicdn.com/tps/TB1J48kMXXXXXXtapXXXXXXXXXX-750-782.jpg",
-	        "ruleLink": "https://chaoshi.m.tmall.com/",
-	        "isShowShare": true,
-	        "shareInfo": {
-	          "shareTitle": "我是分享标题",
-	          "shareIntro": " 我是分享内容测试",
-	          "allLink": "https://www.tmall.com",
-	          "mobileImage": "https://gw.alicdn.com/tps/TB1J48kMXXXXXXtapXXXXXXXXXX-750-782.jpg",
-	          "pcImage": "https://img.alicdn.com/tps/i4/TB1Dyw1LVXXXXXEapXXSutbFXXX.jpg",
-	          "shareScene": "我是测试业务",
-	          "bizId": ""
-	        },
-	        "announceHdBanner": "https://gw.alicdn.com/tps/i4/TB1fzclLVXXXXaVaXXXwu0bFXXX.png",
-	        "bannerItems": [{
-	          "img": "https://img.alicdn.com/tps/TB1U8LHLVXXXXa3XpXXXXXXXXXX-233-172.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://img.alicdn.com/tps/TB1U8LHLVXXXXa3XpXXXXXXXXXX-233-172.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://img.alicdn.com/tps/TB1U8LHLVXXXXa3XpXXXXXXXXXX-233-172.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }]
-	      },
-	      "fashion": {
-	        "isHide": false,
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "bigBannerImg": "https://gw.alicdn.com/tps/TB1tO.aLVXXXXcvXpXXXXXXXXXX-750-262.jpg",
-	        "bigBannerUrl": "https://chaoshi.m.tmall.com/",
-	        "smallBannerItems": [{
-	          "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }],
-	        "isHideStarBanner": false,
-	        "firstStarBannerItems": [{
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }],
-	        "secondStarBannerItems": [{
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }],
-	        "thirdStarBannerItems": [{
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }]
-	      },
-	      "goods": {
-	        "isHide": false,
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "bannerItems": [{
-	          "img1": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url1": "https://chaoshi.m.tmall.com/",
-	          "img2": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url2": "https://chaoshi.m.tmall.com/",
-	          "img3": "https://gw.alicdn.com/tps/TB12MPFLVXXXXXnXVXXXXXXXXXX-250-592.jpg",
-	          "url3": "https://chaoshi.m.tmall.com/",
-	          "img4": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url4": "https://chaoshi.m.tmall.com/",
-	          "img5": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url5": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img1": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url1": "https://chaoshi.m.tmall.com/",
-	          "img2": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url2": "https://chaoshi.m.tmall.com/",
-	          "img3": "https://gw.alicdn.com/tps/TB12MPFLVXXXXXnXVXXXXXXXXXX-250-592.jpg",
-	          "url3": "https://chaoshi.m.tmall.com/",
-	          "img4": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url4": "https://chaoshi.m.tmall.com/",
-	          "img5": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url5": "https://chaoshi.m.tmall.com/"
-	        }]
-	      },
-	      "coupon": {
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg"
-	      },
-	      "scene": {
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "_backup": {
-	          "id": "03653",
-	          "data": [{
-	            "id": "1395",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1395&scm=1003.1.03653.MAIN_1395_710531&pos=1",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i2/TB1n6bVLVXXXXcCXVXXTCU0QpXX-300-300.jpg",
-	            "sceneCat": "50008881,50008883,50008882,50008884,50012774,50012775,50012776,50012781,50008886,50012766,50012771,50012772,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,16240,50012773,50006846,50010394,50008888,50008890,50008889,50012784,50012785,50012786,50012787,50008885,50012777,50012778,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124942005,50010368,50011892,50011894,50023751,121366037,121458036,121392038,121420035,121364028,121468026,121400029,121418030,121478031,121480030,121366035,121424025,121426030,121484030,121412031,125054002,125074007,125074008,125104003,125080003,125024006,125080004,121400030,121424024,121482025,121418031,121402028,121388035",
-	            "finalScore": "77.26011111111112",
-	            "_pos_": 1,
-	            "entityType": "MAIN",
-	            "benefitImg": "//img.alicdn.com/tps/i3/TB1Onr9LVXXXXbiXpXXB8gAQpXX-300-100.png"
-	          }, {
-	            "id": "1394",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1394&scm=1003.1.03653.MAIN_1394_710531&pos=2",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i1/TB13mj1LVXXXXa.XFXXTCU0QpXX-300-300.jpg",
-	            "sceneCat": "50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124986002,50010368, 50011892,50011894,121480030,121366035,121424025,121426030,121484030,121412031",
-	            "finalScore": "77.06103999999999",
-	            "_pos_": 2,
-	            "entityType": "MAIN",
-	            "benefitImg": "//img.alicdn.com/tps/i2/TB17kvVLVXXXXaTXVXXB8gAQpXX-300-100.png"
-	          }, {
-	            "id": "1396",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1396&scm=1003.1.03653.MAIN_1396_710531&pos=3",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i2/TB1ZOAXLVXXXXa0XXXXTCU0QpXX-300-300.jpg",
-	            "sceneCat": "50010368,50011892,50011894,50013794,50010792,50010790,50010790,121434025,121396024,50010793,50010789,50010793,121386035,121392037,121458034,121392036,121482027,121392015,121368014,121418013,121392016,50011982,122690003,302910,50012010,122654005,50012019,50012825,50012027,50012042,50011744,50012906,50012907,50008881,50008883,50008882?,50012784?,50022889,50022728,50013228,50013896,50014775,50019578,50014822,50026394,50019694,50019279,50019272,50014079,50014078,50014076,50014077,50017238,121464011,121468014,50019130,50019127,50019126,50019128,50019125,50015984,50014803,50014802,50015980,50014788,50014787,50019526,50014791,50019520,50013932,50014677,50015978,50014786,50014785,50522001,50014493,50023100,121418021,121388027,121424021,121418020,121368020,50012036,50012044,50012043,50010368, 50011892, 50019274,50012044,50012048,50012043,50013228,50013238,50011726,50019279,50015984,50014803,50014802,50019526,50014791,50019520,50013932,50014677,50019526,50013314,50023341,50016752,50016749,50016747,50016744,50016741,50016740,50016739,50016738,50016737,50016769,50016763,50016750,50007003,302910,50012010,50012032,50012033,50011745,50011746,50011894,121458034,121756003,121426033,50011982,50011979,121390006,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,1512,123534001,14,50008090,50012341,50132002,50012342,50012343,50012345,50012346,50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,121450007,50013697,50010218,50005960,50005962,50012820,50012406,50023620,50023605,50008829,50024064,50023440,50008687,124392001,50023771,50006804,50012410,124482010,121398023,50023789,50011975",
-	            "finalScore": "76.76379487179486",
-	            "_pos_": 3,
-	            "entityType": "MAIN",
-	            "benefitImg": "//img.alicdn.com/tps/i3/TB1Usn.LVXXXXaoXpXXB8gAQpXX-300-100.png"
-	          }, {
-	            "id": "1619",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1619&scm=1003.1.03653.SUB_1619_710531&pos=4",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i2/TB1MpoBLVXXXXbxXpXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,122654005,50011740,50009032,124688012,213202,121396029,121476023,121410029,213203,50023326,213205,50022686,50023293,50466023,50024999,50016885,50011894",
-	            "finalScore": "75.88480000000001",
-	            "_pos_": 4,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i4/TB1j0AxLVXXXXaRXFXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1612",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1612&scm=1003.1.03653.SUB_1612_710531&pos=5",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i3/TB1NNwyLVXXXXaEXVXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50010850,50000671,162104,162116,123216004",
-	            "finalScore": "75.23733333333334",
-	            "_pos_": 5,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i1/TB1PsoBLVXXXXbQXpXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1610",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1610&scm=1003.1.03653.SUB_1610_710531&pos=6",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i4/TB1EkczLVXXXXcVXpXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "121484044,121452038,50012342,50012027,50012032,50006843,50010850,50000671,162104,1623,50011277,162116,123216004,50008898,121366037,121458036,121392038,121420035,121364028,121468026,121472031,121476036,121470042,121418032,121410036,121472032,121420032,121470040,121384032,121460028,121448028,121400030,121424024,121482025,121418031,121402028,121388035,121460029,121400028,121400029,121418030,121476034,121478031,121448029,121480030,121366035,121424025,121426030,121484030,121412031,121384033,121424023,121402027,121408039,121420033,121452028,121466040,121416029,121482028,121420034,121396046,121422052,121370037,121424031,21364043,121472040,121412045,121424032,125054002,125074007,125074008,125104003,125080003,125024006,125080004",
-	            "finalScore": "75.00533333333334",
-	            "_pos_": 6,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i2/TB1RzwFLVXXXXXsXpXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1620",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1620&scm=1003.1.03653.SUB_1620_710531&pos=7",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i1/TB1IJsILVXXXXbGXXXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50010789,50010790,50010792,50010793,50010794,50010796,50010797,50010798,50010801,50010803,50010805,50010807,50010808,50010813,50010814,50010815,50013794,121382014,121386023,121388007,121388008,121398004,121364007,121398006,121410007,121426007,121452004,50012010,50012027,50012032,124688012, 124986002, 124942005,50010850,50000671,162104,162201,50022566,162116,1623,50011277,50008897,162401,162402",
-	            "finalScore": "74.72522222222223",
-	            "_pos_": 7,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i1/TB16A.yLVXXXXX8XFXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1608",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1608&scm=1003.1.03653.SUB_1608_710531&pos=8",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i3/TB1xA3jLVXXXXXqapXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50012010,50012027,50012032,50007003,50008881,50008883,1623,162116,50010850,123216004",
-	            "finalScore": "74.626",
-	            "_pos_": 8,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i2/TB1WvoALVXXXXcdXpXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1615",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1615&scm=1003.1.03653.SUB_1615_710531&pos=9",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i1/TB1PVctLVXXXXchXFXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50011978,50011979,50011980,50011993,50011996,50011997,121390006,121408011,121474010,50010789,50010790,50010792,50010793,50010803,50013794,121398004,121410007,213205,121470030,50024980,121408030",
-	            "finalScore": "74.02799999999999",
-	            "_pos_": 9,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i4/TB1yKwBLVXXXXa4XpXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1618",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1618&scm=1003.1.03653.SUB_1618_710531&pos=10",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i1/TB1vn3sLVXXXXX5XVXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50008886,50012766,50012771,50012772,50012773,50008090,111219,50012100,50012082,50012478,50012475,213202,50018977,121396029,121476023,50018994,121410029,213203,50023326,50003820,213205,50022686,50012481,50013976?,50001871,122854005,121458010,121452006,121416008,50008779,50002777,121394007,121386009,50010825,50013810,121434010,50001865,50008565,50008246,50017192,121404045,121368009,121462014,50019372,50008248,121418011,50008249,50017193,50008252,50008251,50000512,121364047",
-	            "finalScore": "73.94212121212121",
-	            "_pos_": 10,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i4/TB1kSkpLVXXXXbTXVXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1617",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1617&scm=1003.1.03653.SUB_1617_710531&pos=11",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i1/TB1ELwrLVXXXXaNXVXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,50012341,50132002,50012342,50012343,50012345,50012346,50012341,50132002,50012342,50012343,50012345,50012346",
-	            "finalScore": "73.78883333333334",
-	            "_pos_": 11,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i3/TB1CtsuLVXXXXcJXFXX3bpXTXXX-170-100.png"
-	          }],
-	          "exposureParam": "//ac.mmstat.com/1.gif?apply=vote&abbucket=_AB-M1001_B5&com=02&acm=03653.1003.1.710531&cod=03653&cache=jWl8FJsb&aldid=TPMkJDIw&logtype=4&abtest=_AB-LR1001-PR1001&scm=1003.1.03653.710531&ip=42.120.74.104",
-	          "serverTime": 1458296110334
-	        }
-	      },
-	      "resource": {
-	        "isHide": false,
-	        "bigBannerImg": "https://gw.alicdn.com/tps/TB1tO.aLVXXXXcvXpXXXXXXXXXX-750-262.jpg",
-	        "bigBannerUrl": "https://chaoshi.m.tmall.com/",
-	        "smallBannerItems": [{
-	          "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }]
-	      },
-	      "category": {
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "_backup": {
-	          "main": [],
-	          "sub": [{
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/dqc?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_15_735362&pos=1",
-	            "entityType": "OTHER",
-	            "colour": "b4ebff",
-	            "industryTitle": "数码",
-	            "_pos_": 1,
-	            "industryBenefit": "疯抢大牌新品",
-	            "industryId": "15",
-	            "industryImg": "//img.alicdn.com/tps/i4/TB1_xG.LVXXXXbWaXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/xihu?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_13_735362&pos=2",
-	            "entityType": "OTHER",
-	            "colour": "cdffa4",
-	            "industryTitle": "洗护",
-	            "_pos_": 2,
-	            "industryBenefit": "爆款1分钱抢",
-	            "industryId": "13",
-	            "industryImg": "//img.alicdn.com/tps/i3/TB1Ft_CLVXXXXX2XXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/mobilephone?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_14_735362&pos=3",
-	            "entityType": "OTHER",
-	            "colour": "c5ffdf",
-	            "industryTitle": "手机",
-	            "_pos_": 3,
-	            "industryBenefit": "1元抢优惠券",
-	            "industryId": "14",
-	            "industryImg": "//img.alicdn.com/tps/i3/TB1mJjuLVXXXXc.XXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/xiangbaohuanxin?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_11_735362&pos=4",
-	            "entityType": "OTHER",
-	            "colour": "ffccdc",
-	            "industryTitle": "箱包",
-	            "_pos_": 4,
-	            "industryBenefit": "极致焕新尖货",
-	            "industryId": "11",
-	            "industryImg": "//img.alicdn.com/tps/i2/TB1_5P9KVXXXXayaXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/newfood?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_12_735362&pos=5",
-	            "entityType": "OTHER",
-	            "colour": "fff5a3",
-	            "industryTitle": "食品",
-	            "_pos_": 5,
-	            "industryBenefit": "新品1分试吃",
-	            "industryId": "12",
-	            "industryImg": "//img.alicdn.com/tps/i2/TB1HfLzLVXXXXb_XXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/zbps?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_3_735362&pos=6",
-	            "entityType": "OTHER",
-	            "colour": "bbffe5",
-	            "industryTitle": "珠宝配饰",
-	            "_pos_": 6,
-	            "industryBenefit": "大牌1折秒杀",
-	            "industryId": "3",
-	            "industryImg": "//img.alicdn.com/tps/i1/TB1s5y.LVXXXXb.aXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/getbeauty?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_2_735362&pos=7",
-	            "entityType": "OTHER",
-	            "colour": "ffd1b6",
-	            "industryTitle": "美妆",
-	            "_pos_": 7,
-	            "industryBenefit": "即刻预约美丽",
-	            "industryId": "2",
-	            "industryImg": "//img.alicdn.com/tps/i1/TB1lNvoLVXXXXaoXFXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/guojixfs?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_1_735362&pos=8",
-	            "entityType": "OTHER",
-	            "colour": "b9eaf2",
-	            "industryTitle": "天猫国际",
-	            "_pos_": 8,
-	            "industryBenefit": "唤醒全球潮流",
-	            "industryId": "1",
-	            "industryImg": "//img.alicdn.com/tps/i4/TB1JHbkLVXXXXblXFXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/newnv?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_10_735362&pos=9",
-	            "entityType": "OTHER",
-	            "colour": "fff8ee",
-	            "industryTitle": "鞋履",
-	            "_pos_": 9,
-	            "industryBenefit": "潮品精选鞋履",
-	            "industryId": "10",
-	            "industryImg": "//img.alicdn.com/tps/i2/TB1RovwLVXXXXXnXpXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/nvzhuang?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_7_735362&pos=10",
-	            "entityType": "OTHER",
-	            "colour": "d5cbe8",
-	            "industryTitle": "女装",
-	            "_pos_": 10,
-	            "industryBenefit": "折后用券抢新",
-	            "industryId": "7",
-	            "industryImg": "//img.alicdn.com/tps/i1/TB1BOncLVXXXXXSaXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/man?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_6_735362&pos=11",
-	            "entityType": "OTHER",
-	            "colour": "cbe9a9",
-	            "industryTitle": "男装",
-	            "_pos_": 11,
-	            "industryBenefit": "新品低至9.9元",
-	            "industryId": "6",
-	            "industryImg": "//img.alicdn.com/tps/i4/TB1t9TmLVXXXXbkXFXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/myxfs?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_5_735362&pos=12",
-	            "entityType": "OTHER",
-	            "colour": "f8e1ff",
-	            "industryTitle": "母婴童装",
-	            "_pos_": 12,
-	            "industryBenefit": "跨店满299减40",
-	            "industryId": "5",
-	            "industryImg": "//img.alicdn.com/tps/i3/TB1kpziLVXXXXabXVXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/jfjs?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_4_735362&pos=13",
-	            "entityType": "OTHER",
-	            "colour": "bbffe5",
-	            "industryTitle": "家纺家饰",
-	            "_pos_": 13,
-	            "industryBenefit": "全场低至9.9元",
-	            "industryId": "4",
-	            "industryImg": "//img.alicdn.com/tps/i1/TB1lUjzLVXXXXbAXXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/neiyi328?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_9_735362&pos=14",
-	            "entityType": "OTHER",
-	            "colour": "ffc7c9",
-	            "industryTitle": "内衣",
-	            "_pos_": 14,
-	            "industryBenefit": "新品3折起",
-	            "industryId": "9",
-	            "industryImg": "//img.alicdn.com/tps/i1/TB1S7PuLVXXXXcVXXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/ydhw?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_8_735362&pos=15",
-	            "entityType": "OTHER",
-	            "colour": "cbdbfe",
-	            "industryTitle": "运动户外",
-	            "_pos_": 15,
-	            "industryBenefit": "大牌新品抢券",
-	            "industryId": "8",
-	            "industryImg": "//img.alicdn.com/tps/i2/TB1mQDALVXXXXbdXXXXrdvGIFXX-248-155.jpg"
-	          }],
-	          "isFormal": false,
-	          "exposureParam": "//ac.mmstat.com/1.gif?apply=vote&abbucket=_AB-M1011_B5&com=02&acm=03654.1003.1.735362&cod=03654&cache=CG5ZB02B&aldid=e5zPEI6R&logtype=4&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.735362&ip=42.120.74.159",
-	          "id": "03654"
-	        }
-	      },
-	      "brand": {
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "bannerItems": [{
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }]
-	      },
-	      "match": {
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "isShowTmSpecBanner": true,
-	        "tmSpecBanner": {
-	          "img": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        },
-	        "bannerItems": [{
-	          "leftImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }]
-	      }
-	    };
-	    this.simLoadingData(this.cnt++);
-	  },
-	  methods: {
-	    handleRefresh: function handleRefresh(e) {
-	      var vm = this;
-	      vm.displayRefresh = 'show';
-	      if (timer) {
-	        timer.setTimeout(function () {
-	          vm.displayRefresh = 'hide';
-	        }, 2000);
-	      } else {
-	        modal.alert({
-	          message: 'refreshing.'
-	        }, function () {
-	          vm.displayRefresh = 'hide';
-	        });
-	      }
-	    },
-	    handleLoading: function handleLoading(e) {
-	      var vm = this;
-	      vm.displayLoading = 'show';
-	      modal.toast({
-	        message: 'loading.'
-	      });
-	      if (timer) {
-	        timer.setTimeout(function () {
-	          vm.simLoadingData(vm.cnt++);
-	          vm.displayLoading = 'hide';
-	        }, 2000);
-	      } else {
-	        vm.simLoadingData(vm.cnt++);
-	        vm.displayLoading = 'hide';
-	      }
-	    },
-	    simLoadingData: function simLoadingData(num) {
-	      if (num >= 3) {
-	        modal.toast({
-	          message: '已到底部'
-	        });
-	        return;
-	      }
-	      this['show' + num] = true;
-	    }
-	  }
-	};
-
-/***/ }),
-/* 231 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(232)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(234),
-	  /* template */
-	  __webpack_require__(244),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-f46caf5e",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/headlines.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] headlines.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-f46caf5e", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-f46caf5e", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 232 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(233);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("b0580bee", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f46caf5e\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./headlines.vue", function() {
-	     var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f46caf5e\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./headlines.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 233 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.banner[data-v-f46caf5e] {\n  width: 750;\n  height: 782;\n}\n.share-container[data-v-f46caf5e] {\n  position: absolute;\n  right: 100;\n  top: 15;\n  z-index: 100;\n  font-size: 20;\n  color: #ffffff;\n  background-color: #000000;\n  border-radius: 17;\n  width: 110;\n  height: 35;\n  justify-content: center;\n  align-items: center;\n}\n.rule-container[data-v-f46caf5e] {\n  position: absolute;\n  right: 22;\n  top: 15;\n  z-index: 100;\n  font-size: 20;\n  color: #ffffff;\n  background-color: #000000;\n  border-radius: 17;\n  width: 70;\n  height: 35;\n  justify-content: center;\n}\n.announce[data-v-f46caf5e] {\n  background-color: #f5f3f4;\n  width: 716;\n  height: 286;\n  position: absolute;\n  bottom: 17;\n  left: 17;\n  border-radius: 5;\n}\n.announce-hd[data-v-f46caf5e] {\n  width: 700;\n  height: 90;\n  margin-top: 8;\n  margin-bottom: 8;\n  margin-left: 5;\n  margin-right: 5;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 234 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    link: __webpack_require__(235),
-	    banners: __webpack_require__(238)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_233: 233,
-	      NUMBER_172: 172,
-	      NUMBER_3: 3
-	    };
-	  }
-	};
-
-/***/ }),
-/* 235 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(236),
-	  /* template */
-	  __webpack_require__(237),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/link.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] link.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-83558590", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-83558590", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 236 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  props: ['text', 'href'],
-	  methods: {
-	    clickHandler: function clickHandler() {
-	      modal.toast({
-	        message: 'click',
-	        duration: 1
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-/* 237 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.clickHandler
-	    }
-	  }, [_vm._v(_vm._s(_vm.text))])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-83558590", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 238 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(239),
-	  /* template */
-	  __webpack_require__(243),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/banners.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] banners.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-5c380c79", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-5c380c79", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 239 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    banner: __webpack_require__(240)
-	  },
-	  props: ['ds', 'width', 'height', 'space', 'direction']
-	};
-
-/***/ }),
-/* 240 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(241),
-	  /* template */
-	  __webpack_require__(242),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/banner.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] banner.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-4d2dd1ea", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-4d2dd1ea", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 241 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  props: ['width', 'height', 'src', 'href'],
-	  data: function data() {
-	    return {
-	      quality: 'normal'
-	    };
-	  },
-	  methods: {
-	    clickHandler: function clickHandler() {
-	      modal.toast({
-	        message: 'click',
-	        duration: 1
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-/* 242 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('image', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      width: _vm.width,
-	      height: _vm.height
-	    })),
-	    attrs: {
-	      "src": _vm.src,
-	      "image-quality": _vm.quality
-	    },
-	    on: {
-	      "click": _vm.clickHandler
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-4d2dd1ea", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 243 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [(_vm.direction === 'row') ? _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, _vm._l((_vm.ds), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        width: _vm.width,
-	        height: _vm.height,
-	        marginLeft: (i % _vm.ds.length ? _vm.space : 0)
-	      }))
-	    }, [_c('banner', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.width,
-	        "height": _vm.height,
-	        "src": item.img,
-	        "href": item.url
-	      }
-	    })], 1)
-	  })) : _vm._e(), _vm._v(" "), (_vm.direction === 'column') ? _c('div', _vm._l((_vm.ds), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        width: _vm.width,
-	        height: _vm.height,
-	        marginTop: (i % _vm.ds.length ? _vm.space : 0)
-	      }))
-	    }, [_c('banner', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.width,
-	        "height": _vm.height,
-	        "src": item.img,
-	        "href": item.url
-	      }
-	    })], 1)
-	  })) : _vm._e()])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-5c380c79", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 244 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "container",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('image', {
-	    staticClass: "banner",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.ds.topBanner
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticClass: "rule-container",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('link', {
-	    staticStyle: _vm.$processStyle({
-	      "font-size": "22px",
-	      "color": "#ffffff",
-	      "text-align": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "text": "帮助",
-	      "href": _vm.ds.ruleLink
-	    }
-	  })]), _vm._v(" "), _c('div', {
-	    staticClass: "announce",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('image', {
-	    staticClass: "announce-hd",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.ds.announceHdBanner
-	    }
-	  }), _vm._v(" "), _c('banners', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-left": "6",
-	      "margin-right": "6"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "ds": _vm.ds.bannerItems,
-	      "direction": "row",
-	      "width": _vm.NUMBER_233,
-	      "height": _vm.NUMBER_172,
-	      "space": _vm.NUMBER_3
-	    }
-	  })], 1)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-f46caf5e", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 245 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(246)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(248),
-	  /* template */
-	  __webpack_require__(249),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-2db23588",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/category.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] category.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-2db23588", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-2db23588", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 246 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(247);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("1289de1a", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-2db23588\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./category.vue", function() {
-	     var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-2db23588\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./category.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 247 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-2db23588] {\n  width: 750;\n  height: 100;\n}\n.shop-list[data-v-2db23588] {\n  flex-direction: row;\n}\n.shop-img-container[data-v-2db23588] {\n  margin-right: 2;\n}\n.sub-item[data-v-2db23588] {\n  position: absolute;\n  width: 248;\n  height: 241;\n  align-items: center;\n  background-color:#ffffff;\n}\n.sub-item-bg[data-v-2db23588] {\n  width: 248;\n  height: 86;\n}\n.sub-item-title[data-v-2db23588] {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 248;\n  text-align: center;\n}\n.industry-title[data-v-2db23588] {\n  font-size: 28;\n  color: #484848;\n  text-align: center;\n  margin-top: 10;\n  height:34;\n}\n.industry-benefit[data-v-2db23588] {\n  font-size: 24;\n  color: #999999;\n  text-align: center;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 248 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	"use strict";
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var demoContent = {
-	  "main": [{
-	    "shopList": [{
-	      "id": "619123122",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1Cl5MLVXXXXXTaXXXSutbFXXX.jpg",
-	      "finalScore": "0.884765209440857",
-	      "shopUrl": "http://liangpinpuzi.tmall.com/campaign-3735-7.htm",
-	      "entityType": "SHOP",
-	      "brandId": "7724367"
-	    }, {
-	      "id": "880734502",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1HN2XLVXXXXbkXFXXSutbFXXX.jpg",
-	      "finalScore": "0.8822246866512714",
-	      "shopUrl": "http://sanzhisongshu.tmall.com/campaign-3735-7.htm",
-	      "entityType": "SHOP",
-	      "brandId": "147280915"
-	    }, {
-	      "id": "392147177",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1yq6dLVXXXXbXXpXXSutbFXXX.jpg",
-	      "finalScore": "0.8805854724243631",
-	      "shopUrl": "http://zhouheiya.tmall.com/campaign-3735-6.htm",
-	      "entityType": "SHOP",
-	      "brandId": "111496"
-	    }, {
-	      "id": "2081058060",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1w4jxLVXXXXaxXXXXtKXbFXXX.gif",
-	      "finalScore": "0.8640439551049249",
-	      "shopUrl": "http://rongxintang.tmall.com/campaign-3735-6.htm",
-	      "entityType": "SHOP",
-	      "brandId": "8709890"
-	    }],
-	    "finalScore": "4.657333333333334",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#fff5a3",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/newfood?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_12_735362&pos=1",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i1/TB1LHh4MXXXXXbsXpXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "1",
-	    "industryBenefit": null,
-	    "industryId": "12",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i4/TB1wshUMXXXXXXaXVXXeWjm2pXX-750-240.jpg"
-	  }, {
-	    "shopList": [{
-	      "id": "520557274",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1aMjXLVXXXXbUaXXXSutbFXXX.jpg",
-	      "finalScore": "0.8986382989845325",
-	      "shopUrl": "http://newbalance.tmall.com/campaign-3735-20.htm",
-	      "entityType": "SHOP",
-	      "brandId": "20584"
-	    }, {
-	      "id": "746866993",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1pXG9LVXXXXaLXFXXSutbFXXX.jpg",
-	      "finalScore": "0.8917855242977327",
-	      "shopUrl": "http://vans.tmall.com/campaign-3735-19.htm",
-	      "entityType": "SHOP",
-	      "brandId": "29529"
-	    }, {
-	      "id": "1612713147",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1jHfXLVXXXXXPXFXXSutbFXXX.jpg",
-	      "finalScore": "0.8895943606442631",
-	      "shopUrl": "http://dcshoecousa.tmall.com/campaign-3735-8.htm",
-	      "entityType": "SHOP",
-	      "brandId": "3851662"
-	    }, {
-	      "id": "2379251418",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1sbLlLVXXXXbeXXXXSutbFXXX.jpg",
-	      "finalScore": "0.8881539668874383",
-	      "shopUrl": "http://baijinydhw.tmall.com/campaign-3735-2.htm",
-	      "entityType": "SHOP",
-	      "brandId": "20579"
-	    }],
-	    "finalScore": "4.545333333333334",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#cbdbfe",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/ydhw?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_8_735362&pos=2",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i3/TB1h4kzLVXXXXawXpXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "2",
-	    "industryBenefit": null,
-	    "industryId": "8",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i4/TB19VMjLVXXXXaeaXXXeWjm2pXX-750-240.jpg"
-	  }, {
-	    "shopList": [{
-	      "id": "811383091",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1q49ZLVXXXXaJXVXXSutbFXXX.jpg",
-	      "finalScore": "0.8723682716749482",
-	      "shopUrl": "http://tongrentangbj.tmall.com/campaign-3735-9.htm",
-	      "entityType": "SHOP",
-	      "brandId": "44652"
-	    }, {
-	      "id": "838914626",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1GQYbLVXXXXaXXVXXSutbFXXX.jpg",
-	      "finalScore": "0.5027131908086584",
-	      "shopUrl": "http://jouo.tmall.com/campaign-3735-3.htm",
-	      "entityType": "SHOP",
-	      "brandId": "14170081"
-	    }, {
-	      "id": "1077716829",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1rdW2LVXXXXagapXXSutbFXXX.jpg",
-	      "finalScore": "0.5015387557024262",
-	      "shopUrl": "http://wetcode.tmall.com/campaign-3735-14.htm",
-	      "entityType": "SHOP",
-	      "brandId": "3675642"
-	    }, {
-	      "id": "1664976033",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1Q.rpLVXXXXXiXpXXSutbFXXX.jpg",
-	      "finalScore": "0.5014897109669442",
-	      "shopUrl": "http://hanhoohzp.tmall.com/campaign-3735-17.htm",
-	      "entityType": "SHOP",
-	      "brandId": "78888695"
-	    }],
-	    "finalScore": "4.526666666666666",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#ffd1b6",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/getbeauty?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_2_735362&pos=3",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i4/TB1Djt9MXXXXXanXXXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "3",
-	    "industryBenefit": null,
-	    "industryId": "2",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i3/TB1_gVQMXXXXXX9XVXXeWjm2pXX-750-240.jpg"
-	  }, {
-	    "shopList": [{
-	      "id": "2153169655",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1nlK7LVXXXXaRXFXXSutbFXXX.jpg",
-	      "finalScore": "0.8820210808835905",
-	      "shopUrl": "http://ctkicks.tmall.com/campaign-3735-15.htm",
-	      "entityType": "SHOP",
-	      "brandId": "20584"
-	    }, {
-	      "id": "2784101115",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1RrS.LVXXXXcrXpXXSutbFXXX.jpg",
-	      "finalScore": "0.5930383227012586",
-	      "shopUrl": "http://tomtailor.tmall.com/campaign-3735-0.htm",
-	      "entityType": "SHOP",
-	      "brandId": "213474060"
-	    }, {
-	      "id": "2183813726",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1kmS_LVXXXXaBaXXXSutbFXXX.jpg",
-	      "finalScore": "0.5882558957771681",
-	      "shopUrl": "http://huaiyuan.tmall.com/campaign-3735-5.htm",
-	      "entityType": "SHOP",
-	      "brandId": "29465"
-	    }, {
-	      "id": "1785908005",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1dB6zLVXXXXcJXXXXSutbFXXX.jpg",
-	      "finalScore": "0.5694211862124341",
-	      "shopUrl": "http://axonus.tmall.com/campaign-3735-1.htm",
-	      "entityType": "SHOP",
-	      "brandId": "115035841"
-	    }],
-	    "finalScore": "4.413955555555555",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#b9eaf2",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/guojixfs?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_1_735362&pos=4",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i3/TB1_T7ALVXXXXXOXXXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "4",
-	    "industryBenefit": null,
-	    "industryId": "1",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i2/TB1s7koLVXXXXafXFXXeWjm2pXX-750-240.jpg"
-	  }, {
-	    "shopList": [{
-	      "id": "2453054335",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1RX_vLVXXXXchXpXXSutbFXXX.jpg",
-	      "finalScore": "0.8463447899590267",
-	      "shopUrl": "http://nanshizixing.tmall.com/campaign-3735-2.htm",
-	      "entityType": "SHOP",
-	      "brandId": "844502560"
-	    }, {
-	      "id": "1041773234",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1Q7jpLVXXXXX8XpXXSutbFXXX.jpg",
-	      "finalScore": "0.560952734503075",
-	      "shopUrl": "http://dapu.tmall.com/campaign-3735-8.htm",
-	      "entityType": "SHOP",
-	      "brandId": "14493763"
-	    }, {
-	      "id": "300031438",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB13VC4LVXXXXarXVXXSutbFXXX.jpg",
-	      "finalScore": "0.5450674634839442",
-	      "shopUrl": "http://kangerxin.tmall.com/campaign-3735-10.htm",
-	      "entityType": "SHOP",
-	      "brandId": "3781905"
-	    }, {
-	      "id": "92042735",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1PxYcLVXXXXasaXXXSutbFXXX.jpg",
-	      "finalScore": "0.5448023228053981",
-	      "shopUrl": "http://shuixing.tmall.com/campaign-3735-10.htm",
-	      "entityType": "SHOP",
-	      "brandId": "3685660"
-	    }],
-	    "finalScore": "4.13",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#bbffe5",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/jfjs?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_4_735362&pos=5",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i3/TB1jeoCLVXXXXcoXXXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "5",
-	    "industryBenefit": null,
-	    "industryId": "4",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i4/TB1C5.fLVXXXXb3aXXXeWjm2pXX-750-240.jpg"
-	  }, {
-	    "shopList": [{
-	      "id": "822428555",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1g46aLVXXXXcUXVXXSutbFXXX.jpg",
-	      "finalScore": "0.9183458776971917",
-	      "shopUrl": "http://playboyyd.tmall.com/campaign-3735-11.htm",
-	      "entityType": "SHOP",
-	      "brandId": "29510"
-	    }, {
-	      "id": "196993935",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1pHG8LVXXXXbraXXXSutbFXXX.jpg",
-	      "finalScore": "0.9105525246667775",
-	      "shopUrl": "https://uniqlo.tmall.com/campaign-3735-56.htm",
-	      "entityType": "SHOP",
-	      "brandId": "29527"
-	    }, {
-	      "id": "505753958",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1WKYyLVXXXXXHXXXXSutbFXXX.jpg",
-	      "finalScore": "0.90750966370726",
-	      "shopUrl": "http://bonas.tmall.com/campaign-3735-11.htm",
-	      "entityType": "SHOP",
-	      "brandId": "3486580"
-	    }, {
-	      "id": "2113823580",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1itHkLVXXXXX9XFXXSutbFXXX.jpg",
-	      "finalScore": "0.5900977955635289",
-	      "shopUrl": "http://kafanya.tmall.com/campaign-3735-7.htm",
-	      "entityType": "SHOP",
-	      "brandId": "110684218"
-	    }],
-	    "finalScore": "4.088",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#ffc7c9",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/neiyi328?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_9_735362&pos=6",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i1/TB1tl3tLVXXXXbbXFXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "6",
-	    "industryBenefit": null,
-	    "industryId": "9",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i2/TB1AkIyLVXXXXbjXpXXeWjm2pXX-750-240.jpg"
-	  }],
-	  "sub": [{
-	    "shopList": null,
-	    "finalScore": "4.033333333333333",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/zbps?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_3_735362&pos=7",
-	    "entityType": "OTHER",
-	    "colour": "#bbffe5",
-	    "industryTitle": "珠宝配饰",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "7",
-	    "industryBenefit": "大牌1折秒杀",
-	    "industryId": "3",
-	    "industryImg": "//img.alicdn.com/tps/i1/TB1s5y.LVXXXXb.aXXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "3.8773333333333335",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/dqc?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_15_735362&pos=8",
-	    "entityType": "OTHER",
-	    "colour": "#b4ebff",
-	    "industryTitle": "数码",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "8",
-	    "industryBenefit": "疯抢大牌新品",
-	    "industryId": "15",
-	    "industryImg": "//img.alicdn.com/tps/i4/TB1_xG.LVXXXXbWaXXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "3.8359999999999994",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/man?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_6_735362&pos=9",
-	    "entityType": "OTHER",
-	    "colour": "#cbe9a9",
-	    "industryTitle": "男装",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "9",
-	    "industryBenefit": "新品低至9.9元",
-	    "industryId": "6",
-	    "industryImg": "//img.alicdn.com/tps/i1/TB1mO2qLVXXXXXiXFXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "3.243333333333333",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/xihu?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_13_735362&pos=10",
-	    "entityType": "OTHER",
-	    "colour": "#cdffa4",
-	    "industryTitle": "洗护",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "10",
-	    "industryBenefit": "爆款1分钱抢",
-	    "industryId": "13",
-	    "industryImg": "//img.alicdn.com/tps/i3/TB1Ft_CLVXXXXX2XXXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "3.1553333333333335",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/myxfs?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_5_735362&pos=11",
-	    "entityType": "OTHER",
-	    "colour": "#f8e1ff",
-	    "industryTitle": "母婴童装",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "11",
-	    "industryBenefit": "跨店满299减40",
-	    "industryId": "5",
-	    "industryImg": "//img.alicdn.com/tps/i4/TB1c.HvLVXXXXXPXpXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "2.6739999999999995",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/nvzhuang?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_7_735362&pos=12",
-	    "entityType": "OTHER",
-	    "colour": "#d5cbe8",
-	    "industryTitle": "女装",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "12",
-	    "industryBenefit": "折后用券抢新",
-	    "industryId": "7",
-	    "industryImg": "//img.alicdn.com/tps/i3/TB1JdfsLVXXXXbRXpXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "0.0",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/mobilephone?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_14_735362&pos=13",
-	    "entityType": "OTHER",
-	    "colour": "#c5ffdf",
-	    "industryTitle": "手机",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "13",
-	    "industryBenefit": "1元抢优惠券",
-	    "industryId": "14",
-	    "industryImg": "//img.alicdn.com/tps/i4/TB1M3zhLVXXXXX4XVXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "0.0",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/xiangbaohuanxin?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_11_735362&pos=14",
-	    "entityType": "OTHER",
-	    "colour": "#ffccdc",
-	    "industryTitle": "箱包",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "14",
-	    "industryBenefit": "极致焕新尖货",
-	    "industryId": "11",
-	    "industryImg": "//img.alicdn.com/tps/i3/TB1gE6kLVXXXXcrXFXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "0.0",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/newnv?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_10_735362&pos=15",
-	    "entityType": "OTHER",
-	    "colour": "#fff8ee",
-	    "industryTitle": "鞋履",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "15",
-	    "industryBenefit": "潮品精选鞋履",
-	    "industryId": "10",
-	    "industryImg": "//img.alicdn.com/tps/i3/TB1.qzpLVXXXXX.XFXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }],
-	  "isFormal": "false",
-	  "exposureParam": "//ac.mmstat.com/1.gif?apply=vote&abbucket=_AB-M1011_B14&com=02&acm=03654.1003.1.735362&cod=03654&cache=U5revsTn&aldid=KXPpnvEH&logtype=4&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.735362&ip=",
-	  "id": "03654"
-	};
-
-	module.exports = {
-	  components: {
-	    banner: __webpack_require__(240)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_248: 248,
-	      NUMBER_155: 155,
-	      NUMBER_373: 373,
-	      NUMBER_237: 237,
-	      NUMBER_186: 186,
-	      NUMBER_208: 208,
-	      NUMBER_750: 750,
-	      subItemBg: '//gw.alicdn.com/tps/TB1QzUfLVXXXXaOXVXXXXXXXXXX-248-86.jpg',
-	      items: [],
-	      subItems: []
-	    };
-	  },
-	  created: function created() {
-	    this.initData(demoContent);
-	  },
-	  methods: {
-	    getSubItemTop: function getSubItemTop(i) {
-	      return (i - i % 3) / 3 * (241 + 3);
-	    },
-	    getSubItemLeft: function getSubItemLeft(i) {
-	      return i % 3 * (248 + 3);
-	    },
-	    initData: function initData(content) {
-	      this.items = content.main;
-	      this.subItems = content.sub;
-	    }
-	  }
-	};
-
-/***/ }),
-/* 249 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), _vm._v(" "), _c('div', {
-	    staticClass: "item-container",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, _vm._l((_vm.items), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        width: 750,
-	        paddingBottom: 14,
-	        backgroundColor: item.colour
-	      }))
-	    }, [_c('div', [_c('banner', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.NUMBER_750,
-	        "height": _vm.NUMBER_237,
-	        "src": i % 2 === 0 ? item.leftBannerImg : item.rightBannerImg,
-	        "href": item.bannerUrl
-	      }
-	    })], 1), _vm._v(" "), _c('div', {
-	      staticClass: "shop-list",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, _vm._l((item.shopList), function(i, shop) {
-	      return _c('div', {
-	        key: i,
-	        staticClass: "shop-img-container",
-	        staticStyle: _vm.$processStyle(undefined),
-	        style: (_vm.$processStyle(undefined))
-	      }, [_c('banner', {
-	        staticStyle: _vm.$processStyle(undefined),
-	        style: (_vm.$processStyle(undefined)),
-	        attrs: {
-	          "width": _vm.NUMBER_186,
-	          "height": _vm.NUMBER_208,
-	          "src": shop.picUrl,
-	          "href": shop.shopUrl
-	        }
-	      })], 1)
-	    }))])
-	  })), _vm._v(" "), _c('div', {
-	    staticClass: "sub-item-container",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      height: Math.round(_vm.subItems.length / 3) * (241 + 3)
-	    }))
-	  }, _vm._l((_vm.subItems), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      staticClass: "sub-item",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        top: _vm.getSubItemTop(i),
-	        left: _vm.getSubItemLeft(i)
-	      }))
-	    }, [_c('image', {
-	      staticClass: "sub-item-bg",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": _vm.subItemBg
-	      }
-	    }), _vm._v(" "), _c('div', {
-	      staticClass: "sub-item-img",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('banner', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.NUMBER_248,
-	        "height": _vm.NUMBER_155,
-	        "src": item.industryImg,
-	        "href": item.industryUrl
-	      }
-	    })], 1), _vm._v(" "), _c('div', {
-	      staticClass: "sub-item-title",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('text', {
-	      staticClass: "industry-title",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "href": item.industryUrl
-	      }
-	    }, [_vm._v(_vm._s(item.industryTitle))]), _vm._v(" "), _c('text', {
-	      staticClass: "industry-benefit",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "href": item.industryUrl
-	      }
-	    }, [_vm._v(_vm._s(item.industryBenefit))])])])
-	  }))])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-2db23588", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 250 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(251)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(253),
-	  /* template */
-	  __webpack_require__(254),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-a1fbc438",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/coupon.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] coupon.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-a1fbc438", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-a1fbc438", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 251 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(252);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("0d823394", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-a1fbc438\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./coupon.vue", function() {
-	     var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-a1fbc438\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./coupon.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 252 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-a1fbc438]{\n  width:750;\n  height:100;\n}\n.wrapper[data-v-a1fbc438] {\n  color: #FF4550;\n  width: 750;\n  height: 230;\n}\n.my-coupon[data-v-a1fbc438] {\n  width: 180;\n  height: 39;\n  position: absolute;\n  top: 15;\n  right: 149;\n}\n.guides[data-v-a1fbc438] {\n  height: 39;\n  width: 110;\n  position: absolute;\n  top: 15;\n  right: 32;\n}\n.lottery[data-v-a1fbc438] {\n  width: 348;\n  height: 76;\n  position: absolute;\n  top: 132;\n  right: 70;\n}\n.info[data-v-a1fbc438] {\n  font-size: 18;\n  position: absolute;\n  top: 84;\n  right: 70;\n}\n.img[data-v-a1fbc438] {\n  width: 750;\n  height: 230;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 253 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      currentStatus: '//img.alicdn.com/tps/i4/TB1cYBKMXXXXXayaXXXkxHk2pXX-750-228.jpg_q75.jpg'
-	    };
-	  },
-	  methods: {
-	    handleClick: function handleClick(e) {
-	      modal.toast({
-	        message: 'click',
-	        duration: 1
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-/* 254 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), _vm._v(" "), _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.currentStatus
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticClass: "my-coupon",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.handleClick
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticClass: "guides",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.handleClick
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticClass: "lottery",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.handleClick
-	    }
-	  })])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-a1fbc438", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 255 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(256)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(258),
-	  /* template */
-	  __webpack_require__(259),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-7a3987f0",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/goods.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] goods.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-7a3987f0", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-7a3987f0", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 256 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(257);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("0dca157b", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7a3987f0\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./goods.vue", function() {
-	     var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7a3987f0\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./goods.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 257 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-7a3987f0] {\n  width: 750;\n  height: 100;\n}\n.slider[data-v-7a3987f0] {\n  height: 652;\n}\n.pannel[data-v-7a3987f0] {\n  width: 750;\n  height: 592;\n  flex-direction: row;\n}\n.middle-col[data-v-7a3987f0] {\n  margin-left:4;\n  margin-right:4;\n  width: 240;\n  height: 588;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 258 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    banner: __webpack_require__(240)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_251: 251,
-	      NUMBER_240: 240,
-	      NUMBER_292: 292,
-	      NUMBER_588: 588
-	    };
-	  }
-	};
-
-/***/ }),
-/* 259 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return (!_vm.ds.isHide) ? _c('div', [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), _vm._v(" "), _c('slider', {
-	    staticClass: "slider",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "show-indicators": "true",
-	      "auto-play": "true",
-	      "interval": "3000"
-	    }
-	  }, [_vm._l((_vm.ds.bannerItems), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      staticClass: "pannel",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('div', [_c('banner', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-bottom": "4"
-	      }),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.NUMBER_251,
-	        "height": _vm.NUMBER_292,
-	        "src": item.img1,
-	        "href": item.url1
-	      }
-	    }), _vm._v(" "), _c('banner', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.NUMBER_251,
-	        "height": _vm.NUMBER_292,
-	        "src": item.img2,
-	        "href": item.url2
-	      }
-	    })], 1), _vm._v(" "), _c('div', {
-	      staticClass: "middle-col",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('banner', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.NUMBER_240,
-	        "height": _vm.NUMBER_588,
-	        "src": item.img3,
-	        "href": item.url3
-	      }
-	    })], 1), _vm._v(" "), _c('div', [_c('banner', {
-	      staticStyle: _vm.$processStyle({
-	        "margin-bottom": "4"
-	      }),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.NUMBER_251,
-	        "height": _vm.NUMBER_292,
-	        "src": item.img4,
-	        "href": item.url4
-	      }
-	    }), _vm._v(" "), _c('banner', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.NUMBER_251,
-	        "height": _vm.NUMBER_292,
-	        "src": item.img5,
-	        "href": item.url5
-	      }
-	    })], 1)])
-	  }), _vm._v(" "), _c('indicator', {
-	    staticStyle: _vm.$processStyle({
-	      "position": "absolute",
-	      "width": "714",
-	      "height": "200",
-	      "left": "10",
-	      "bottom": "-80",
-	      "itemSize": "20",
-	      "itemColor": "#999999",
-	      "itemSelectedColor": "#000000"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 2)], 1) : _vm._e()
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-7a3987f0", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 260 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(261)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(263),
-	  /* template */
-	  __webpack_require__(264),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-8e543768",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/resource.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] resource.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-8e543768", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-8e543768", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 261 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(262);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("4d02c6fc", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-8e543768\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./resource.vue", function() {
-	     var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-8e543768\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./resource.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 262 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-8e543768] {\n  width: 750;\n  height: 100;\n}\n.big-banner-container[data-v-8e543768]{\n  margin-bottom:4;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 263 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    banners: __webpack_require__(238),
-	    banner: __webpack_require__(240)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_750: 750,
-	      NUMBER_200: 200,
-	      NUMBER_373: 373,
-	      NUMBER_224: 224,
-	      NUMBER_4: 4
-	    };
-	  }
-	};
-
-/***/ }),
-/* 264 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return (!_vm.ds.isHide) ? _c('div', [_c('div', {
-	    staticClass: "big-banner-container",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('banner', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "width": _vm.NUMBER_750,
-	      "height": _vm.NUMBER_200,
-	      "src": _vm.ds.bigBannerImg,
-	      "href": _vm.ds.bigBannerUrl
-	    }
-	  })], 1), _vm._v(" "), _c('banners', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "direction": "row",
-	      "ds": _vm.ds.smallBannerItems,
-	      "width": _vm.NUMBER_373,
-	      "height": _vm.NUMBER_224,
-	      "space": _vm.NUMBER_4
-	    }
-	  })], 1) : _vm._e()
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-8e543768", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 265 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(266)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(268),
-	  /* template */
-	  __webpack_require__(269),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-52519b84",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/scene.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] scene.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-52519b84", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-52519b84", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 266 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(267);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("93ba78ec", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-52519b84\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./scene.vue", function() {
-	     var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-52519b84\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./scene.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 267 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-52519b84] {\n  width: 750;\n  height: 100;\n}\n.item[data-v-52519b84] {\n  width: 750;\n  height: 340;\n  margin-bottom: 4;\n}\n.item-img[data-v-52519b84] {\n  position: absolute;\n  left: 110;\n  top: 20;\n}\n.right-item-img[data-v-52519b84] {\n  position: absolute;\n  right: 110;\n  top: 20;\n}\n.benifit-img[data-v-52519b84] {\n  position: absolute;\n  right: 5;\n  top: 160;\n}\n.right-benifit-img[data-v-52519b84] {\n  position: absolute;\n  left: 40;\n  top: 160;\n}\n.small-item-container[data-v-52519b84] {\n  width: 750;\n}\n.small-item[data-v-52519b84] {\n  position: absolute;\n  width: 373;\n  height: 230;\n  flex-direction: row;\n}\n.small-item-bg[data-v-52519b84] {\n  width: 373;\n  height: 230;\n}\n.small-item-img[data-v-52519b84] {\n  position: absolute;\n  left: 12;\n  top: 12;\n}\n.small-benifit-img[data-v-52519b84] {\n  position: absolute;\n  right: 0;\n  top: 65;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 268 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	"use strict";
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var demoContent = [{
-	  "id": "1111",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1392&scm=1003.1.03653.SUB_1111_740603&pos=1",
-	  "_s_": "d",
-	  "itemImg": "https://img.alicdn.com/tps/TB1c7t.MXXXXXchXXXXXXXXXXXX-182-206.jpg",
-	  "sceneCat": "50012010,50012027,50012032,50007003,50008881,50008883,1623,162116,50010850,123216004",
-	  "finalScore": "10000.0",
-	  "_pos_": "1",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/TB1Zgl2MXXXXXaYXFXXXXXXXXXX-170-100.png"
-	}, {
-	  "id": "1396",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1396&scm=1003.1.03653.SUB_1396_740603&pos=2",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i2/TB1O1VfMXXXXXX0aXXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50010368,50011892,50011894,50013794,50010792,50010790,50010790,121434025,121396024,50010793,50010789,50010793,121386035,121392037,121458034,121392036,121482027,121392015,121368014,121418013,121392016,50011982,122690003,302910,50012010,122654005,50012019,50012825,50012027,50012042,50011744,50012906,50012907,50008881,50008883,50008882?,50012784?,50022889,50022728,50013228,50013896,50014775,50019578,50014822,50026394,50019694,50019279,50019272,50014079,50014078,50014076,50014077,50017238,121464011,121468014,50019130,50019127,50019126,50019128,50019125,50015984,50014803,50014802,50015980,50014788,50014787,50019526,50014791,50019520,50013932,50014677,50015978,50014786,50014785,50522001,50014493,50023100,121418021,121388027,121424021,121418020,121368020,50012036,50012044,50012043,50010368, 50011892, 50019274,50012044,50012048,50012043,50013228,50013238,50011726,50019279,50015984,50014803,50014802,50019526,50014791,50019520,50013932,50014677,50019526,50013314,50023341,50016752,50016749,50016747,50016744,50016741,50016740,50016739,50016738,50016737,50016769,50016763,50016750,50007003,302910,50012010,50012032,50012033,50011745,50011746,50011894,121458034,121756003,121426033,50011982,50011979,121390006,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,1512,123534001,14,50008090,50012341,50132002,50012342,50012343,50012345,50012346,50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,121450007,50013697,50010218,50005960,50005962,50012820,50012406,50023620,50023605,50008829,50024064,50023440,50008687,124392001,50023771,50006804,50012410,124482010,121398023,50023789,50011975",
-	  "finalScore": "10000.0",
-	  "_pos_": "2",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i1/TB1cp4sMXXXXXbLXFXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1616",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1616&scm=1003.1.03653.SUB_1616_740603&pos=3",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i4/TB1dlEALVXXXXbxXpXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50009032,50007003,302910,1512,124688012,124986002,124942005,50023722,50010368,50011892,50011894",
-	  "finalScore": "10000.0",
-	  "_pos_": "3",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i3/TB1fxonLVXXXXXUaXXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "16424",
-	  "sceneUrl": "https://brand.tmall.com/mobilestreet/subject.htm?id=16424&acm=03653.1003.1.740603&aldid=VyrSqx06&spm=0.0.0.0.Wv8ion&scm=1003.1.03653.SUB_16424_740603&pos=4",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i4/TB1.i2_LVXXXXbrXpXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50012043,50012036,50010850,50000671,1622,50000852,162104,50000697,162205,162116,50012027,50012032,50012028,50012033,50012042,50008882,50012772,50006846,50008881,50000436,50011123,3035,50010167,50000557,50010158,50010159,50010402,50010160,50011980,50011993,121390006,50011978,50011977,50011979,121454013,50011745",
-	  "finalScore": "6.729749999999999",
-	  "_pos_": "4",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i2/TB1bhH5LVXXXXapXFXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "16425",
-	  "sceneUrl": "https://brand.tmall.com/mobilestreet/subject.htm?id=16360&acm=03653.1003.1.740603&aldid=VyrSqx06&spm=0.0.0.0.MttFEC&scm=1003.1.03653.SUB_16425_740603&pos=5",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i3/TB15ywbLVXXXXcdXXXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50012043,50012036,50010850,50000671,1622,50000852,162104,50000697,162205,162116,50012027,50012032,50012028,50012033,50012042,50008882,50012772,50006846,50008881,50000436,50011123,3035,50010167,50000557,50010158,50010159,50010402,50010160,50011980,50011993,121390006,50011978,50011977,50011979,121454013,50011745",
-	  "finalScore": "6.729749999999999",
-	  "_pos_": "5",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i1/TB1JBLYLVXXXXXlXVXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1625",
-	  "sceneUrl": "https://pages.tmall.com/wow/fushi/act/gf-chaoliu?acm=03653.1003.1.740603&aldid=VyrSqx06&scm=1003.1.03653.SUB_1625_740603&pos=6",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/bao/uploaded/i2/TB1Gd21KVXXXXXZXVXXXXXXXXXX_!!0-item_pic.jpg",
-	  "sceneCat": "50012043,50012036,50010850,50000671,1622,50000852,162104,50000697,162205,162116,50012027,50012032,50012028,50012033,50012042,50008882,50012772,50006846,50008881,50000436,50011123,3035,50010167,50000557,50010158,50010159,50010402,50010160,50011980,50011993,121390006,50011978,50011977,50011979,121454013,50011982,50011991,50012906,50011744,50011745,50011743,50012907,50011746,50010815,121460005,50013794,122438001,121398006,121386023,50010808",
-	  "finalScore": "6.729749999999999",
-	  "_pos_": "6",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i3/TB1qxXzMXXXXXcjXFXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1392",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1392&scm=1003.1.03653.SUB_1392_740603&pos=7",
-	  "_s_": "d",
-	  "itemImg": "https://img.alicdn.com/tps/TB1c7t.MXXXXXchXXXXXXXXXXXX-182-206.jpg",
-	  "sceneCat": "50006842,50006840,50008881,50008883,50008882,50008884,50012774,50012775,50012776,50012781,5000888,50012766,50012771,50012772,50010404,50010368, 50011892, 50011894,124688012,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50008882,50008886,50008885,50012777,50012778,50011977,50011978,50011979,50011980,50011982,50011990,50011999,50012000,50011993,50011996,50011997,121366011,121484009,121368010,121390006,121398029,121404030,121404031,121408040,121410035,121412033,121414041,121418013,121454013,121410013,121422013,121484013,50010789,50010790,50010792,50010793,50010794,50010796,50010797,50010798,50010801,50010803,50010805,50010807,50010808,50010815,121410007,121426007,121452004,121460005,50012341,50132002,50012342,50012343,50012345,50012346,50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,121366037,121458036,121392038,121420035,121364028,121468026,121472031,121476036,121470042,121418032,121410036,121472032,121420032,121470040,121384032,121460028,121448028,121400030,121424024,121482025,121418031,121402028,121388035,121460029,121400028,121400029,121418030,121476034,121478031,121448029,121480030,121366035,121424025,121426030,121484030,121412031,121384033,121424023,121402027,121408039,121420033,121452028,121466040,121416029,121482028,121420034,121396046,121422052,121370037,121424031,21364043,121472040,121412045,121424032,125054002,125074007,125074008,125104003,125080003,125024006,125080004",
-	  "finalScore": "4.4951428571428576",
-	  "_pos_": "7",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/TB1Zgl2MXXXXXaYXFXXXXXXXXXX-170-100.png"
-	}, {
-	  "id": "1395",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1395&scm=1003.1.03653.SUB_1395_740603&pos=8",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i2/TB1p4NcMXXXXXbGaXXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50008881,50008883,50008882,50008884,50012774,50012775,50012776,50012781,50008886,50012766,50012771,50012772,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,16240,50012773,50006846,50010394,50008888,50008890,50008889,50012784,50012785,50012786,50012787,50008885,50012777,50012778,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124942005,50010368,50011892,50011894,50023751,121366037,121458036,121392038,121420035,121364028,121468026,121400029,121418030,121478031,121480030,121366035,121424025,121426030,121484030,121412031,125054002,125074007,125074008,125104003,125080003,125024006,125080004,121400030,121424024,121482025,121418031,121402028,121388035",
-	  "finalScore": "4.465166666666667",
-	  "_pos_": "8",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i1/TB1ySNtMXXXXXamXFXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1394",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1394&scm=1003.1.03653.SUB_1394_740603&pos=9",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i4/TB1Ns8eMXXXXXb1aXXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124986002,50010368, 50011892,50011894,121480030,121366035,121424025,121426030,121484030,121412031",
-	  "finalScore": "4.309925925925926",
-	  "_pos_": "9",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i3/TB1ZEXfMXXXXXapaXXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1610",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1610&scm=1003.1.03653.SUB_1610_740603&pos=10",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i3/TB1ONckLVXXXXbJaXXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "121484044,121452038,50012342,50012027,50012032,50006843,50010850,50000671,162104,1623,50011277,162116,123216004,50008898,121366037,121458036,121392038,121420035,121364028,121468026,121472031,121476036,121470042,121418032,121410036,121472032,121420032,121470040,121384032,121460028,121448028,121400030,121424024,121482025,121418031,121402028,121388035,121460029,121400028,121400029,121418030,121476034,121478031,121448029,121480030,121366035,121424025,121426030,121484030,121412031,121384033,121424023,121402027,121408039,121420033,121452028,121466040,121416029,121482028,121420034,121396046,121422052,121370037,121424031,21364043,121472040,121412045,121424032,125054002,125074007,125074008,125104003,125080003,125024006,125080004",
-	  "finalScore": "4.293333333333334",
-	  "_pos_": "10",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i2/TB1RzwFLVXXXXXsXpXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1619",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1619&scm=1003.1.03653.SUB_1619_740603&pos=11",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i3/TB1eagyLVXXXXaiXFXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,122654005,50011740,50009032,124688012,213202,121396029,121476023,121410029,213203,50023326,213205,50022686,50023293,50466023,50024999,50016885,50011894",
-	  "finalScore": "4.23",
-	  "_pos_": "11",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i4/TB1j0AxLVXXXXaRXFXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1613",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1613&scm=1003.1.03653.SUB_1613_740603&pos=12",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i2/TB1WssFLVXXXXXUXpXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50023108,50022893,50022892,50022890,50013228,50019520,50017120,50019560,50017129,50017128,50017127,50017126,50017125,50017124,50017123,50017122,50017121,50020039,50020038,50017119,50019559,50017110,50017108,50017107,50017097,50017096,50017095,50017094,50017093,50017092,50012036,50012041",
-	  "finalScore": "4.2186666666666675",
-	  "_pos_": "12",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i1/TB1Rg.qLVXXXXbqXVXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1614",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1614&scm=1003.1.03653.SUB_1614_740603&pos=13",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i1/TB1KzUxLVXXXXajXFXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50013238,50011726,50022893,50022892,50022890,50013228,50017129,50020038,50017119,50019559,50017102,50017110,50017097,50019707,50019555,50016677,50018317,50016675,50016673,50016672,50016671,50016670,50016732,50016669,50016668,50016667,50016666,50016665,50016683,50016682,50016608,50016607,50016637,50016638,50012036,50012043",
-	  "finalScore": "4.216",
-	  "_pos_": "13",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i2/TB1WyouLVXXXXXcXVXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1397",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1397&scm=1003.1.03653.SUB_1397_740603&pos=14",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i4/TB1dCxvMXXXXXc1XpXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "122846004,50020776,50024799,50024801,50024921,50002794,50020778,50002792,50002791,50002793,50003942,50005500,50005497,50001692,50005495,50005496,50005503,50005498,50005499,50005501,50005502,50003455,50003457,122904003,50023091,50020770,50008863,50005507,121414011,50020768,50022701,50008862,121420012,50020766,50020764,121398012,121380011,50020751,50020676,50024945,50020720,50002790,50020730,50001866,50020678,121476008,121458013,50002795,121364011,50005505,121422014,50024943,50000583,50000582,50000584,213002,50005033,50000563,50008607,50006988,50008608,50024601,50024602,50012051,50001871,122854005,121458010,121452006,121416008,50008779,50002777,121394007,121386009,50010825,50013810,121434010,50001865,50008565,50008246,50017192,121404045,121368009,121462014,50019372,50008248,121418011,50008249,50017193,50008252,50008251,50000512,121364047,122846004,50020776,50024799,50024801,50024921,50002794,50020778,50002792,50002791,50002793,50003942,50005500,50005497,50001692,50005495,50005496,50005503,50005498,50005499,50005501,50005502,50003455,50003457,122904003,50023091,50020770,50008863,50005507,121414011,50020768,50022701,50008862,121420012,50020766,50020764,121398012,121380011,50020751,50020676,50024945,50020720,50002790,50020730,50001866,50020678,121476008,121458013,50002795,121364011,50005505,121422014,50024943,50000583,50000582,50000584,213002,50005033,50000563,50008607,50006988,50008608,50024601,50024602,50012051,50020835,50021907,121472021,50021902,50005919,50002045,122724003,122652007,121408025,122688004,50021924,50021923,50000561,50011738,122676005,121396026,121388028,50003338,50021915,50011415,50011416,50003454,50021928,50021930,50021929,50021931,50024939,121384024,121472020,50020902,50020903,50020904,50020905,50021888,50021889,50021890,50023266,122960005,50012001,50011999,50012004,50012000,50012006,121394024,121412033,121394025,121450036,121472007,121480009,121388013,121466009,121484012,121366014,121434014,121422012,121476006,121396013,50011997,121434013,122646001,121458012,121468012,121368013,50011979,121366015,121406016,121456012,121366011,121414010,121460006,121368014,121388016,121396013,121400010,121470011,121474011,121478009,124760009,124768010,124822006,121482009,122430002,121454014,121392016,50001871,122854005,121458010,121452006,121416008,50008779,50002777,121394007,121386009,50010825,50013810,121434010,50001865,50008565,50008246,50017192,121404045,121368009,121462014,50019372,50008248,121418011,50008249,50017193,50008252,50008251,50000512,121364047,122846004,50020776,50024799,50024801,50024921,50002794,50020778,50002792,50002791,50002793,50003942,50005500,50005497,50001692,50005495,50005496,50005503,50005498,50005499,50005501,50005502,50003455,50003457,122904003,50023091,50020770,50008863,50005507,121414011,50020768,50022701,50008862,121420012,50020766,50020764,121398012,121380011,50020751,50020676,50024945,50020720,50002790,50020730,50001866,50020678,121476008,121458013,50002795,121364011,50005505,121422014,50024943,50000583,50000582,50000584,213002,50005033,50000563,50008607,50006988,50008608,50024601,50024602,50012051",
-	  "finalScore": "3.4206666666666665",
-	  "_pos_": "14",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i3/TB1ZARnMXXXXXaGXVXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1608",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1608&scm=1003.1.03653.SUB_1608_740603&pos=15",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i3/TB1xA3jLVXXXXXqapXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50012010,50012027,50012032,50007003,50008881,50008883,1623,162116,50010850,123216004",
-	  "finalScore": "0.0",
-	  "_pos_": "15",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i2/TB1WvoALVXXXXcdXpXX3bpXTXXX-170-100.png"
-	}];
-
-	module.exports = {
-	  components: {
-	    banner: __webpack_require__(240)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_186: 186,
-	      NUMBER_206: 206,
-	      NUMBER_373: 373,
-	      NUMBER_230: 230,
-	      NUMBER_170: 170,
-	      NUMBER_100: 100,
-	      NUMBER_750: 750,
-	      NUMBER_300: 300,
-	      NUMBER_340: 340,
-	      smallItemBg: 'https://gw.alicdn.com/tps/TB1oBIeLVXXXXatXpXXXXXXXXXX-373-230.jpg',
-	      items: [],
-	      smallItems: [],
-	      sceneBgs: ['https://gw.alicdn.com/tps/TB1xBT8LVXXXXbYXVXXXXXXXXXX-750-340.jpg', 'https://gw.alicdn.com/tps/TB1RoEkLVXXXXaMXpXXXXXXXXXX-750-340.jpg', 'https://gw.alicdn.com/tps/TB1DiEpLVXXXXa7XXXXXXXXXXXX-750-340.jpg']
-	    };
-	  },
-	  created: function created() {
-	    this.items = demoContent.slice(0, 3);
-	    this.smallItems = demoContent.slice(3);
-	  },
-	  methods: {
-	    getItemTop: function getItemTop(i) {
-	      return (i - i % 2) / 2 * (230 + 4);
-	    },
-	    getItemLeft: function getItemLeft(i) {
-	      return i % 2 * (373 + 4);
-	    }
-	  }
-	};
-
-/***/ }),
-/* 269 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), _vm._v(" "), _c('div', {
-	    staticClass: "small-item-container",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      height: Math.round(_vm.smallItems.length / 2) * 234
-	    }))
-	  }, _vm._l((_vm.smallItems), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      staticClass: "small-item",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        top: _vm.getItemTop(i),
-	        left: _vm.getItemLeft(i)
-	      }))
-	    }, [_c('div', [_c('image', {
-	      staticClass: "small-item-bg",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "src": _vm.smallItemBg
-	      }
-	    })]), _vm._v(" "), _c('div', {
-	      staticClass: "small-item-img",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('banner', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.NUMBER_186,
-	        "height": _vm.NUMBER_206,
-	        "src": item.itemImg,
-	        "href": item.sceneUrl
-	      }
-	    })], 1), _vm._v(" "), _c('div', {
-	      staticClass: "small-benifit-img",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('banner', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.NUMBER_170,
-	        "height": _vm.NUMBER_100,
-	        "src": item.benefitImg,
-	        "href": item.sceneUrl
-	      }
-	    })], 1)])
-	  }))])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-52519b84", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 270 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(271)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(273),
-	  /* template */
-	  __webpack_require__(274),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-d746a212",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/match.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] match.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-d746a212", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-d746a212", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 271 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(272);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("c7d918cc", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d746a212\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./match.vue", function() {
-	     var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d746a212\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./match.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 272 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-d746a212] {\n  width: 750;\n  height: 100;\n}\n.tm-banner[data-v-d746a212]{\n  bottom:4;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 273 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    banner: __webpack_require__(240)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_750: 750,
-	      NUMBER_373: 373,
-	      NUMBER_240: 240,
-	      NUMBER_200: 200,
-	      NUMBER_4: 4
-	    };
-	  }
-	};
-
-/***/ }),
-/* 274 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), _vm._v(" "), (_vm.ds.isShowTmSpecBanner && _vm.ds.tmSpecBanner) ? _c('div', {
-	    staticClass: "tm-banner",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('banner', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "width": _vm.NUMBER_750,
-	      "height": _vm.NUMBER_200,
-	      "src": _vm.ds.tmSpecBanner.img,
-	      "href": _vm.ds.tmSpecBanner.url
-	    }
-	  })], 1) : _vm._e(), _vm._v(" "), _vm._l((_vm.ds.bannerItems), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        flexDirection: 'row',
-	        marginBottom: _vm.NUMBER_4
-	      }))
-	    }, [_c('div', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        marginRight: _vm.NUMBER_4
-	      }))
-	    }, [_c('banner', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.NUMBER_373,
-	        "height": _vm.NUMBER_240,
-	        "src": item.leftImg,
-	        "href": item.leftUrl
-	      }
-	    })], 1), _vm._v(" "), _c('div', [_c('banner', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "width": _vm.NUMBER_373,
-	        "height": _vm.NUMBER_240,
-	        "src": item.rightImg,
-	        "href": item.rightUrl
-	      }
-	    })], 1)])
-	  })], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-d746a212", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 275 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(276)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(278),
-	  /* template */
-	  __webpack_require__(279),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-40d66fb9",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/brand.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] brand.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-40d66fb9", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-40d66fb9", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-/* 276 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(277);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("94c84bf4", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-40d66fb9\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./brand.vue", function() {
-	     var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-40d66fb9\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./brand.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-/* 277 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-40d66fb9] {\n  width: 750;\n  height: 100;\n}\n.container[data-v-40d66fb9] {\n  margin-bottom: 4;\n  background-color:#C0BABC;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-/* 278 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    banners: __webpack_require__(238)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {
-	          bannerItems: []
-	        };
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_742: 742,
-	      NUMBER_230: 230,
-	      NUMBER_4: 4
-	    };
-	  },
-	  computed: {
-	    bannerItems: function bannerItems() {
-	      return this.ds.bannerItems.slice(0, 8);
-	    }
-	  },
-	  created: function created() {
-	    var bannerItems = this.ds.bannerItems;
-	    bannerItems.sort(function () {
-	      return Math.random() - 0.5;
-	    });
-	    for (var i = 0; i < bannerItems.length; i++) {
-	      var item = bannerItems[i];
-	      if (i % 2 === 0) {
-	        item.img = item.leftImg;
-	        item.url = item.rightUrl;
-	      } else {
-	        item.img = item.rightImg;
-	        item.url = item.rightUrl;
-	      }
-	    }
-	  }
-	};
-
-/***/ }),
-/* 279 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "container",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-left": "4",
-	      "margin-right": "4"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('banners', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "direction": "column",
-	      "ds": _vm.bannerItems,
-	      "width": _vm.NUMBER_742,
-	      "height": _vm.NUMBER_230,
-	      "space": _vm.NUMBER_4
-	    }
-	  })], 1)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-40d66fb9", module.exports)
-	  }
-	}
-
-/***/ }),
-/* 280 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', {
-	    staticClass: "content",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('refresh', {
-	    staticClass: "refresh",
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "display": _vm.displayRefresh
-	    },
-	    on: {
-	      "refresh": _vm.handleRefresh
-	    }
-	  }, [_c('loading-indicator'), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-left": "36px",
-	      "color": "#eee"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("下拉刷新...")])], 1), _vm._v(" "), (_vm.show0) ? _c('headlines', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "ds": _vm.showData.header
-	    }
-	  }) : _vm._e(), _vm._v(" "), (_vm.show0) ? _c('category', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "ds": _vm.showData.category
-	    }
-	  }) : _vm._e(), _vm._v(" "), (_vm.show1) ? _c('coupon', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "ds": _vm.showData.coupon
-	    }
-	  }) : _vm._e(), _vm._v(" "), (_vm.show1) ? _c('goods', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "ds": _vm.showData.goods
-	    }
-	  }) : _vm._e(), _vm._v(" "), (_vm.show1) ? _c('resource', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "ds": _vm.showData.resource
-	    }
-	  }) : _vm._e(), _vm._v(" "), (_vm.show1) ? _c('scene', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "ds": _vm.showData.scene
-	    }
-	  }) : _vm._e(), _vm._v(" "), (_vm.show2) ? _c('match', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "ds": _vm.showData.match
-	    }
-	  }) : _vm._e(), _vm._v(" "), (_vm.show2) ? _c('brand', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "ds": _vm.showData.brand
-	    }
-	  }) : _vm._e(), _vm._v(" "), _c('loading', {
-	    staticClass: "loading",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "display": _vm.displayLoading
-	    },
-	    on: {
-	      "loading": _vm.handleLoading
-	    }
-	  }, [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "color": "#eee"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("加载更多...")])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-1ef3bcb8", module.exports)
-	  }
-	}
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/showcase/progress.js b/src/main/assets/vue-web/vue/showcase/progress.js
deleted file mode 100644
index 7aa4254..0000000
--- a/src/main/assets/vue-web/vue/showcase/progress.js
+++ /dev/null
@@ -1,770 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(281)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 281:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(282),
-	  /* template */
-	  __webpack_require__(283),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/progress.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] progress.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-7bbf1be4", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-7bbf1be4", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 282:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var INC = 20;
-	module.exports = {
-	  data: function data() {
-	    return {
-	      fullW: 600,
-	      w: 40
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9)
-	  },
-	  created: function created() {
-	    var me = this;
-	    setInterval(function () {
-	      if (me.w >= me.fullW) {
-	        me.w = 0;
-	      }
-	      me.w = me.w + INC >= me.fullW ? me.fullW : me.w + INC;
-	    }, 33);
-	  }
-	};
-
-/***/ }),
-
-/***/ 283:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Basic",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      width: _vm.fullW,
-	      borderColor: '#333',
-	      borderWidth: 1,
-	      borderStyle: 'solid'
-	    }))
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      width: _vm.w,
-	      height: 60,
-	      backgroundColor: '#333'
-	    }))
-	  })])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-7bbf1be4", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/showcase/tap-penetrate.js b/src/main/assets/vue-web/vue/showcase/tap-penetrate.js
deleted file mode 100644
index 6d3a4b7..0000000
--- a/src/main/assets/vue-web/vue/showcase/tap-penetrate.js
+++ /dev/null
@@ -1,959 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(284)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 284:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(285)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(287),
-	  /* template */
-	  __webpack_require__(288),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-4fdfbfd2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/tap-penetrate.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] tap-penetrate.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-4fdfbfd2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-4fdfbfd2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 285:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(286);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("a99c6c76", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-4fdfbfd2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tap-penetrate.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-4fdfbfd2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tap-penetrate.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 286:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.items-box[data-v-4fdfbfd2]{\n  flex-direction: row;\n  justify-content: space-between;\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n  -webkit-box-pack: justify;\n}\n.items[data-v-4fdfbfd2]{\n  flex-flow: row nowrap; \n  align-items: center; \n  overflow: hidden; \n  position: relative; \n  top: 0px; left: 0px; \n  box-sizing: border-box; \n  width: 374px; \n  height: 564px; \n  flex-basis: auto; \n  font-size: 0px; \n  border-color: rgb(0, 0, 0); \n  border-style: solid; \n  background-color: rgb(245, 245, 245); \n  margin-bottom: 2px; \n  text-align: center;\n}\n.flexRow[data-v-4fdfbfd2] {\n  flex-direction: row;\n}\n.flexColumn[data-v-4fdfbfd2] {\n  flex-direction: column;\n}\n.text[data-v-4fdfbfd2] {\n  flex: 1;\n  text-align: center;\n}\n.fixed[data-v-4fdfbfd2] {\n  position: fixed;\n  bottom: 50px;\n  left: 50px;\n  width: 300px;\n  height: 50px;\n  align-items: center;\n  justify-content: center\n}\n.shopImg[data-v-4fdfbfd2] {\n  width: 220px;\n  height: 220px;\n}\n.list[data-v-4fdfbfd2] {\n  flex-direction: column;\n  overflow: hidden;\n  width: 750px;\n  height: 100%;\n  background-color: #dddddd;\n}\n.cell[data-v-4fdfbfd2] {\n  background-color: #dddddd;\n  flex-direction: column;\n  width: 750px;\n}\n.test[data-v-4fdfbfd2] {\n  width:60px;\n  height:60px;\n}\n.shopDiv[data-v-4fdfbfd2] {\n  flex-direction: column;\n  background-color: #ffffff;\n  margin: 5px;\n  padding: 10px;\n  border-width: 1px;\n  border-color: #cccccc;\n  overflow: visible;\n}\n.shopRowList[data-v-4fdfbfd2] {\n  flex-direction: column;\n  border-width: 1px;\n  border-color: #cccccc;\n  overflow: visible;\n  margin: 5px;\n  padding: 10px;\n  background-color: #ffffff;\n}\n.shopHeader[data-v-4fdfbfd2] {\n  flex-direction: row;\n  width: 720px;\n}\n.shopFooter[data-v-4fdfbfd2] {\n  flex-direction: row;\n  width: 720px;\n}\n.smallImg[data-v-4fdfbfd2] {\n  width: 20px;\n  height: 20px;\n}\n.wrapper[data-v-4fdfbfd2] {\n  background-color: #f8f8f8;\n  border:1px solid #ddd;\n  position: fixed;\n  bottom: 20px;\n  right: 20px;\n  width: 88px;\n  height: 88px;\n  z-index: 10100;\n  flex-flow: row nowrap; \n  align-items: center; \n  cursor: pointer;\n}\n.backTop[data-v-4fdfbfd2] {\n  width: 88px;\n  height: 88px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 287:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	var dom = weex.requireModule('dom');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      show: true,
-	      href: 'http://weex.apache.org/cn/references/'
-	    };
-	  },
-	  methods: {
-	    clickitem: function clickitem(e) {
-	      modal.toast({
-	        message: 'click' + e
-	      });
-	    },
-	    preventDefault: function preventDefault(e) {
-	      this.href = 'javascript:void(0)';
-	      modal.toast({
-	        message: 'click'
-	      });
-	    },
-	    backTop: function backTop() {
-	      var self = this;
-	      window.scrollTo(0, 0);
-	      this.show = false;
-	    }
-	  }
-
-	};
-
-/***/ }),
-
-/***/ 288:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('div', {
-	    staticClass: "items-box",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('a', {
-	    staticClass: "items",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "weex-type": "a"
-	    },
-	    on: {
-	      "click": function($event) {
-	        _vm.clickitem('Tap1')
-	      }
-	    }
-	  }, [_c('text', {
-	    staticClass: "text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Tap1")])]), _vm._v(" "), _c('a', {
-	    staticClass: "items",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "weex-type": "a"
-	    },
-	    on: {
-	      "click": function($event) {
-	        _vm.clickitem('Tap2')
-	      }
-	    }
-	  }, [_c('text', {
-	    staticClass: "text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Tap2")])])]), _vm._v(" "), _c('div', {
-	    staticClass: "items-box",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('a', {
-	    staticClass: "items",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "weex-type": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    },
-	    on: {
-	      "click": function($event) {
-	        _vm.clickitem('Tap in the a tag')
-	      }
-	    }
-	  }, [_c('text', {
-	    staticClass: "text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Tap in the A tag")])]), _vm._v(" "), _c('a', {
-	    staticClass: "items",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "weex-type": "a",
-	      "href": _vm.href,
-	      "target": "_blank"
-	    },
-	    on: {
-	      "click": _vm.preventDefault
-	    }
-	  }, [_c('text', {
-	    staticClass: "text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Prevent A tag from href jumping")])])]), _vm._v(" "), _c('div', {
-	    staticClass: "items-box",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('a', {
-	    staticClass: "items",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "weex-type": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: "text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Url")])]), _vm._v(" "), _c('a', {
-	    staticClass: "items",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "weex-type": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: "text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Url")])])]), _vm._v(" "), _c('div', {
-	    staticClass: "items-box",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('a', {
-	    staticClass: "items",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "weex-type": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: "text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Url")])]), _vm._v(" "), _c('a', {
-	    staticClass: "items",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "weex-type": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: "text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Url")])])]), _vm._v(" "), _c('div', {
-	    staticClass: "items-box",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('a', {
-	    staticClass: "items",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "weex-type": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: "text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Url")])]), _vm._v(" "), _c('a', {
-	    staticClass: "items",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "weex-type": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: "text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Url")])])]), _vm._v(" "), (_vm.show) ? _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.backTop
-	    }
-	  }, [_c('text', {
-	    staticClass: "text",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Tap")])]) : _vm._e()])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-4fdfbfd2", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/style/index.js b/src/main/assets/vue-web/vue/style/index.js
deleted file mode 100644
index 9736b7b..0000000
--- a/src/main/assets/vue-web/vue/style/index.js
+++ /dev/null
@@ -1,2276 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(289)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 22:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(23)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(25),
-	  /* template */
-	  __webpack_require__(26),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-f15788ee",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.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] tip.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-f15788ee", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-f15788ee", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 23:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(24);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("b14ba53e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 24:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.tip[data-v-f15788ee] {\n  padding-left: 36px;\n  padding-right: 36px;\n  padding-top: 36px;\n  padding-bottom: 36px;\n  border-radius: 10px;\n}\n.tip-txt[data-v-f15788ee]{\n  font-size: 28px;\n}\n.tip-success[data-v-f15788ee] {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.tip-txt-success[data-v-f15788ee] {\n  color: #3c763d;\n}\n.tip-info[data-v-f15788ee] {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.tip-txt-info[data-v-f15788ee] {\n  color: #31708f;\n}\n.tip-warning[data-v-f15788ee] {\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.tip-txt-warning[data-v-f15788ee] {\n  color: #8a6d3b;\n}\n.tip-danger[data-v-f15788ee] {\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.tip-txt-danger[data-v-f15788ee] {\n  color: #a94442;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 25:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 26:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-f15788ee", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 289:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(290)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(292),
-	  /* template */
-	  __webpack_require__(308),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-7f917fc9",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/index.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] index.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-7f917fc9", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-7f917fc9", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 290:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(291);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("58a8b64b", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7f917fc9\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./index.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7f917fc9\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./index.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 291:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.bg-item[data-v-7f917fc9] {\n  width: 690px;\n  margin-bottom: 10px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 292:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(9),
-	    styleBox: __webpack_require__(293),
-	    styleFlex: __webpack_require__(303),
-	    styleItem: __webpack_require__(297)
-	  }
-	};
-
-/***/ }),
-
-/***/ 293:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(294)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(296),
-	  /* template */
-	  __webpack_require__(302),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-27caa8a6",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-box.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] style-box.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-27caa8a6", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-27caa8a6", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 294:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(295);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("33b9bd8b", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-27caa8a6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-box.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-27caa8a6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-box.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 295:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.box[data-v-27caa8a6] {\n  background-color: #f5f5f5;\n  width: 260px;\n  height: 260px;\n  padding-left: 40px;\n  padding-top: 40px;\n  padding-right: 40px;\n  padding-bottom: 40px;\n  margin-left: 40px;\n  margin-top: 40px;\n  margin-right: 40px;\n  margin-bottom: 40px;\n  border-width: 40px;\n  border-color: #333;\n  border-style: solid;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 296:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(9),
-	    tip: __webpack_require__(22),
-	    styleItem: __webpack_require__(297)
-	  }
-	};
-
-/***/ }),
-
-/***/ 297:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(298)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(300),
-	  /* template */
-	  __webpack_require__(301),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-d7c66270",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-item.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] style-item.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-d7c66270", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-d7c66270", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 298:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(299);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("189a7392", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d7c66270\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-item.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d7c66270\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-item.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 299:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.item[data-v-d7c66270] {\n  margin-right: 10px;\n  /*margin-bottom: 10px;*/\n  width: 160px;\n  height: 75px;\n  padding-left: 8px;\n  padding-right: 8px;\n  padding-top: 8px;\n  padding-bottom: 8px;\n}\n.txt[data-v-d7c66270] {\n  color: #eee;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 300:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    value: { default: '' },
-	    type: { default: '0' // 0, 1
-	    } },
-	  computed: {
-	    bgColor: function bgColor() {
-	      return this.type == '1' ? '#7BA3A8' : '#BEAD92';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 301:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    staticClass: "item txt",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      backgroundColor: _vm.bgColor
-	    })),
-	    attrs: {
-	      "value": _vm.value
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-d7c66270", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 302:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Box Model",
-	      "padding-body": "0",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: "box",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Box")])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "border",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "border-width",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "2px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "10px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-left-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-bottom-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "border-color",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "4px",
-	      "border-color": "#ddd"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "4px",
-	      "border-color": "red"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "border-style",
-	      "type": ""
-	    }
-	  }, [_c('tip', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-bottom": "10px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "warning",
-	      "value": "just support four edges"
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "dashed",
-	      "border-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "",
-	      "type": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "dotted",
-	      "border-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "border-radius",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "width": "75px",
-	      "border-radius": "38px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-radius": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-top-left-radius": "20px",
-	      "border-top-right-radius": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-bottom-left-radius": "20px",
-	      "border-bottom-right-radius": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-27caa8a6", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 303:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(304)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(306),
-	  /* template */
-	  __webpack_require__(307),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-943b1ea4",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-flex.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] style-flex.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-943b1ea4", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-943b1ea4", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 304:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(305);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("8c5a5432", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-943b1ea4\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-flex.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-943b1ea4\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-flex.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 305:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.row[data-v-943b1ea4] {\n  flex-direction: row;\n  margin-bottom: 10px;\n}\n.row-align[data-v-943b1ea4] {\n  height: 160px;\n  border-width: 3px;\n  border-color: #ddd;\n  border-style: solid;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 306:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(9),
-	    styleItem: __webpack_require__(297)
-	  }
-	};
-
-/***/ }),
-
-/***/ 307:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "flex-direction",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "row"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "column"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "column"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "justify-content",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "justify-content": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "justify-content": "flex-end"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "justify-content": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "justify-content": "space-between"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "align-items",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: "row row-align",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row row-align",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-end"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row row-align",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row row-align",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "stretch"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "flex",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "no flex",
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "2"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "flex:2"
-	    }
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "2"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:2"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "3"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "flex:3"
-	    }
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "flex-wrap",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "flex-wrap": "wrap",
-	      "background-color": "grey",
-	      "padding": "10"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "1:wrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "2:wrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "3:wrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "4:wrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "5:wrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "6:wrap"
-	    }
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "flex-wrap": "nowrap",
-	      "background-color": "grey",
-	      "padding": "10"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "1:nowrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "2:nowrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "3:nowrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "4:nowrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "5:nowrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "6:nowrap"
-	    }
-	  })], 1)])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-943b1ea4", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 308:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', {
-	    staticStyle: _vm.$processStyle({
-	      "overflow-x": "hidden"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-box'), _vm._v(" "), _c('style-flex'), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "opacity",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "opacity": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "opacity": "0.9"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "0.9"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "opacity": "0.5"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "0.5"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "opacity": "0.2"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "0.2"
-	    }
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "background-color",
-	      "type": "primary"
-	    }
-	  }, [_c('div', [_c('style-item', {
-	    staticClass: "bg-item",
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "#333"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticClass: "bg-item",
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "#333333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "#333333"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticClass: "bg-item",
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "rgb(238, 162, 54)"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "rgb()"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticClass: "bg-item",
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "rgba(238, 162, 54, 0.5)"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "rgba()"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticClass: "bg-item",
-	    staticStyle: _vm.$processStyle({
-	      "background-color": "red"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "red"
-	    }
-	  })], 1)])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-7f917fc9", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/style/style-box.js b/src/main/assets/vue-web/vue/style/style-box.js
deleted file mode 100644
index d4de3a8..0000000
--- a/src/main/assets/vue-web/vue/style/style-box.js
+++ /dev/null
@@ -1,1304 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(293)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 22:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(23)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(25),
-	  /* template */
-	  __webpack_require__(26),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-f15788ee",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.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] tip.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-f15788ee", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-f15788ee", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 23:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(24);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("b14ba53e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 24:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.tip[data-v-f15788ee] {\n  padding-left: 36px;\n  padding-right: 36px;\n  padding-top: 36px;\n  padding-bottom: 36px;\n  border-radius: 10px;\n}\n.tip-txt[data-v-f15788ee]{\n  font-size: 28px;\n}\n.tip-success[data-v-f15788ee] {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.tip-txt-success[data-v-f15788ee] {\n  color: #3c763d;\n}\n.tip-info[data-v-f15788ee] {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.tip-txt-info[data-v-f15788ee] {\n  color: #31708f;\n}\n.tip-warning[data-v-f15788ee] {\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.tip-txt-warning[data-v-f15788ee] {\n  color: #8a6d3b;\n}\n.tip-danger[data-v-f15788ee] {\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.tip-txt-danger[data-v-f15788ee] {\n  color: #a94442;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 25:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 26:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-f15788ee", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 293:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(294)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(296),
-	  /* template */
-	  __webpack_require__(302),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-27caa8a6",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-box.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] style-box.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-27caa8a6", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-27caa8a6", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 294:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(295);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("33b9bd8b", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-27caa8a6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-box.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-27caa8a6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-box.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 295:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.box[data-v-27caa8a6] {\n  background-color: #f5f5f5;\n  width: 260px;\n  height: 260px;\n  padding-left: 40px;\n  padding-top: 40px;\n  padding-right: 40px;\n  padding-bottom: 40px;\n  margin-left: 40px;\n  margin-top: 40px;\n  margin-right: 40px;\n  margin-bottom: 40px;\n  border-width: 40px;\n  border-color: #333;\n  border-style: solid;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 296:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(9),
-	    tip: __webpack_require__(22),
-	    styleItem: __webpack_require__(297)
-	  }
-	};
-
-/***/ }),
-
-/***/ 297:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(298)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(300),
-	  /* template */
-	  __webpack_require__(301),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-d7c66270",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-item.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] style-item.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-d7c66270", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-d7c66270", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 298:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(299);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("189a7392", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d7c66270\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-item.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d7c66270\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-item.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 299:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.item[data-v-d7c66270] {\n  margin-right: 10px;\n  /*margin-bottom: 10px;*/\n  width: 160px;\n  height: 75px;\n  padding-left: 8px;\n  padding-right: 8px;\n  padding-top: 8px;\n  padding-bottom: 8px;\n}\n.txt[data-v-d7c66270] {\n  color: #eee;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 300:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    value: { default: '' },
-	    type: { default: '0' // 0, 1
-	    } },
-	  computed: {
-	    bgColor: function bgColor() {
-	      return this.type == '1' ? '#7BA3A8' : '#BEAD92';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 301:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    staticClass: "item txt",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      backgroundColor: _vm.bgColor
-	    })),
-	    attrs: {
-	      "value": _vm.value
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-d7c66270", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 302:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Box Model",
-	      "padding-body": "0",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: "box",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Box")])]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "border",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "border-width",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "2px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "10px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-left-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-bottom-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "border-color",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "4px",
-	      "border-color": "#ddd"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "4px",
-	      "border-color": "red"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "border-style",
-	      "type": ""
-	    }
-	  }, [_c('tip', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-bottom": "10px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "warning",
-	      "value": "just support four edges"
-	    }
-	  }), _vm._v(" "), _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "solid",
-	      "border-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "dashed",
-	      "border-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "",
-	      "type": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-style": "dotted",
-	      "border-width": "4px",
-	      "border-color": "#333"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "border-radius",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "width": "75px",
-	      "border-radius": "38px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-radius": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-top-left-radius": "20px",
-	      "border-top-right-radius": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "border-bottom-left-radius": "20px",
-	      "border-bottom-right-radius": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-27caa8a6", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/style/style-flex.js b/src/main/assets/vue-web/vue/style/style-flex.js
deleted file mode 100644
index bc9786e..0000000
--- a/src/main/assets/vue-web/vue/style/style-flex.js
+++ /dev/null
@@ -1,1499 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(303)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 297:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(298)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(300),
-	  /* template */
-	  __webpack_require__(301),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-d7c66270",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-item.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] style-item.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-d7c66270", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-d7c66270", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 298:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(299);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("189a7392", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d7c66270\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-item.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d7c66270\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-item.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 299:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.item[data-v-d7c66270] {\n  margin-right: 10px;\n  /*margin-bottom: 10px;*/\n  width: 160px;\n  height: 75px;\n  padding-left: 8px;\n  padding-right: 8px;\n  padding-top: 8px;\n  padding-bottom: 8px;\n}\n.txt[data-v-d7c66270] {\n  color: #eee;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 300:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    value: { default: '' },
-	    type: { default: '0' // 0, 1
-	    } },
-	  computed: {
-	    bgColor: function bgColor() {
-	      return this.type == '1' ? '#7BA3A8' : '#BEAD92';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 301:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    staticClass: "item txt",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      backgroundColor: _vm.bgColor
-	    })),
-	    attrs: {
-	      "value": _vm.value
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-d7c66270", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 303:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(304)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(306),
-	  /* template */
-	  __webpack_require__(307),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-943b1ea4",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-flex.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] style-flex.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-943b1ea4", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-943b1ea4", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 304:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(305);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("8c5a5432", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-943b1ea4\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-flex.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-943b1ea4\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-flex.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 305:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.row[data-v-943b1ea4] {\n  flex-direction: row;\n  margin-bottom: 10px;\n}\n.row-align[data-v-943b1ea4] {\n  height: 160px;\n  border-width: 3px;\n  border-color: #ddd;\n  border-style: solid;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 306:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(9),
-	    styleItem: __webpack_require__(297)
-	  }
-	};
-
-/***/ }),
-
-/***/ 307:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "flex-direction",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "row"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "row"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "flex-direction": "column"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "column"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "justify-content",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "justify-content": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "justify-content": "flex-end"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "justify-content": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "justify-content": "space-between"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "align-items",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: "row row-align",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row row-align",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-end"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row row-align",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row row-align",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "stretch"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "flex",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "no flex",
-	      "type": "1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "2"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "flex:2"
-	    }
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "flex-start"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "1"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "2"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:2"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-right": "0",
-	      "flex": "3"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "flex:3"
-	    }
-	  })], 1)]), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "flex-wrap",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "flex-wrap": "wrap",
-	      "background-color": "grey",
-	      "padding": "10"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "1:wrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "2:wrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "3:wrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "4:wrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "5:wrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "6:wrap"
-	    }
-	  })], 1), _vm._v(" "), _c('div', {
-	    staticClass: "row",
-	    staticStyle: _vm.$processStyle({
-	      "flex-wrap": "nowrap",
-	      "background-color": "grey",
-	      "padding": "10"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "1:nowrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "2:nowrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "3:nowrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "4:nowrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "5:nowrap"
-	    }
-	  }), _vm._v(" "), _c('style-item', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "value": "6:nowrap"
-	    }
-	  })], 1)])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-943b1ea4", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/style/style-item.js b/src/main/assets/vue-web/vue/style/style-item.js
deleted file mode 100644
index eb1e39d..0000000
--- a/src/main/assets/vue-web/vue/style/style-item.js
+++ /dev/null
@@ -1,607 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(297)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 297:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(298)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(300),
-	  /* template */
-	  __webpack_require__(301),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-d7c66270",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-item.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] style-item.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-d7c66270", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-d7c66270", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 298:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(299);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("189a7392", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d7c66270\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-item.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-d7c66270\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./style-item.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 299:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.item[data-v-d7c66270] {\n  margin-right: 10px;\n  /*margin-bottom: 10px;*/\n  width: 160px;\n  height: 75px;\n  padding-left: 8px;\n  padding-right: 8px;\n  padding-top: 8px;\n  padding-bottom: 8px;\n}\n.txt[data-v-d7c66270] {\n  color: #eee;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 300:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    value: { default: '' },
-	    type: { default: '0' // 0, 1
-	    } },
-	  computed: {
-	    bgColor: function bgColor() {
-	      return this.type == '1' ? '#7BA3A8' : '#BEAD92';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 301:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    staticClass: "item txt",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      backgroundColor: _vm.bgColor
-	    })),
-	    attrs: {
-	      "value": _vm.value
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-d7c66270", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/hello-world-1.js b/src/main/assets/vue-web/vue/syntax/hello-world-1.js
deleted file mode 100644
index 05e2c43..0000000
--- a/src/main/assets/vue-web/vue/syntax/hello-world-1.js
+++ /dev/null
@@ -1,212 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(314)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 314:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  null,
-	  /* template */
-	  __webpack_require__(315),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world-1.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] hello-world-1.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-006d4dec", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-006d4dec", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 315:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', [_vm._v("Hello World")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-006d4dec", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/hello-world-2.js b/src/main/assets/vue-web/vue/syntax/hello-world-2.js
deleted file mode 100644
index 2c345b9..0000000
--- a/src/main/assets/vue-web/vue/syntax/hello-world-2.js
+++ /dev/null
@@ -1,232 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(316)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 316:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  null,
-	  /* template */
-	  __webpack_require__(317),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world-2.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] hello-world-2.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-00511eea", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-00511eea", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 317:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: _vm.$processStyle({
-	      "align-items": "center",
-	      "margin-top": "120px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('image', {
-	    staticStyle: _vm.$processStyle({
-	      "width": "360px",
-	      "height": "82px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "https://alibaba.github.io/weex/img/weex_logo_blue@3x.png"
-	    }
-	  }), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-size": "48px"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello World")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-00511eea", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/hello-world-3.js b/src/main/assets/vue-web/vue/syntax/hello-world-3.js
deleted file mode 100644
index 2fb50a5..0000000
--- a/src/main/assets/vue-web/vue/syntax/hello-world-3.js
+++ /dev/null
@@ -1,586 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(318)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 318:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(319)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  null,
-	  /* template */
-	  __webpack_require__(321),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-0034efe8",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world-3.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] hello-world-3.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-0034efe8", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-0034efe8", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 319:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(320);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("ed29fc52", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0034efe8\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./hello-world-3.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0034efe8\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./hello-world-3.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 320:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.wrapper[data-v-0034efe8] {align-items: center; margin-top: 120px;\n}\n.title[data-v-0034efe8] {font-size: 48px;\n}\n.logo[data-v-0034efe8] {width: 360px; height: 82px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 321:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('image', {
-	    staticClass: "logo",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": "https://alibaba.github.io/weex/img/weex_logo_blue@3x.png"
-	    }
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello World")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-0034efe8", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/hello-world-4.js b/src/main/assets/vue-web/vue/syntax/hello-world-4.js
deleted file mode 100644
index e919216..0000000
--- a/src/main/assets/vue-web/vue/syntax/hello-world-4.js
+++ /dev/null
@@ -1,625 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(322)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 322:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(323)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(325),
-	  /* template */
-	  __webpack_require__(326),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-0018c0e6",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world-4.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] hello-world-4.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-0018c0e6", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-0018c0e6", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 323:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(324);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("f74871b4", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0018c0e6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./hello-world-4.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0018c0e6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./hello-world-4.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 324:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.wrapper[data-v-0018c0e6] {align-items: center; margin-top: 120px;\n}\n.title[data-v-0018c0e6] {font-size: 48px;\n}\n.logo[data-v-0018c0e6] {width: 360px; height: 82px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 325:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {
-	    logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-	    target: 'World'
-	  }
-	};
-
-/***/ }),
-
-/***/ 326:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('image', {
-	    staticClass: "logo",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.logoUrl
-	    }
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-0018c0e6", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/hello-world-5.js b/src/main/assets/vue-web/vue/syntax/hello-world-5.js
deleted file mode 100644
index 6693d89..0000000
--- a/src/main/assets/vue-web/vue/syntax/hello-world-5.js
+++ /dev/null
@@ -1,631 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(327)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 327:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(328)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(330),
-	  /* template */
-	  __webpack_require__(331),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-0001b70e",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world-5.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] hello-world-5.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-0001b70e", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-0001b70e", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 328:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(329);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("08161a7f", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0001b70e\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./hello-world-5.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-0001b70e\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./hello-world-5.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 329:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.wrapper[data-v-0001b70e] {align-items: center; margin-top: 120px;\n}\n.title[data-v-0001b70e] {font-size: 48px;\n}\n.logo[data-v-0001b70e] {width: 360px; height: 82px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 330:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {
-	    logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-	    target: 'World'
-	  },
-	  methods: {
-	    update: function update(e) {
-	      this.target = 'Weex';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 331:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_c('image', {
-	    staticClass: "logo",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.logoUrl
-	    }
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-0001b70e", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/hello-world.js b/src/main/assets/vue-web/vue/syntax/hello-world.js
deleted file mode 100644
index 5006934..0000000
--- a/src/main/assets/vue-web/vue/syntax/hello-world.js
+++ /dev/null
@@ -1,641 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(309)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 309:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(310)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(312),
-	  /* template */
-	  __webpack_require__(313),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-74af20e6",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world.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] hello-world.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-74af20e6", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-74af20e6", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 310:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(311);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("25a414c1", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-74af20e6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./hello-world.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-74af20e6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./hello-world.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 311:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.wrapper[data-v-74af20e6] {align-items: center; margin-top: 120px;\n}\n.title[data-v-74af20e6] {font-size: 48px;\n}\n.logo[data-v-74af20e6] {width: 360px; height: 82px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 312:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {
-	    logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-	    target: 'World'
-	  },
-	  methods: {
-	    update: function update(e) {
-	      this.target = 'Weex';
-	      console.log('target:', this.target);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 313:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "wrapper",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_c('image', {
-	    staticClass: "logo",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.logoUrl
-	    }
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-74af20e6", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/script-component.js b/src/main/assets/vue-web/vue/syntax/script-component.js
deleted file mode 100644
index 5fe0bff..0000000
--- a/src/main/assets/vue-web/vue/syntax/script-component.js
+++ /dev/null
@@ -1,701 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(332)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 332:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(333),
-	  /* template */
-	  __webpack_require__(339),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-component.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] script-component.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-8afd0208", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-8afd0208", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 333:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      items: [{ title: 'A', url: 'a' }, { title: 'B', url: 'b' }, { title: 'C', url: 'c' }]
-	    };
-	  },
-	  components: {
-	    item: __webpack_require__(334)
-	  }
-	};
-
-/***/ }),
-
-/***/ 334:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(335)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(337),
-	  /* template */
-	  __webpack_require__(338),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-34e98968",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/include/sub.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] sub.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-34e98968", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-34e98968", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 335:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(336);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("d2a82d20", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-34e98968\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./sub.vue", function() {
-	     var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-34e98968\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./sub.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 336:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.item-txt[data-v-34e98968] {\n  font-size: 48px;\n  color: #555;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 337:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: ['url', 'title']
-	};
-
-/***/ }),
-
-/***/ 338:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    staticClass: "item-txt",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.title))])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-34e98968", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 339:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list', _vm._l((_vm.items), function(item, i) {
-	    return _c('cell', {
-	      key: i,
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_c('text', [_vm._v(_vm._s(item.title))]), _vm._v(" "), _c('item', {
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "title": 'a'
-	      }
-	    })], 1)
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-8afd0208", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/script-data.js b/src/main/assets/vue-web/vue/syntax/script-data.js
deleted file mode 100644
index 80d7a77..0000000
--- a/src/main/assets/vue-web/vue/syntax/script-data.js
+++ /dev/null
@@ -1,684 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(340)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 340:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(341)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(343),
-	  /* template */
-	  __webpack_require__(344),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-cb421a0a",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-data.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] script-data.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-cb421a0a", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-cb421a0a", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 341:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(342);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("e46beb82", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-cb421a0a\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-data.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-cb421a0a\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-data.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 342:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-cb421a0a] {font-size: 48px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 343:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	// // if this is a sub component and the parent component could set `firstName` and `lastName` by:
-	// // `<subcomponent first-name="John" last-name="Smith"></subcomponent>`
-	// // but the `date` won't be changed from parent component
-	// module.exports = {
-	//   props: ['firstName', 'lastName'],
-	//   data: function () {
-	//     return {
-	//       date: Date.now()
-	//     }
-	//   }
-	// }
-
-	// // more `props` formats like
-	// module.exports = {
-	//   props: {
-	//     firstName: {
-	//       default: 'John'
-	//     },
-	//     lastName: {
-	//       type: String,
-	//       default: 'Smith'
-	//     }
-	//   },
-	//   data: function () {
-	//     return {
-	//       date: Date.now()
-	//     }
-	//   }
-	// }
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      firstName: 'John',
-	      lastName: 'Smith',
-	      date: Date.now()
-	    };
-	  },
-	  methods: {
-	    update: function update() {
-	      this.today = '2016-01-01';
-	      console.log('today:', this.today);
-	    }
-	  },
-	  computed: {
-	    fullName: function fullName() {
-	      return this.firstName + ' ' + this.lastName;
-	    },
-	    today: {
-	      get: function get() {
-	        return new Date(this.date).toDateString();
-	      },
-	      set: function set(v) {
-	        this.date = Date.parse(v);
-	      }
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 344:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.firstName))]), _vm._v(" "), _c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.lastName))]), _vm._v(" "), _c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.fullName))]), _vm._v(" "), _c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.today))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-cb421a0a", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/script-events.js b/src/main/assets/vue-web/vue/syntax/script-events.js
deleted file mode 100644
index 7f229b0..0000000
--- a/src/main/assets/vue-web/vue/syntax/script-events.js
+++ /dev/null
@@ -1,624 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(345)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 345:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(346)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(348),
-	  /* template */
-	  __webpack_require__(349),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-a605eaac",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-events.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] script-events.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-a605eaac", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-a605eaac", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 346:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(347);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("15958654", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-a605eaac\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-events.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-a605eaac\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-events.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 347:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-a605eaac] {font-size: 48px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 348:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      list: []
-	    };
-	  },
-	  mounted: function mounted() {
-	    function custom(e) {
-	      this.list.push('custom: ' + JSON.stringify(e));
-	      console.log(this.list);
-	    }
-
-	    this.$emit('custom', { x: 1 });
-
-	    this.$on('custom', custom);
-	    this.$emit('custom', { x: 2 });
-
-	    this.$off('custom', custom);
-	    this.$emit('custom', { x: 3 });
-	  }
-	};
-
-/***/ }),
-
-/***/ 349:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', _vm._l((_vm.list), function(value, i) {
-	    return _c('text', {
-	      key: i,
-	      staticClass: "title",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(value))])
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-a605eaac", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/script-instance.js b/src/main/assets/vue-web/vue/syntax/script-instance.js
deleted file mode 100644
index 31ffc31..0000000
--- a/src/main/assets/vue-web/vue/syntax/script-instance.js
+++ /dev/null
@@ -1,656 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(350)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 350:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(351)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(353),
-	  /* template */
-	  __webpack_require__(354),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-4a50a5e6",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-instance.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] script-instance.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-4a50a5e6", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-4a50a5e6", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 351:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(352);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("722de576", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-4a50a5e6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-instance.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-4a50a5e6\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-instance.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 352:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-4a50a5e6] {font-size: 48px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 353:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      x: 1,
-	      y: 2
-	    };
-	  },
-	  methods: {
-	    foo: function foo() {
-	      console.log('foo');
-	    },
-	    test: function test() {
-
-	      // access data/props
-	      console.log(this.x);
-
-	      // access computed
-	      console.log(this.z);
-
-	      // call methods
-	      this.foo();
-
-	      // get config
-	      console.log(this.$getConfig());
-
-	      // listen and fire component events
-	      this.$emit('custom');
-	      this.$on('custom', this.foo);
-	      this.$off('custom', this.foo);
-
-	      // // parent component and sub components
-	      // this.$parent.$emit('custom')
-	      // this.$refs['sub'].$emit('custom')
-
-	      // // find element
-	      // var dom = weex.requireModule('dom')
-	      // dom.scrollToElement(this.$el('title'), {offset: 0})
-	    }
-	  },
-	  computed: {
-	    z: function z() {
-	      return this.x + this.y;
-	    }
-	  },
-	  mounted: function mounted() {
-	    this.test();
-	  }
-	};
-
-/***/ }),
-
-/***/ 354:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "id": "title"
-	    }
-	  }, [_vm._v("Please check out the source code.")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-4a50a5e6", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/script-lifecycle.js b/src/main/assets/vue-web/vue/syntax/script-lifecycle.js
deleted file mode 100644
index ea4b4f7..0000000
--- a/src/main/assets/vue-web/vue/syntax/script-lifecycle.js
+++ /dev/null
@@ -1,618 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(355)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 355:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(356)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(358),
-	  /* template */
-	  __webpack_require__(359),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-72f84ae9",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-lifecycle.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] script-lifecycle.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-72f84ae9", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-72f84ae9", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 356:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(357);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("6e374891", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-72f84ae9\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-lifecycle.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-72f84ae9\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-lifecycle.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 357:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-72f84ae9] {font-size: 48px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 358:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var initMessage;
-	module.exports = {
-	  data: function data() {
-	    return {
-	      list: ['Lifecycle List']
-	    };
-	  },
-	  init: function init() {
-	    initMessage = 'component init: nothing more happen even the data initialization';
-	    console.log('init:', this.list);
-	  },
-	  created: function created() {
-	    this.list.push(initMessage);
-	    this.list.push('component created: data observed');
-	    console.log('created:', this.list);
-	  },
-	  mounted: function mounted() {
-	    this.list.push('component mounted: virtual dom generated');
-	    console.log('mounted:', this.list);
-	  }
-	};
-
-/***/ }),
-
-/***/ 359:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', _vm._l((_vm.list), function(value, i) {
-	    return _c('text', {
-	      key: i,
-	      staticClass: "title",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(value))])
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-72f84ae9", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/script-module.js b/src/main/assets/vue-web/vue/syntax/script-module.js
deleted file mode 100644
index 06ab8a3..0000000
--- a/src/main/assets/vue-web/vue/syntax/script-module.js
+++ /dev/null
@@ -1,613 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(360)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 360:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(361)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(363),
-	  /* template */
-	  __webpack_require__(364),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-3d67ee7d",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-module.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] script-module.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-3d67ee7d", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-3d67ee7d", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 361:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(362);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("77bf933c", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3d67ee7d\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-module.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3d67ee7d\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-module.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 362:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.btn[data-v-3d67ee7d] {font-size: 36px; text-align: center; color: white; background-color: gray; padding: 20px; border-radius: 5px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 363:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  methods: {
-	    test: function test() {
-	      modal.toast({
-	        message: 'Toast!',
-	        duration: 3
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 364:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.test
-	    }
-	  }, [_vm._v("Toast!")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-3d67ee7d", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/script-options.js b/src/main/assets/vue-web/vue/syntax/script-options.js
deleted file mode 100644
index 729d615..0000000
--- a/src/main/assets/vue-web/vue/syntax/script-options.js
+++ /dev/null
@@ -1,642 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(365)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 365:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(366)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(368),
-	  /* template */
-	  __webpack_require__(369),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-b5c90446",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-options.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] script-options.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-b5c90446", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-b5c90446", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 366:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(367);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("a9206cc4", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-b5c90446\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-options.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-b5c90446\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./script-options.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 367:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-b5c90446] {font-size: 48px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 368:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  // // import sub components
-	  // components: {
-	  //   item: require('./components/sub.vue')
-	  // },
-
-	  // // for sub component only
-	  // props: ['a', 'b'],
-
-	  // for root component only
-	  data: {
-	    x: 1,
-	    y: 2
-	  },
-	  // // for sub component only
-	  // data: function () {
-	  //   return {
-	  //     x: 1,
-	  //     y: 2
-	  //   }
-	  // }
-
-	  methods: {
-	    foo: function foo() {
-	      console.log('foo');
-	    }
-	  },
-
-	  computed: {
-	    z: function z() {
-	      return this.x + this.y;
-	    }
-	  },
-
-	  init: function init() {},
-	  created: function created() {},
-	  mounted: function mounted() {}
-	};
-
-/***/ }),
-
-/***/ 369:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Please check out the source code.")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-b5c90446", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/template-class.js b/src/main/assets/vue-web/vue/syntax/template-class.js
deleted file mode 100644
index e41981a..0000000
--- a/src/main/assets/vue-web/vue/syntax/template-class.js
+++ /dev/null
@@ -1,626 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(370)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 370:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(371)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(373),
-	  /* template */
-	  __webpack_require__(374),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-7bc50fb4",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-class.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] template-class.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-7bc50fb4", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-7bc50fb4", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 371:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(372);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("6f6d66ab", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7bc50fb4\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./template-class.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-7bc50fb4\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./template-class.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 372:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.a[data-v-7bc50fb4] {font-size: 48px;\n}\n.b[data-v-7bc50fb4] {color: #ff0000;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 373:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {
-	    x: ''
-	  },
-	  methods: {
-	    update: function update(e) {
-	      this.x = 'b';
-	      console.log('x', this.x);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 374:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_c('text', {
-	    staticClass: "a",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello")]), _vm._v(" "), _c('text', {
-	    staticClass: "b",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello")]), _vm._v(" "), _c('text', {
-	    class: ['a', _vm.x],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-7bc50fb4", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/template-content.js b/src/main/assets/vue-web/vue/syntax/template-content.js
deleted file mode 100644
index e0c71a2..0000000
--- a/src/main/assets/vue-web/vue/syntax/template-content.js
+++ /dev/null
@@ -1,659 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(375)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 375:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(376),
-	  /* template */
-	  __webpack_require__(381),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-content.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] template-content.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-0539ed27", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-0539ed27", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 376:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    btn: __webpack_require__(377)
-	  }
-	};
-
-/***/ }),
-
-/***/ 377:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(378)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  null,
-	  /* template */
-	  __webpack_require__(380),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-9ed848f8",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/include/btn.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] btn.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-9ed848f8", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-9ed848f8", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 378:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(379);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("a220c01c", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-9ed848f8\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./btn.vue", function() {
-	     var newContent = require("!!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-9ed848f8\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./btn.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 379:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.btn[data-v-9ed848f8] {font-size: 36px; text-align: center; color: white; background-color: gray; padding: 20px; border-radius: 5px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 380:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._t("default")], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-9ed848f8", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 381:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('btn', [_c('text', [_vm._v("Click!")])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-0539ed27", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/template-event.js b/src/main/assets/vue-web/vue/syntax/template-event.js
deleted file mode 100644
index ca29565..0000000
--- a/src/main/assets/vue-web/vue/syntax/template-event.js
+++ /dev/null
@@ -1,656 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(382)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 382:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(383)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(385),
-	  /* template */
-	  __webpack_require__(386),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-76de3f70",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-event.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] template-event.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-76de3f70", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-76de3f70", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 383:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(384);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("2b44f560", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-76de3f70\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./template-event.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-76de3f70\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./template-event.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 384:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-76de3f70] {font-size: 48px;\n}\n.subtitle[data-v-76de3f70] {font-size: 36px;\n}\n.btn[data-v-76de3f70] {font-size: 36px; text-align: center; color: white; background-color: gray; padding: 20px; border-radius: 5px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 385:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      name: 'Steve',
-	      temp: 'Mike'
-	    };
-	  },
-	  methods: {
-	    update: function update(e) {
-	      this.setName('David');
-	      console.log('setName', this.name);
-	    },
-	    setName: function setName(value) {
-	      this.name = value;
-	      console.log('name', this.name);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 386:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello " + _vm._s(_vm.name))]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_vm._v("Update 1")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": function($event) {
-	        _vm.update($event)
-	      }
-	    }
-	  }, [_vm._v("Update 1")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": function($event) {
-	        _vm.setName(_vm.temp, $event)
-	      }
-	    }
-	  }, [_vm._v("Update 2")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": function($event) {
-	        _vm.setName('John')
-	      }
-	    }
-	  }, [_vm._v("Update 3")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-76de3f70", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/template-if.js b/src/main/assets/vue-web/vue/syntax/template-if.js
deleted file mode 100644
index 28dbc67..0000000
--- a/src/main/assets/vue-web/vue/syntax/template-if.js
+++ /dev/null
@@ -1,623 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(387)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 387:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(388)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(390),
-	  /* template */
-	  __webpack_require__(391),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-f4558e42",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-if.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] template-if.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-f4558e42", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-f4558e42", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 388:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(389);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("c69f1080", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f4558e42\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./template-if.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f4558e42\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./template-if.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 389:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-f4558e42] {font-size: 48px;\n}\n.btn[data-v-f4558e42] {font-size: 36px; text-align: center; color: white; background-color: gray; padding: 20px; border-radius: 5px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 390:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {
-	    flag: true
-	  },
-	  methods: {
-	    toggle: function toggle(e) {
-	      this.flag = !this.flag;
-	      console.log('this.flag:', this.flag);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 391:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.toggle
-	    }
-	  }, [_vm._v("Toggle")]), _vm._v(" "), (_vm.flag) ? _c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("I'm ON")]) : _vm._e(), _vm._v(" "), (!_vm.flag) ? _c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("I'm Off")]) : _vm._e()])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-f4558e42", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/template-repeat-update.js b/src/main/assets/vue-web/vue/syntax/template-repeat-update.js
deleted file mode 100644
index 8df93b0..0000000
--- a/src/main/assets/vue-web/vue/syntax/template-repeat-update.js
+++ /dev/null
@@ -1,652 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(397)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 397:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(398)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(400),
-	  /* template */
-	  __webpack_require__(401),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-e4407f2e",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-repeat-update.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] template-repeat-update.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-e4407f2e", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-e4407f2e", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 398:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(399);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("38265070", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-e4407f2e\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./template-repeat-update.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-e4407f2e\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./template-repeat-update.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 399:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-e4407f2e] {font-size: 48px;\n}\n.subtitle[data-v-e4407f2e] {font-size: 36px;\n}\n.btn[data-v-e4407f2e] {font-size: 36px; text-align: center; color: white; background-color: gray; padding: 20px; border-radius: 5px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 400:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      list: [{ key: 1, text: 'a' }, { key: 2, text: 'a' }, { key: 3, text: 'b' }, { key: 4, text: 'c' }, { key: 5, text: 'a' }],
-	      flag: true
-	    };
-	  },
-	  methods: {
-	    update: function update(e) {
-	      // equals to `this.list.text = 'foo'`
-	      // DO NOT USE: `this.list[2] = {key: 3, text: 'foo'}}`
-	      Vue.set(this.list, 2, { key: 3, text: 'foo' });
-	      console.log('this.list', this.list);
-	    },
-	    mutate: function mutate(e) {
-	      if (this.list.length % 2) {
-	        this.list.push({ key: 'x', text: 'bar' });
-	      } else {
-	        this.list.pop();
-	      }
-	      console.log('this.list', this.list);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 401:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Track by")]), _vm._v(" "), _vm._l((_vm.list), function(item, k, $index) {
-	    return _c('text', {
-	      staticClass: "subtitle",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      attrs: {
-	        "track-by": "item.key"
-	      }
-	    }, [_vm._v(_vm._s($index) + "-" + _vm._s(item.text))])
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_vm._v("Update")]), _vm._v(" "), _c('text', {
-	    staticClass: "btn",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.mutate
-	    }
-	  }, [_vm._v("Mutate")])], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-e4407f2e", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/template-repeat.js b/src/main/assets/vue-web/vue/syntax/template-repeat.js
deleted file mode 100644
index 1b1bd2a..0000000
--- a/src/main/assets/vue-web/vue/syntax/template-repeat.js
+++ /dev/null
@@ -1,642 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(392)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 392:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(393)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(395),
-	  /* template */
-	  __webpack_require__(396),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-4ac5f546",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-repeat.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] template-repeat.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-4ac5f546", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-4ac5f546", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 393:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(394);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("57fe83ea", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-4ac5f546\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./template-repeat.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-4ac5f546\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./template-repeat.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 394:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.title[data-v-4ac5f546] {font-size: 48px;\n}\n.subtitle[data-v-4ac5f546] {font-size: 36px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 395:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      list: ['a', 'b', 'c', 'd', 'e'],
-	      list2: [{ text: 'a' }, { text: 'b' }, { text: 'c' }, { text: 'd' }, { text: 'e' }]
-	    };
-	  }
-	};
-
-/***/ }),
-
-/***/ 396:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Custom item")]), _vm._v(" "), _vm._l((_vm.list), function(item) {
-	    return _c('text', {
-	      key: item.index,
-	      staticClass: "subtitle",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item))])
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Custom key and item")]), _vm._v(" "), _vm._l((_vm.list), function(v, i) {
-	    return _c('text', {
-	      key: i,
-	      staticClass: "subtitle",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(i) + "-" + _vm._s(v))])
-	  }), _vm._v(" "), _c('text', {
-	    staticClass: "title",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Array of Object")]), _vm._v(" "), _vm._l((_vm.list2), function(item, k, index) {
-	    return _c('text', {
-	      key: index,
-	      staticClass: "subtitle",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v("> " + _vm._s(index) + "-" + _vm._s(item.text))])
-	  })], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-4ac5f546", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/syntax/template-style.js b/src/main/assets/vue-web/vue/syntax/template-style.js
deleted file mode 100644
index df2ea9c..0000000
--- a/src/main/assets/vue-web/vue/syntax/template-style.js
+++ /dev/null
@@ -1,264 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(402)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 402:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(403),
-	  /* template */
-	  __webpack_require__(404),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-style.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] template-style.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-2e4c27df", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-2e4c27df", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 403:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      size: 32,
-	      color: '#ff0000'
-	    };
-	  },
-	  methods: {
-	    update: function update(e) {
-	      this.size = 48;
-	      console.log('this.size', this.size);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 404:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_c('text', {
-	    staticStyle: _vm.$processStyle({
-	      "font-size": "48px",
-	      "color": "#0000ff"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v("Hello")]), _vm._v(" "), _c('text', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      fontSize: _vm.size,
-	      color: _vm.color
-	    }))
-	  }, [_vm._v("Hello")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-2e4c27df", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/template.js b/src/main/assets/vue-web/vue/template.js
deleted file mode 100644
index c634f31..0000000
--- a/src/main/assets/vue-web/vue/template.js
+++ /dev/null
@@ -1,1232 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(405)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(10)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(12),
-	  /* template */
-	  __webpack_require__(13),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-66798af2",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.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] panel.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-66798af2", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-66798af2", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(11);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("392aaf4e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-66798af2\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-66798af2] {\n  margin-bottom: 20px;\n  background-color: #fff;\n  /*border: 1px solid transparent;*/\n  /*border-radius: 10px;*/\n  /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/\n  border-color: #dddddd;\n  border-width: 1px;\n}\n.panel-default[data-v-66798af2] {\n}\n.panel-primary[data-v-66798af2] {\n  border-color: rgb(40, 96, 144);\n}\n.panel-success[data-v-66798af2] {\n  border-color: rgb(76, 174, 76);\n}\n.panel-info[data-v-66798af2] {\n  border-color: rgb(70, 184, 218);\n}\n.panel-warning[data-v-66798af2] {\n  border-color: rgb(238, 162, 54);\n}\n.panel-danger[data-v-66798af2] {\n  border-color: rgb(212, 63, 58);\n}\n.panel-header[data-v-66798af2] {\n  background-color: #f5f5f5;\n  font-size: 40px;\n  /*padding-left: 12px;*/\n  /*padding-right: 12px;*/\n  /*padding-top: 20px;*/\n  /*padding-bottom: 20px;*/\n  color: #333;\n}\n.panel-header-default[data-v-66798af2] {\n}\n.panel-header-primary[data-v-66798af2] {\n  background-color: rgb(40, 96, 144);\n  color: #ffffff;\n}\n.panel-header-success[data-v-66798af2] {\n  background-color: rgb(92, 184, 92);\n  color: #ffffff;\n}\n.panel-header-info[data-v-66798af2] {\n  background-color: rgb(91, 192, 222);\n  color: #ffffff;\n}\n.panel-header-warning[data-v-66798af2] {\n  background-color: rgb(240, 173, 78);\n  color: #ffffff;\n}\n.panel-header-danger[data-v-66798af2] {\n  background-color: rgb(217, 83, 79);\n  color: #ffffff;\n}\n.panel-body[data-v-66798af2] {\n  padding-left: 12px;\n  padding-right: 12px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.panel-body-default[data-v-66798af2] {\n}\n.panel-body-primary[data-v-66798af2] {\n}\n.panel-body-success[data-v-66798af2] {\n}\n.panel-body-info[data-v-66798af2] {\n}\n.panel-body-warning[data-v-66798af2] {\n}\n.panel-body-danger[data-v-66798af2] {\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      borderWidth: _vm.border
-	    }))
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }))
-	  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle({
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }))
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-66798af2", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 14:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(15)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(17),
-	  /* template */
-	  __webpack_require__(18),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-33548b34",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.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] button.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-33548b34", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-33548b34", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 15:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(16);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("3204e9c3", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-33548b34\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./button.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 16:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.btn[data-v-33548b34] {\n  margin-bottom: 0;\n  align-items: center;\n  justify-content: center;\n  border-width: 1px;\n  border-style: solid;\n  border-color: #333;\n\n  /*white-space: nowrap;*/\n  /*vertical-align: middle;*/\n  /*touch-action: manipulation;*/\n  /*cursor: pointer;*/\n  /*-webkit-user-select: none;*/\n  /*background-image: none;*/\n  /*border-image-source: initial;*/\n  /*border-image-slice: initial;*/\n  /*border-image-width: initial;*/\n  /*border-image-outset: initial;*/\n  /*border-image-repeat: initial;*/\n}\n.btn-txt[data-v-33548b34] {\n}\n\n/**TYPE**/\n.btn-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-primary[data-v-33548b34] {\n  background-color: rgb(40, 96, 144);\n  border-color: rgb(40, 96, 144);\n}\n.btn-success[data-v-33548b34] {\n  background-color: rgb(92, 184, 92);\n  border-color: rgb(76, 174, 76);\n}\n.btn-info[data-v-33548b34] {\n  background-color: rgb(91, 192, 222);\n  border-color: rgb(70, 184, 218);\n}\n.btn-warning[data-v-33548b34] {\n  background-color: rgb(240, 173, 78);\n  border-color: rgb(238, 162, 54);\n}\n.btn-danger[data-v-33548b34] {\n  background-color: rgb(217, 83, 79);\n  border-color: rgb(212, 63, 58);\n}\n.btn-link[data-v-33548b34] {\n  border-color: transparent;\n  border-radius: 0;\n}\n.btn-txt-default[data-v-33548b34] {\n  color: rgb(51, 51, 51);\n}\n.btn-txt-primary[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-success[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-info[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-warning[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-danger[data-v-33548b34] {\n  color: rgb(255, 255, 255);\n}\n.btn-txt-link[data-v-33548b34] {\n  color: rgb(51, 122, 183);\n  /*font-weight: 400;*/\n}\n\n/**SIZE**/\n.btn-sz-large[data-v-33548b34] {\n  width: 300px;\n  height: 100px;\n  padding-top: 25px;\n  padding-bottom: 25px;\n  padding-left: 40px;\n  padding-right: 40px;\n  /*line-height: 1.33333;*/\n  border-radius: 15px;\n}\n.btn-sz-middle[data-v-33548b34] {\n  width: 240px;\n  height: 80px;\n  padding-top: 15px;\n  padding-bottom: 15px;\n  padding-left: 30px;\n  padding-right: 30px;\n  /*line-height: 1.42857;*/\n  border-radius: 10px;\n}\n.btn-sz-small[data-v-33548b34] {\n  width: 170px;\n  height: 60px;\n  padding-top: 12px;\n  padding-bottom: 12px;\n  padding-left: 25px;\n  padding-right: 25px;\n  /*line-height: 1.5;*/\n  border-radius: 7px;\n}\n.btn-txt-sz-large[data-v-33548b34] {\n  font-size: 45px;\n}\n.btn-txt-sz-middle[data-v-33548b34] {\n  font-size: 35px;\n}\n.btn-txt-sz-small[data-v-33548b34] {\n  font-size: 30px;\n}\n\n/*DISABLED*/\n.disabled[data-v-33548b34] {\n}\n\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 17:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 18:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-33548b34", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 22:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(23)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(25),
-	  /* template */
-	  __webpack_require__(26),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-f15788ee",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.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] tip.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-f15788ee", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-f15788ee", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 23:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(24);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("b14ba53e", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-f15788ee\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./tip.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 24:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.tip[data-v-f15788ee] {\n  padding-left: 36px;\n  padding-right: 36px;\n  padding-top: 36px;\n  padding-bottom: 36px;\n  border-radius: 10px;\n}\n.tip-txt[data-v-f15788ee]{\n  font-size: 28px;\n}\n.tip-success[data-v-f15788ee] {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.tip-txt-success[data-v-f15788ee] {\n  color: #3c763d;\n}\n.tip-info[data-v-f15788ee] {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.tip-txt-info[data-v-f15788ee] {\n  color: #31708f;\n}\n.tip-warning[data-v-f15788ee] {\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.tip-txt-warning[data-v-f15788ee] {\n  color: #8a6d3b;\n}\n.tip-danger[data-v-f15788ee] {\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.tip-txt-danger[data-v-f15788ee] {\n  color: #a94442;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 25:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 26:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-f15788ee", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 405:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(406),
-	  /* template */
-	  __webpack_require__(412),
-	  /* styles */
-	  null,
-	  /* scopeId */
-	  null,
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/template.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] template.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-2f903ef5", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-2f903ef5", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 406:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      img: '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg'
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(9),
-	    hn: __webpack_require__(407),
-	    tip: __webpack_require__(22),
-	    button: __webpack_require__(14)
-	  },
-	  methods: {
-	    toast: function toast() {
-	      modal.toast({ message: 'a toast', duration: 2 });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 407:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(408)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(410),
-	  /* template */
-	  __webpack_require__(411),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-11152c08",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/hn.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] hn.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-11152c08", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-11152c08", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 408:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(409);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("1c30c562", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-11152c08\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./hn.vue", function() {
-	     var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-11152c08\",\"scoped\":true,\"hasInlineConfig\":false}!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./hn.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 409:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.h1[data-v-11152c08] {\n  height: 110px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.h2[data-v-11152c08] {\n  height: 110px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.h3[data-v-11152c08] {\n  height: 110px;\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n.txt-h1[data-v-11152c08] {\n  font-size: 70px;\n}\n.txt-h2[data-v-11152c08] {\n  font-size: 52px;\n}\n.txt-h3[data-v-11152c08] {\n  font-size: 42px;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 410:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    level: { default: 1 },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 411:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['h' + _vm.level],
-	    staticStyle: _vm.$processStyle({
-	      "justify-content": "center"
-	    }),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_c('text', {
-	    class: ['txt-h' + _vm.level],
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-11152c08", module.exports)
-	  }
-	}
-
-/***/ }),
-
-/***/ 412:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Dialog",
-	      "type": "primary"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-bottom": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "success",
-	      "value": "It's a weex example template."
-	    }
-	  }), _vm._v(" "), _c('hn', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "level": "1",
-	      "value": "H1"
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "primary",
-	      "value": "Toast"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.toast($event)
-	      }
-	    }
-	  }), _vm._v(" "), _c('hn', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "level": "2",
-	      "value": "H3"
-	    }
-	  }), _vm._v(" "), _c('button', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "warning",
-	      "value": "Toast"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.toast($event)
-	      }
-	    }
-	  })], 1), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Image",
-	      "type": "primary"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: _vm.$processStyle({
-	      "margin-bottom": "20px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "type": "warning",
-	      "value": "Weex screen width is 750"
-	    }
-	  }), _vm._v(" "), _c('image', {
-	    staticClass: "img",
-	    staticStyle: _vm.$processStyle({
-	      "width": "400px",
-	      "height": "400px"
-	    }),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "src": _vm.img
-	    }
-	  }), _vm._v(" "), _c('panel', {
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined)),
-	    attrs: {
-	      "title": "Image",
-	      "type": "default"
-	    }
-	  }, [_c('text', [_vm._v("sub info")])])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-2f903ef5", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue-web/vue/transition.js b/src/main/assets/vue-web/vue/transition.js
deleted file mode 100644
index 75c07f1..0000000
--- a/src/main/assets/vue-web/vue/transition.js
+++ /dev/null
@@ -1,695 +0,0 @@
-// NOTE: for vue2.0 and platform:web only.
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var App = __webpack_require__(413)
-	App.el = '#root'
-	new Vue(App)
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	/*
-		MIT License http://www.opensource.org/licenses/mit-license.php
-		Author Tobias Koppers @sokra
-	*/
-	// css base code, injected by the css-loader
-	module.exports = function() {
-		var list = [];
-
-		// return the list of modules as css string
-		list.toString = function toString() {
-			var result = [];
-			for(var i = 0; i < this.length; i++) {
-				var item = this[i];
-				if(item[2]) {
-					result.push("@media " + item[2] + "{" + item[1] + "}");
-				} else {
-					result.push(item[1]);
-				}
-			}
-			return result.join("");
-		};
-
-		// import a list of modules into the list
-		list.i = function(modules, mediaQuery) {
-			if(typeof modules === "string")
-				modules = [[null, modules, ""]];
-			var alreadyImportedModules = {};
-			for(var i = 0; i < this.length; i++) {
-				var id = this[i][0];
-				if(typeof id === "number")
-					alreadyImportedModules[id] = true;
-			}
-			for(i = 0; i < modules.length; i++) {
-				var item = modules[i];
-				// skip already imported module
-				// this implementation is not 100% perfect for weird media query combinations
-				//  when a module is imported multiple times with different media queries.
-				//  I hope this will never occur (Hey this way we have smaller bundles)
-				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
-					if(mediaQuery && !item[2]) {
-						item[2] = mediaQuery;
-					} else if(mediaQuery) {
-						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
-					}
-					list.push(item);
-				}
-			}
-		};
-		return list;
-	};
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/*
-	  MIT License http://www.opensource.org/licenses/mit-license.php
-	  Author Tobias Koppers @sokra
-	  Modified by Evan You @yyx990803
-	*/
-
-	var hasDocument = typeof document !== 'undefined'
-
-	if (false) {
-	  if (!hasDocument) {
-	    throw new Error(
-	    'vue-style-loader cannot be used in a non-browser environment. ' +
-	    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-	  ) }
-	}
-
-	var listToStyles = __webpack_require__(6)
-
-	/*
-	type StyleObject = {
-	  id: number;
-	  parts: Array<StyleObjectPart>
-	}
-
-	type StyleObjectPart = {
-	  css: string;
-	  media: string;
-	  sourceMap: ?string
-	}
-	*/
-
-	var stylesInDom = {/*
-	  [id: number]: {
-	    id: number,
-	    refs: number,
-	    parts: Array<(obj?: StyleObjectPart) => void>
-	  }
-	*/}
-
-	var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-	var singletonElement = null
-	var singletonCounter = 0
-	var isProduction = false
-	var noop = function () {}
-
-	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-	// tags it will allow on a page
-	var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-	module.exports = function (parentId, list, _isProduction) {
-	  isProduction = _isProduction
-
-	  var styles = listToStyles(parentId, list)
-	  addStylesToDom(styles)
-
-	  return function update (newList) {
-	    var mayRemove = []
-	    for (var i = 0; i < styles.length; i++) {
-	      var item = styles[i]
-	      var domStyle = stylesInDom[item.id]
-	      domStyle.refs--
-	      mayRemove.push(domStyle)
-	    }
-	    if (newList) {
-	      styles = listToStyles(parentId, newList)
-	      addStylesToDom(styles)
-	    } else {
-	      styles = []
-	    }
-	    for (var i = 0; i < mayRemove.length; i++) {
-	      var domStyle = mayRemove[i]
-	      if (domStyle.refs === 0) {
-	        for (var j = 0; j < domStyle.parts.length; j++) {
-	          domStyle.parts[j]()
-	        }
-	        delete stylesInDom[domStyle.id]
-	      }
-	    }
-	  }
-	}
-
-	function addStylesToDom (styles /* Array<StyleObject> */) {
-	  for (var i = 0; i < styles.length; i++) {
-	    var item = styles[i]
-	    var domStyle = stylesInDom[item.id]
-	    if (domStyle) {
-	      domStyle.refs++
-	      for (var j = 0; j < domStyle.parts.length; j++) {
-	        domStyle.parts[j](item.parts[j])
-	      }
-	      for (; j < item.parts.length; j++) {
-	        domStyle.parts.push(addStyle(item.parts[j]))
-	      }
-	      if (domStyle.parts.length > item.parts.length) {
-	        domStyle.parts.length = item.parts.length
-	      }
-	    } else {
-	      var parts = []
-	      for (var j = 0; j < item.parts.length; j++) {
-	        parts.push(addStyle(item.parts[j]))
-	      }
-	      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-	    }
-	  }
-	}
-
-	function createStyleElement () {
-	  var styleElement = document.createElement('style')
-	  styleElement.type = 'text/css'
-	  head.appendChild(styleElement)
-	  return styleElement
-	}
-
-	function addStyle (obj /* StyleObjectPart */) {
-	  var update, remove
-	  var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
-
-	  if (styleElement) {
-	    if (isProduction) {
-	      // has SSR styles and in production mode.
-	      // simply do nothing.
-	      return noop
-	    } else {
-	      // has SSR styles but in dev mode.
-	      // for some reason Chrome can't handle source map in server-rendered
-	      // style tags - source maps in <style> only works if the style tag is
-	      // created and inserted dynamically. So we remove the server rendered
-	      // styles and inject new ones.
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  if (isOldIE) {
-	    // use singleton mode for IE9.
-	    var styleIndex = singletonCounter++
-	    styleElement = singletonElement || (singletonElement = createStyleElement())
-	    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-	    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-	  } else {
-	    // use multi-style-tag mode in all other cases
-	    styleElement = createStyleElement()
-	    update = applyToTag.bind(null, styleElement)
-	    remove = function () {
-	      styleElement.parentNode.removeChild(styleElement)
-	    }
-	  }
-
-	  update(obj)
-
-	  return function updateStyle (newObj /* StyleObjectPart */) {
-	    if (newObj) {
-	      if (newObj.css === obj.css &&
-	          newObj.media === obj.media &&
-	          newObj.sourceMap === obj.sourceMap) {
-	        return
-	      }
-	      update(obj = newObj)
-	    } else {
-	      remove()
-	    }
-	  }
-	}
-
-	var replaceText = (function () {
-	  var textStore = []
-
-	  return function (index, replacement) {
-	    textStore[index] = replacement
-	    return textStore.filter(Boolean).join('\n')
-	  }
-	})()
-
-	function applyToSingletonTag (styleElement, index, remove, obj) {
-	  var css = remove ? '' : obj.css
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = replaceText(index, css)
-	  } else {
-	    var cssNode = document.createTextNode(css)
-	    var childNodes = styleElement.childNodes
-	    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-	    if (childNodes.length) {
-	      styleElement.insertBefore(cssNode, childNodes[index])
-	    } else {
-	      styleElement.appendChild(cssNode)
-	    }
-	  }
-	}
-
-	function applyToTag (styleElement, obj) {
-	  var css = obj.css
-	  var media = obj.media
-	  var sourceMap = obj.sourceMap
-
-	  if (media) {
-	    styleElement.setAttribute('media', media)
-	  }
-
-	  if (sourceMap) {
-	    // https://developer.chrome.com/devtools/docs/javascript-debugging
-	    // this makes source maps inside style tags work properly in Chrome
-	    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-	    // http://stackoverflow.com/a/26603875
-	    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-	  }
-
-	  if (styleElement.styleSheet) {
-	    styleElement.styleSheet.cssText = css
-	  } else {
-	    while (styleElement.firstChild) {
-	      styleElement.removeChild(styleElement.firstChild)
-	    }
-	    styleElement.appendChild(document.createTextNode(css))
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	/**
-	 * Translates the list format produced by css-loader into something
-	 * easier to manipulate.
-	 */
-	module.exports = function listToStyles (parentId, list) {
-	  var styles = []
-	  var newStyles = {}
-	  for (var i = 0; i < list.length; i++) {
-	    var item = list[i]
-	    var id = item[0]
-	    var css = item[1]
-	    var media = item[2]
-	    var sourceMap = item[3]
-	    var part = {
-	      id: parentId + ':' + i,
-	      css: css,
-	      media: media,
-	      sourceMap: sourceMap
-	    }
-	    if (!newStyles[id]) {
-	      styles.push(newStyles[id] = { id: id, parts: [part] })
-	    } else {
-	      newStyles[id].parts.push(part)
-	    }
-	  }
-	  return styles
-	}
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports) {
-
-	/* globals __VUE_SSR_CONTEXT__ */
-
-	// this module is a runtime utility for cleaner component module output and will
-	// be included in the final webpack user bundle
-
-	module.exports = function normalizeComponent (
-	  rawScriptExports,
-	  compiledTemplate,
-	  injectStyles,
-	  scopeId,
-	  moduleIdentifier /* server only */
-	) {
-	  var esModule
-	  var scriptExports = rawScriptExports = rawScriptExports || {}
-
-	  // ES6 modules interop
-	  var type = typeof rawScriptExports.default
-	  if (type === 'object' || type === 'function') {
-	    esModule = rawScriptExports
-	    scriptExports = rawScriptExports.default
-	  }
-
-	  // Vue.extend constructor export interop
-	  var options = typeof scriptExports === 'function'
-	    ? scriptExports.options
-	    : scriptExports
-
-	  // render functions
-	  if (compiledTemplate) {
-	    options.render = compiledTemplate.render
-	    options.staticRenderFns = compiledTemplate.staticRenderFns
-	  }
-
-	  // scopedId
-	  if (scopeId) {
-	    options._scopeId = scopeId
-	  }
-
-	  var hook
-	  if (moduleIdentifier) { // server build
-	    hook = function (context) {
-	      // 2.3 injection
-	      context =
-	        context || // cached call
-	        (this.$vnode && this.$vnode.ssrContext) || // stateful
-	        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
-	      // 2.2 with runInNewContext: true
-	      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
-	        context = __VUE_SSR_CONTEXT__
-	      }
-	      // inject component styles
-	      if (injectStyles) {
-	        injectStyles.call(this, context)
-	      }
-	      // register component module identifier for async chunk inferrence
-	      if (context && context._registeredComponents) {
-	        context._registeredComponents.add(moduleIdentifier)
-	      }
-	    }
-	    // used by ssr in case component is cached and beforeCreate
-	    // never gets called
-	    options._ssrRegister = hook
-	  } else if (injectStyles) {
-	    hook = injectStyles
-	  }
-
-	  if (hook) {
-	    var functional = options.functional
-	    var existing = functional
-	      ? options.render
-	      : options.beforeCreate
-	    if (!functional) {
-	      // inject component registration as beforeCreate hook
-	      options.beforeCreate = existing
-	        ? [].concat(existing, hook)
-	        : [hook]
-	    } else {
-	      // register for functioal component in vue file
-	      options.render = function renderWithStyleInjection (h, context) {
-	        hook.call(context)
-	        return existing(h, context)
-	      }
-	    }
-	  }
-
-	  return {
-	    esModule: esModule,
-	    exports: scriptExports,
-	    options: options
-	  }
-	}
-
-
-/***/ }),
-
-/***/ 413:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var disposed = false
-	function injectStyle (ssrContext) {
-	  if (disposed) return
-	  __webpack_require__(414)
-	}
-	var Component = __webpack_require__(7)(
-	  /* script */
-	  __webpack_require__(416),
-	  /* template */
-	  __webpack_require__(417),
-	  /* styles */
-	  injectStyle,
-	  /* scopeId */
-	  "data-v-95c164e0",
-	  /* moduleIdentifier (server only) */
-	  null
-	)
-	Component.options.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/transition.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] transition.vue: functional components are not supported with templates, they should use render functions.")}
-
-	/* hot reload */
-	if (false) {(function () {
-	  var hotAPI = require("vue-hot-reload-api")
-	  hotAPI.install(require("vue"), false)
-	  if (!hotAPI.compatible) return
-	  module.hot.accept()
-	  if (!module.hot.data) {
-	    hotAPI.createRecord("data-v-95c164e0", Component.options)
-	  } else {
-	    hotAPI.reload("data-v-95c164e0", Component.options)
-	  }
-	  module.hot.dispose(function (data) {
-	    disposed = true
-	  })
-	})()}
-
-	module.exports = Component.exports
-
-
-/***/ }),
-
-/***/ 414:
-/***/ (function(module, exports, __webpack_require__) {
-
-	// style-loader: Adds some css to the DOM by adding a <style> tag
-
-	// load the styles
-	var content = __webpack_require__(415);
-	if(typeof content === 'string') content = [[module.id, content, '']];
-	if(content.locals) module.exports = content.locals;
-	// add the styles to the DOM
-	var update = __webpack_require__(5)("7523f794", content, false);
-	// Hot Module Replacement
-	if(false) {
-	 // When the styles change, update the <style> tags
-	 if(!content.locals) {
-	   module.hot.accept("!!../../node_modules/css-loader/index.js!../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-95c164e0\",\"scoped\":true,\"hasInlineConfig\":false}!../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./transition.vue", function() {
-	     var newContent = require("!!../../node_modules/css-loader/index.js!../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-95c164e0\",\"scoped\":true,\"hasInlineConfig\":false}!../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./transition.vue");
-	     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
-	     update(newContent);
-	   });
-	 }
-	 // When the module is disposed, remove the <style> tags
-	 module.hot.dispose(function() { update(); });
-	}
-
-/***/ }),
-
-/***/ 415:
-/***/ (function(module, exports, __webpack_require__) {
-
-	exports = module.exports = __webpack_require__(4)();
-	// imports
-
-
-	// module
-	exports.push([module.id, "\n.panel[data-v-95c164e0] {\n    margin: 10px;\n    top:10px;\n    align-items: center;\n    justify-content: center;\n    border: solid;\n    border-radius: 10px; \n      \n    transition-property: right,left,top,bottom,width,height,backgroundColor,opacity,transform;\n    transition-duration: 0.5s; \n    transition-delay: 0s;\n    transition-timing-function: cubic-bezier(0.58, 0.1, 0.42, 1.0);\n}\n.cell[data-v-95c164e0]{\n    background-color:white;\n    flex-direction: row;\n}\n.text[data-v-95c164e0] {\n    font-size: 60px; \n    text-align: center;\n    color: white;\n}\n.list[data-v-95c164e0]{\n    background-color:white;\n}\n", ""]);
-
-	// exports
-
-
-/***/ }),
-
-/***/ 416:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	Object.defineProperty(exports, "__esModule", {
-	    value: true
-	});
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	exports.default = {
-	    created: function created() {
-	        this.datasource = ['width+height', 'backgroundColor', 'opactity', 'transform/translateX', 'transform/translateY', 'transform/scaleX', 'transform/scaleY', 'transform/rotate'];
-	        this.panels = this.randomfn();
-	    },
-	    data: function data() {
-	        return {
-	            panels: []
-	        };
-	    },
-
-	    methods: {
-	        change: function change(i) {
-	            var item = this.panels[i];
-	            if (item) {
-
-	                if (i == 0) {
-	                    item.height = item.height === 330 ? 200 : 330;
-	                    item.width = item.width === 350 ? 730 : 350;
-	                }
-	                if (i == 1) {
-	                    item.bgc = item.bgc === '#69BE96' ? 'red' : '#69BE96';
-	                }
-	                if (i == 2) {
-	                    item.opacity = item.opacity === 1.0 ? 0.6 : 1.0;
-	                }
-	                if (i == 3) {
-	                    item.bgc = item.bgc === '#69BE96' ? '#72B8DF' : '#69BE96';
-	                    item.transform = item.transform === 'translateX(200px)' ? 'translateX(0px)' : 'translateX(200px)';
-	                }
-	                if (i == 4) {
-	                    item.bgc = item.bgc === '#69BE96' ? '#72B8DF' : '#69BE96';
-	                    item.transform = item.transform === 'translateY(-150px)' ? 'translateY(0px)' : 'translateY(-150px)';
-	                }
-	                if (i == 5) {
-	                    item.bgc = item.bgc === '#69BE96' ? '#72B8DF' : '#69BE96';
-	                    item.transform = item.transform === 'scaleX(0.5)' ? 'scaleX(1)' : 'scaleX(0.5)';
-	                }
-	                if (i == 6) {
-	                    item.bgc = item.bgc === '#69BE96' ? '#72B8DF' : '#69BE96';
-	                    item.transform = item.transform === 'scaleY(0.5)' ? 'scaleY(1)' : 'scaleY(0.5)';
-	                }
-	                if (i == 7) {
-	                    item.bgc = item.bgc === '#69BE96' ? '#72B8DF' : '#69BE96';
-	                    item.transform = item.transform === 'rotate(40deg)' ? 'rotate(0deg)' : 'rotate(40deg)';
-	                }
-	            }
-	        },
-	        randomfn: function randomfn() {
-	            var ary = [];
-	            for (var i = 0; i <= 7; i++) {
-	                ary.push({ label: this.datasource[i], height: 200, width: 730, bgc: '#69BE96', opacity: 1, right: 20 });
-	            }
-	            return ary;
-	        }
-	    }
-	};
-
-/***/ }),
-
-/***/ 417:
-/***/ (function(module, exports, __webpack_require__) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list', {
-	    staticClass: "list",
-	    staticStyle: _vm.$processStyle(undefined),
-	    style: (_vm.$processStyle(undefined))
-	  }, _vm._l((_vm.panels), function(item, i) {
-	    return _c('cell', {
-	      staticClass: "cell",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined)),
-	      on: {
-	        "click": function($event) {
-	          _vm.change(i)
-	        }
-	      }
-	    }, [_c('div', {
-	      staticClass: "panel",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        height: item.height,
-	        width: item.width,
-	        backgroundColor: item.bgc,
-	        opacity: item.opacity,
-	        transform: item.transform
-	      }))
-	    }, [_c('text', {
-	      staticClass: "text",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item.label))])]), _vm._v(" "), _c('div', {
-	      staticClass: "panel",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle({
-	        height: item.height,
-	        width: item.width,
-	        backgroundColor: item.bgc,
-	        opacity: item.opacity,
-	        transform: item.transform
-	      }))
-	    }, [_c('text', {
-	      staticClass: "text",
-	      staticStyle: _vm.$processStyle(undefined),
-	      style: (_vm.$processStyle(undefined))
-	    }, [_vm._v(_vm._s(item.label))])])])
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-	if (false) {
-	  module.hot.accept()
-	  if (module.hot.data) {
-	     require("vue-hot-reload-api").rerender("data-v-95c164e0", module.exports)
-	  }
-	}
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/animation.js b/src/main/assets/vue/animation.js
deleted file mode 100644
index e986259..0000000
--- a/src/main/assets/vue/animation.js
+++ /dev/null
@@ -1,714 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(1)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(2)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(11)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/animation.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-6d4de22c"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-/* 1 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "block": {
-	    "position": "absolute",
-	    "width": 250,
-	    "height": 250,
-	    "top": 300,
-	    "left": 400,
-	    "backgroundColor": "#F0AD4E",
-	    "alignItems": "center",
-	    "justifyContent": "center"
-	  },
-	  "block-txt": {
-	    "color": "#FFFFFF",
-	    "fontSize": 70
-	  }
-	}
-
-/***/ }),
-/* 2 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var animation = weex.requireModule('animation');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      transformOrigin: 'center center',
-	      current_rotate: 0,
-	      current_scale: 1,
-	      current_color: '#FF0000',
-	      current_opacity: 1,
-	      current_translate: '',
-	      current_transform: '',
-	      isStop: true
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3),
-	    button: __webpack_require__(7)
-	  },
-	  methods: {
-	    anim: function anim(styles, timingFunction, duration, callback) {
-	      animation.transition(this.$refs.block, {
-	        styles: styles,
-	        timingFunction: timingFunction,
-	        duration: duration
-	      }, callback);
-	    },
-	    rotate: function rotate() {
-	      var self = this;
-	      self.current_rotate += 90;
-	      self.anim({
-	        transform: 'rotate(' + self.current_rotate + 'deg)'
-	      }, 'ease-in-out', 500, function () {
-	        if (self.current_rotate === 360) {
-	          self.current_rotate = 0;
-	        } else {
-	          self.rotate();
-	        }
-	      });
-	    },
-	    translate: function translate() {
-	      this.current_translate = this.current_translate ? '' : 'translate(50%, 50%)';
-	      this.anim({
-	        transform: this.current_translate
-	      }, 'ease-in', 500, function () {});
-	    },
-	    scale: function scale() {
-	      var self = this;
-	      self.current_scale = self.current_scale === 2 ? .5 : 2;
-	      self.anim({
-	        transform: 'scale(' + self.current_scale + ')'
-	      }, 'linear', 500, function () {});
-	    },
-	    transform: function transform() {
-	      var self = this;
-	      this.current_transform = this.current_transform ? '' : 'rotate(45deg) scale(1.5)';
-	      this.anim({
-	        transform: this.current_transform,
-	        transformOrigin: 'left top'
-	      }, 'ease-out', 500, function () {
-	        if (self.current_transform !== '') {
-	          self.anim({
-	            transform: 'rotate(-90deg) scale(1.2)',
-	            transformOrigin: 'left top'
-	          }, 'ease-out', 500, function () {});
-	        } else {}
-	      });
-	    },
-	    composite: function composite() {
-	      var self = this;
-	      self.current_transform = self.current_transform ? '' : 'rotate(45deg) scale(1.5) translate(50%, 50%)';
-	      self.current_color = self.current_color === '#F0AD4E' ? '#D9534F' : '#F0AD4E';
-	      self.current_opacity = self.current_opacity === 1 ? 0.1 : 1;
-	      this.anim({
-	        transform: this.current_transform,
-	        transformOrigin: 'left top',
-	        backgroundColor: self.current_color,
-	        opacity: self.current_opacity
-	      }, 'ease-out', 1000, function () {});
-	    },
-	    color: function color() {
-	      var self = this;
-	      self.current_color = self.current_color === '#F0AD4E' ? '#D9534F' : '#F0AD4E';
-	      self.anim({
-	        backgroundColor: self.current_color
-	      }, 'linear', 500, function () {});
-	    },
-	    opacity: function opacity() {
-	      var self = this;
-	      self.current_opacity = self.current_opacity === 1 ? 0.1 : 1;
-	      self.anim({
-	        opacity: self.current_opacity
-	      }, 'linear', 500, function () {});
-	    }
-	  }
-	};
-
-/***/ }),
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(8)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(9)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(10)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-71b34881"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 8 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "btn": {
-	    "marginBottom": 0,
-	    "alignItems": "center",
-	    "justifyContent": "center",
-	    "borderWidth": 1,
-	    "borderStyle": "solid",
-	    "borderColor": "#333333"
-	  },
-	  "btn-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "btn-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "btn-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "btn-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "btn-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "btn-link": {
-	    "borderColor": "rgba(0,0,0,0)",
-	    "borderRadius": 0
-	  },
-	  "btn-txt-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-txt-primary": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-success": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-info": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-warning": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-danger": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-link": {
-	    "color": "rgb(51,122,183)"
-	  },
-	  "btn-sz-large": {
-	    "width": 300,
-	    "height": 100,
-	    "paddingTop": 25,
-	    "paddingBottom": 25,
-	    "paddingLeft": 40,
-	    "paddingRight": 40,
-	    "borderRadius": 15
-	  },
-	  "btn-sz-middle": {
-	    "width": 240,
-	    "height": 80,
-	    "paddingTop": 15,
-	    "paddingBottom": 15,
-	    "paddingLeft": 30,
-	    "paddingRight": 30,
-	    "borderRadius": 10
-	  },
-	  "btn-sz-small": {
-	    "width": 170,
-	    "height": 60,
-	    "paddingTop": 12,
-	    "paddingBottom": 12,
-	    "paddingLeft": 25,
-	    "paddingRight": 25,
-	    "borderRadius": 7
-	  },
-	  "btn-txt-sz-large": {
-	    "fontSize": 45
-	  },
-	  "btn-txt-sz-middle": {
-	    "fontSize": 35
-	  },
-	  "btn-txt-sz-small": {
-	    "fontSize": 30
-	  }
-	}
-
-/***/ }),
-/* 9 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size]
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('panel', {
-	    attrs: {
-	      "title": "Transform",
-	      "type": "primary"
-	    }
-	  }, [_c('button', {
-	    attrs: {
-	      "value": "Rotate",
-	      "type": "primary",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.rotate($event)
-	      }
-	    }
-	  }), _c('button', {
-	    staticStyle: {
-	      marginTop: "12px"
-	    },
-	    attrs: {
-	      "value": "Scale",
-	      "type": "primary",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.scale($event)
-	      }
-	    }
-	  }), _c('button', {
-	    staticStyle: {
-	      marginTop: "12px"
-	    },
-	    attrs: {
-	      "value": "Translate",
-	      "type": "primary",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.translate($event)
-	      }
-	    }
-	  }), _c('button', {
-	    staticStyle: {
-	      marginTop: "12px"
-	    },
-	    attrs: {
-	      "value": "Transform",
-	      "type": "success",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.transform($event)
-	      }
-	    }
-	  })], 1), _c('panel', {
-	    attrs: {
-	      "title": "Others",
-	      "type": "primary"
-	    }
-	  }, [_c('button', {
-	    attrs: {
-	      "value": "BgColor",
-	      "type": "primary",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.color($event)
-	      }
-	    }
-	  }), _c('button', {
-	    staticStyle: {
-	      marginTop: "12px"
-	    },
-	    attrs: {
-	      "value": "Opacity",
-	      "type": "primary",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.opacity($event)
-	      }
-	    }
-	  }), _c('button', {
-	    staticStyle: {
-	      marginTop: "12px"
-	    },
-	    attrs: {
-	      "value": "All",
-	      "type": "success",
-	      "size": "middle"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.composite($event)
-	      }
-	    }
-	  })], 1), _c('div', {
-	    ref: "block",
-	    staticClass: ["block"],
-	    style: {
-	      transformOrigin: _vm.transformOrigin
-	    }
-	  }, [_c('text', {
-	    staticClass: ["block-txt"]
-	  }, [_vm._v("Anim")])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue/components/a.js b/src/main/assets/vue/components/a.js
deleted file mode 100644
index eac4fb4..0000000
--- a/src/main/assets/vue/components/a.js
+++ /dev/null
@@ -1,450 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(12)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(17)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/a.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-/* 1 */,
-/* 2 */,
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 7 */,
-/* 8 */,
-/* 9 */,
-/* 10 */,
-/* 11 */,
-/* 12 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      img: '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg'
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3),
-	    tip: __webpack_require__(13)
-	  }
-	};
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(14)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(15)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(16)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-36fe495c"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 14 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "tip": {
-	    "paddingLeft": 36,
-	    "paddingRight": 36,
-	    "paddingTop": 36,
-	    "paddingBottom": 36,
-	    "borderRadius": 10
-	  },
-	  "tip-txt": {
-	    "fontSize": 28
-	  },
-	  "tip-success": {
-	    "backgroundColor": "#dff0d8",
-	    "borderColor": "#d6e9c6"
-	  },
-	  "tip-txt-success": {
-	    "color": "#3c763d"
-	  },
-	  "tip-info": {
-	    "backgroundColor": "#d9edf7",
-	    "borderColor": "#bce8f1"
-	  },
-	  "tip-txt-info": {
-	    "color": "#31708f"
-	  },
-	  "tip-warning": {
-	    "backgroundColor": "#fcf8e3",
-	    "borderColor": "#faebcc"
-	  },
-	  "tip-txt-warning": {
-	    "color": "#8a6d3b"
-	  },
-	  "tip-danger": {
-	    "backgroundColor": "#f2dede",
-	    "borderColor": "#ebccd1"
-	  },
-	  "tip-txt-danger": {
-	    "color": "#a94442"
-	  }
-	}
-
-/***/ }),
-/* 15 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-/* 16 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type]
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 17 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "Hyperlink",
-	      "type": "primary"
-	    }
-	  }, [_c('a', {
-	    attrs: {
-	      "href": "http://alibaba.github.io/weex/index.html"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: {
-	      marginBottom: "20px"
-	    },
-	    attrs: {
-	      "type": "info",
-	      "value": "Click me to see how 'A' element opens a new world."
-	    }
-	  })], 1)])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue/components/countdown.js b/src/main/assets/vue/components/countdown.js
deleted file mode 100644
index a7a989c..0000000
--- a/src/main/assets/vue/components/countdown.js
+++ /dev/null
@@ -1,658 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(18)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(19)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(24)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/countdown.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-3bf51100"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-/* 1 */,
-/* 2 */,
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 7 */,
-/* 8 */,
-/* 9 */,
-/* 10 */,
-/* 11 */,
-/* 12 */,
-/* 13 */,
-/* 14 */,
-/* 15 */,
-/* 16 */,
-/* 17 */,
-/* 18 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "ctno1": {
-	    "borderRadius": 8,
-	    "paddingTop": 6,
-	    "paddingBottom": 6,
-	    "paddingRight": 4,
-	    "paddingLeft": 4,
-	    "marginLeft": 2,
-	    "marginRight": 2,
-	    "backgroundColor": "rgb(242,222,222)",
-	    "color": "rgb(169,68,66)"
-	  },
-	  "ctno2": {
-	    "borderRadius": 8,
-	    "paddingTop": 30,
-	    "paddingBottom": 30,
-	    "paddingLeft": 16,
-	    "paddingRight": 16,
-	    "backgroundColor": "rgb(217,237,247)",
-	    "color": "rgb(49,112,143)",
-	    "textAlign": "center",
-	    "fontSize": 40
-	  }
-	}
-
-/***/ }),
-/* 19 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      countdown1: {
-	        remain: 5000,
-	        time: {
-	          D: '0',
-	          hh: '00',
-	          mm: '00',
-	          ss: '00'
-	        }
-	      },
-	      countdown2: {
-	        remain: 5000,
-	        time: {
-	          MM: '0',
-	          ss: '0'
-	        }
-	      }
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3),
-	    countdown: __webpack_require__(20)
-	  },
-	  methods: {
-	    tick: function tick(e, k) {
-	      this[k].time = JSON.parse(JSON.stringify(e));
-	    }
-	  }
-	};
-
-/***/ }),
-/* 20 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(21)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(22)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(23)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/countdown.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-50220132"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 21 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "wrap": {
-	    "overflow": "hidden"
-	  }
-	}
-
-/***/ }),
-/* 22 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	function format(str) {
-	  if (str.length >= 2) {
-	    return str;
-	  } else {
-	    return '0' + str;
-	  }
-	}
-
-	function getTime(target, now) {
-	  var remain = parseInt((target - now) / 1000);
-	  var D = String(parseInt(remain / 86400));
-	  var DD = format(D);
-	  var h = String(parseInt((remain - parseInt(D) * 86400) / 3600));
-	  var hh = format(h);
-	  var H = String(parseInt(remain / 3600));
-	  var HH = format(H);
-	  var m = String(parseInt((remain - parseInt(H) * 3600) / 60));
-	  var mm = format(m);
-	  var M = String(parseInt(remain / 60));
-	  var MM = format(M);
-	  var s = String(remain - parseInt(M) * 60);
-	  var ss = format(s);
-	  var S = String(remain);
-	  var SS = format(S);
-	  return {
-	    D: D, DD: DD,
-	    h: h, hh: hh,
-	    H: H, HH: HH,
-	    m: m, mm: mm,
-	    M: M, MM: MM,
-	    s: s, ss: ss,
-	    S: S, SS: SS
-	  };
-	}
-
-	module.exports = {
-	  props: {
-	    remain: {
-	      default: 0
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      now: 0,
-	      target: 0,
-	      outofview: false
-	    };
-	  },
-	  created: function created() {
-	    this.now = Date.now();
-	    this.target = this.now + this.remain * 1000;
-	    if (this.remain > 0) {
-	      this.run();
-	    }
-	  },
-	  methods: {
-	    run: function run() {
-	      if (!this.outofview) {
-	        this.now = Date.now();
-	      }
-	      var time = getTime(this.target, this.now);
-	      if (this.target >= this.now) {
-	        this.$emit('tick', time);
-	      } else {
-	        this.$emit('alarm', time);
-	        return;
-	      }
-	      setTimeout(this.run.bind(this), 1000);
-	    },
-	    appeared: function appeared() {
-	      this.outofview = false;
-	    },
-	    disappeared: function disappeared() {
-	      this.outofview = true;
-	    }
-	  }
-	};
-
-/***/ }),
-/* 23 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      overflow: "hidden",
-	      flexDirection: "row"
-	    },
-	    on: {
-	      "appear": _vm.appeared,
-	      "disappear": _vm.disappeared
-	    }
-	  }, [_vm._t("default")], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 24 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "Countdown",
-	      "type": "primary"
-	    }
-	  }, [_c('countdown', {
-	    staticStyle: {
-	      width: "750",
-	      marginTop: "20",
-	      marginBottom: "20"
-	    },
-	    attrs: {
-	      "remain": _vm.countdown1.remain
-	    },
-	    on: {
-	      "tick": function($event) {
-	        _vm.tick($event, 'countdown1')
-	      }
-	    }
-	  }, [_c('text', {
-	    staticClass: ["ctno1"]
-	  }, [_vm._v(_vm._s(_vm.countdown1.time.D))]), _c('text', {
-	    staticClass: ["ctno1"],
-	    staticStyle: {
-	      backgroundColor: "#FFFFFF",
-	      color: "#AAAAAA"
-	    }
-	  }, [_vm._v("day(s)")]), _c('text', {
-	    staticClass: ["ctno1"]
-	  }, [_vm._v(_vm._s(_vm.countdown1.time.hh))]), _c('text', {
-	    staticClass: ["ctno1"],
-	    staticStyle: {
-	      backgroundColor: "#FFFFFF",
-	      color: "#AAAAAA"
-	    }
-	  }, [_vm._v("hour(s)")]), _c('text', {
-	    staticClass: ["ctno1"]
-	  }, [_vm._v(_vm._s(_vm.countdown1.time.mm))]), _c('text', {
-	    staticClass: ["ctno1"],
-	    staticStyle: {
-	      backgroundColor: "#FFFFFF",
-	      color: "#AAAAAA"
-	    }
-	  }, [_vm._v("minute(s)")]), _c('text', {
-	    staticClass: ["ctno1"]
-	  }, [_vm._v(_vm._s(_vm.countdown1.time.ss))]), _c('text', {
-	    staticClass: ["ctno1"],
-	    staticStyle: {
-	      backgroundColor: "#FFFFFF",
-	      color: "#AAAAAA"
-	    }
-	  }, [_vm._v("second(s)")])]), _c('countdown', {
-	    staticStyle: {
-	      width: "600"
-	    },
-	    attrs: {
-	      "remain": _vm.countdown2.remain
-	    },
-	    on: {
-	      "tick": function($event) {
-	        _vm.tick($event, 'countdown2')
-	      }
-	    }
-	  }, [_c('text', {
-	    staticClass: ["ctno2"]
-	  }, [_vm._v(_vm._s(_vm.countdown2.time.MM))]), _c('text', {
-	    staticClass: ["ctno2"],
-	    staticStyle: {
-	      backgroundColor: "#FFFFFF",
-	      color: "#AAAAAA"
-	    }
-	  }, [_vm._v(":")]), _c('text', {
-	    staticClass: ["ctno2"]
-	  }, [_vm._v(_vm._s(_vm.countdown2.time.ss))])])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue/components/image.js b/src/main/assets/vue/components/image.js
deleted file mode 100644
index 7fd1012..0000000
--- a/src/main/assets/vue/components/image.js
+++ /dev/null
@@ -1,662 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(25)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(26)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(27)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/image.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-185bb2aa"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-/* 1 */,
-/* 2 */,
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 7 */,
-/* 8 */,
-/* 9 */,
-/* 10 */,
-/* 11 */,
-/* 12 */,
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(14)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(15)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(16)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-36fe495c"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 14 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "tip": {
-	    "paddingLeft": 36,
-	    "paddingRight": 36,
-	    "paddingTop": 36,
-	    "paddingBottom": 36,
-	    "borderRadius": 10
-	  },
-	  "tip-txt": {
-	    "fontSize": 28
-	  },
-	  "tip-success": {
-	    "backgroundColor": "#dff0d8",
-	    "borderColor": "#d6e9c6"
-	  },
-	  "tip-txt-success": {
-	    "color": "#3c763d"
-	  },
-	  "tip-info": {
-	    "backgroundColor": "#d9edf7",
-	    "borderColor": "#bce8f1"
-	  },
-	  "tip-txt-info": {
-	    "color": "#31708f"
-	  },
-	  "tip-warning": {
-	    "backgroundColor": "#fcf8e3",
-	    "borderColor": "#faebcc"
-	  },
-	  "tip-txt-warning": {
-	    "color": "#8a6d3b"
-	  },
-	  "tip-danger": {
-	    "backgroundColor": "#f2dede",
-	    "borderColor": "#ebccd1"
-	  },
-	  "tip-txt-danger": {
-	    "color": "#a94442"
-	  }
-	}
-
-/***/ }),
-/* 15 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-/* 16 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type]
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 17 */,
-/* 18 */,
-/* 19 */,
-/* 20 */,
-/* 21 */,
-/* 22 */,
-/* 23 */,
-/* 24 */,
-/* 25 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "img": {
-	    "marginBottom": 20
-	  }
-	}
-
-/***/ }),
-/* 26 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      img: '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg'
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3),
-	    tip: __webpack_require__(13)
-	  }
-	};
-
-/***/ }),
-/* 27 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "width x height",
-	      "type": "primary"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: {
-	      marginBottom: "20px"
-	    },
-	    attrs: {
-	      "type": "warning",
-	      "value": "Weex screen width is 750"
-	    }
-	  }), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('image', {
-	    staticClass: ["img"],
-	    staticStyle: {
-	      width: "300px",
-	      height: "300px"
-	    },
-	    attrs: {
-	      "src": _vm.img
-	    }
-	  }), _c('image', {
-	    staticClass: ["img"],
-	    staticStyle: {
-	      width: "200px",
-	      height: "200px"
-	    },
-	    attrs: {
-	      "src": _vm.img
-	    }
-	  }), _c('image', {
-	    staticClass: ["img"],
-	    staticStyle: {
-	      width: "50px",
-	      height: "50px"
-	    },
-	    attrs: {
-	      "src": _vm.img
-	    }
-	  })])], 1), _c('panel', {
-	    attrs: {
-	      "title": "GIF Animation",
-	      "type": "primary"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: {
-	      marginBottom: "20px"
-	    },
-	    attrs: {
-	      "type": "warning",
-	      "value": "Depanding on Native ImageSDK"
-	    }
-	  }), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('image', {
-	    staticClass: ["img"],
-	    staticStyle: {
-	      width: "96px",
-	      height: "96px"
-	    },
-	    attrs: {
-	      "src": "https://gtd.alicdn.com/tps/i4/T1HcvHXd4nXXb6ROYh-48-48.gif"
-	    }
-	  }), _c('image', {
-	    staticClass: ["img"],
-	    staticStyle: {
-	      width: "68px",
-	      height: "68px",
-	      marginLeft: "20px"
-	    },
-	    attrs: {
-	      "src": "https://gw.alicdn.com/tps/TB1El.mKXXXXXXyapXXXXXXXXXX-34-34.gif"
-	    }
-	  })])], 1), _c('panel', {
-	    attrs: {
-	      "title": "Base64",
-	      "type": "primary"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: {
-	      marginBottom: "20px"
-	    },
-	    attrs: {
-	      "type": "warning",
-	      "value": "Depanding on Native ImageSDK"
-	    }
-	  }), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('image', {
-	    staticClass: ["img"],
-	    staticStyle: {
-	      width: "96px",
-	      height: "96px"
-	    },
-	    attrs: {
-	      "src": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAMAAABgOjJdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1QTFRFhomSb3J8XGBrdnqDgYWNlJefV1tmfoGKU1diT1NfgISNgoWOYmZwio2Vi4+Wc3eAkJObZGhzUlZiaGt2U1djfYCKZGdyhYiQeHyFio6VgYWOVVllbHB6XWFsY2ZxaWx3jZCYXmFsfYCJcnZ/UVVham54V1tng4aPb3N8WV1pX2JtZWl0YWVvVlpmiYyUWVxohomRd3uEdHiBeX2GZ2t1hIeQVFhkf4OMbnJ8fYGKdnqEb3N9kJScY2dycnaAjpKZdHeBjpKajI+Yc3eBhYiRf4KLXmFtio6Wi4+XjZCZkJSbkZScjI+XlJifTlJe+rAZcwAAAZBJREFUeNp0lOeWgjAQhSdUBQRRbFjX7tpW3XUt23tL3v9xNigJIHh/zRk+5iR3ZgIkULWmwgv+A7VWDWWBR/nSt2gLUzIVbLH1lo8RRW1wEfqxPtCKUaKTMUhURuUhTIi6Q07l6LuAEFdpEld6tWNEx00CKKJ3jsR1xSHJcj4bB+LmkpxT49Yj8mqQUVBBciUk8ITepESJ+5AqY1+uwny5IjDPcADoN0BIwjLOsjKZOewtbi/9fvi338a44CetIai2H/cokPLj9tfEj2wVzD4rIWMlfpu+CXc5Pw4qh5X7AUw4gZIswUENGT8lAN1fMBVeAxIIxYR3Nin0imOe52emdxkyP8aY+0S9Y2d63cNoxvACRTaeI70slst+cjYCAnXmuuS1RKKmy1hKBX0hzaC3KOsxsmz2Ir2NzMcEbVCo+cf5oDOWOzNAucpxxoglnZlT1+KzXk4kymKwL4ttN+73dhHeuWV85zLL073Vw3v7MdDuE3a/JRrCmqwFQ2yV8gmvg/d+aPCMH0GLvB//AgwAo1MTpxsaxVoAAAAASUVORK5CYII="
-	    }
-	  }), _c('image', {
-	    staticClass: ["img"],
-	    staticStyle: {
-	      width: "68px",
-	      height: "68px",
-	      marginLeft: "20px"
-	    },
-	    attrs: {
-	      "src": "data:image/gif;base64,R0lGODlhIgAiANU7AMvLy83Nzdra2srKysnJyejo6MbGxtzc3M7Ozuzs7NTU1N3d3fz8/NfX1/j4+Ovr6+/v79DQ0Obm5v39/d/f3/f398/Pz9vb2+np6fn5+f7+/tXV1fX19dnZ2erq6tHR0fb29sjIyMfHx+Li4vLy8u7u7ufn5/r6+uPj49bW1tPT09LS0sTExPT09ODg4O3t7eHh4eTk5MXFxd7e3vHx8fPz8/Dw8OXl5djY2P///8zMzP///wAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Q0QxODlDNENEOEQxMUUzOEIzM0I1ODVGNjU1MjBBQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Q0QxODlDNUNEOEQxMUUzOEIzM0I1ODVGNjU1MjBBQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDRDE4OUMyQ0Q4RDExRTM4QjMzQjU4NUY2NTUyMEFCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDRDE4OUMzQ0Q4RDExRTM4QjMzQjU4NUY2NTUyMEFCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQAAOwAsAAAAACIAIgAABv/AnXBIFDIEnxmoyGw6hw6LTrdKPK9PhmI6lWC/xQN3agWDMWNdhDTJmZ+gS1oXUDUoD8dbOHk05oAIHS8aYDRbgIlTDTVXGiiKkVwFTgwdkpg6GE1ymZIRJUUjnpkURBCkmQJDDBueAQGJACEAOqtCCaQhBgOAAxEAAAtCGQKeBAAIyGkiFzk3Ii64UpghCg45EstTAAYQOS0DMUKjmLMPOTkVAQRc3d8cAZQ7YpgDAzbpHDrt3AYlOTggeCDEmL0B3wLyc+ctBwgEHgpmupdwXz8dAGTAC2BCCIWJBACqYzfGwIEcHkSM21EgFiYRC9I9uDcm2IoAAGAIaYFIEgBkAh8UBJvTbUCAYUIkkDLAwiggWLagREiF6ZaQAlQlIR3SKeucAJuITLjkNc2CE0yOlOWiIsOTAgjKNnB7pYKLuKQimJhgxkEBJC7nWFBwwAPaPTs0kJBwIMWGDSkaHECRoMKTIAAh+QQFAAA7ACwPAA0AEgAJAAAGRMCdUKcTGo3E4jF5RDKHSaUzCdtFn9ar5IrVBUQsA+JBDBkMISuSIJAsdgkAgFIojHaDpm3nOJKEFQFpTTsgUi+EiUJBACH5BAUAADsALA8AEQASAAgAAAYfQJ1wSCzqEA+jcmh5LZeWxFOJ8EyVkqsRpi0uukRBEAAh+QQFAAA7ACwPABEAEgAIAAAGWcCdcEgUBkQsAzFkMISKO4JAskAkAABKoTDaDYYAgy3nQHgGA1IuVwk8hQAZJAfSmQaE17pNIBoOOR4iMTsiC2sPaERYKwEAcAQfClhQYQMBfiyXUDsBmDtBACH5BAUAADsALA8ADQASAAkAAAZRwJ1wSBwCAMVdYJkMhGSiYYDAYhmSIVyJQnDtCApTYXY0yiC51iAGCD1yucrUaEBzAoXBwAbnfOklOX4PemiCf0QQOyCJQhw6BEk7d0MlkpdBACH5BAUAADsALBAADQAQAAQAAAYmwN0uEBAajyGAMWQYHIW6QQQA0O0ACILyKLrkbqLQzpGTEJ6GYxAAIfkEBQAAOwAsEAANABAABAAABiTA3U6nExqPgKIwQDwuQzKRLrBjsQxKYwhXohAIO9ODAnDKjkEAIfkEBQAAOwAsDwANABIACQAABkPAnXBIHOp0xR0yqTwum86k8wiDTo1TnSQbFeoCIpYB8TiGDIaQ0kgQSBa7BABAKRRGu0HRtnMQSUIVAWpJIE8vTIlBACH5BAUAADsALA8AEQASAAgAAAYfQJ1wSCzqEA+jcmh5LZeWxFOJ8EyVkqsRpi0uukRBEAAh+QQFAAA7ACwPABEAEgAIAAAGWcCdcEgUBkQsAzFkMISKO4JAskAkAABKoTDaDYYAgy3nQHgGA1IuVwk8hQAZJAfSmQaE17pNIBoOOR4iMTsiC2sPaERYKwEAcAQfClhQYQMBfiyXUDsBmDtBACH5BAUAADsALA8ADQASAAkAAAZQwJ1wSBwCAMVdICkMhGSiYYDAYhmSIVyJQnDtCArTg3I0yiC51iAGCD1yucrUaEBzAoXBwAbnfOklOX4PemiCf0QQOyCJQhw6BEx3QyVMlkEAIfkEBWQAOwAsEAANABAABAAABibA3S4QEBqPIYAxZBgchbpBBADQ7QAIgvIouuRuotDOkZMQnoZjEAA7"
-	    }
-	  })])], 1), _c('panel', {
-	    attrs: {
-	      "title": "resize",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    attrs: {
-	      "title": "resize=stretch(default) 600 x 200 "
-	    }
-	  }, [_c('image', {
-	    staticClass: ["img"],
-	    staticStyle: {
-	      width: "600px",
-	      height: "200px",
-	      borderStyle: "solid",
-	      borderWidth: "1px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "src": _vm.img,
-	      "resize": "stretch"
-	    }
-	  })]), _c('panel', {
-	    attrs: {
-	      "title": "resize=contain 600 x 200 "
-	    }
-	  }, [_c('image', {
-	    staticClass: ["img"],
-	    staticStyle: {
-	      width: "600px",
-	      height: "200px",
-	      borderStyle: "solid",
-	      borderWidth: "1px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "src": _vm.img,
-	      "resize": "contain"
-	    }
-	  })]), _c('panel', {
-	    attrs: {
-	      "title": "resize=cover 600 x 200"
-	    }
-	  }, [_c('image', {
-	    staticClass: ["img"],
-	    staticStyle: {
-	      width: "600px",
-	      height: "200px",
-	      borderStyle: "solid",
-	      borderWidth: "1px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "src": _vm.img,
-	      "resize": "cover"
-	    }
-	  })])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue/components/input.js b/src/main/assets/vue/components/input.js
deleted file mode 100644
index 634228b..0000000
--- a/src/main/assets/vue/components/input.js
+++ /dev/null
@@ -1,796 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(28)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(29)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(30)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/input.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-9b1cdcce"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 28:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "input": {
-	    "fontSize": 60,
-	    "height": 80,
-	    "width": 750
-	  },
-	  "button": {
-	    "fontSize": 36,
-	    "width": 200,
-	    "color": "#41B883",
-	    "textAlign": "center",
-	    "paddingTop": 10,
-	    "paddingBottom": 10,
-	    "borderWidth": 2,
-	    "borderStyle": "solid",
-	    "marginRight": 20,
-	    "borderColor": "rgb(162,217,192)",
-	    "backgroundColor": "rgba(162,217,192,0.2)"
-	  }
-	}
-
-/***/ }),
-
-/***/ 29:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      txtInput: '',
-	      txtChange: '',
-	      txtReturnType: '',
-	      txtSelection: '',
-	      autofocus: false
-	    };
-	  },
-	  methods: {
-	    ready: function ready() {
-	      var self = this;
-	      setTimeout(function () {
-	        self.autofocus = true;
-	      }, 1000);
-	    },
-	    onchange: function onchange(event) {
-	      this.txtChange = event.value;
-	      console.log('onchange', event.value);
-	    },
-	    onreturn: function onreturn(event) {
-	      this.txtReturnType = event.returnKeyType;
-	      console.log('onreturn', event.type);
-	    },
-	    oninput: function oninput(event) {
-	      this.txtInput = event.value;
-	      console.log('oninput', event.value);
-	    },
-	    focus: function focus() {
-	      this.$refs['input1'].focus();
-	    },
-	    blur: function blur() {
-	      this.$refs['input1'].blur();
-	    },
-	    setRange: function setRange() {
-	      console.log(this.$refs["inputselection"]);
-	      this.$refs["inputselection"].setSelectionRange(2, 6);
-	    },
-	    getSelectionRange: function getSelectionRange() {
-	      console.log(this.$refs["inputselection"]);
-	      var self = this;
-	      this.$refs["inputselection"].getSelectionRange(function (e) {
-	        self.txtSelection = e.selectionStart + '-' + e.selectionEnd;
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 30:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('div', [_c('text', {
-	    staticStyle: {
-	      fontSize: "40px"
-	    }
-	  }, [_vm._v("oninput: " + _vm._s(_vm.txtInput))]), _c('text', {
-	    staticStyle: {
-	      fontSize: "40px"
-	    }
-	  }, [_vm._v("onchange: " + _vm._s(_vm.txtChange))]), _c('text', {
-	    staticStyle: {
-	      fontSize: "40px"
-	    }
-	  }, [_vm._v("onreturntype: " + _vm._s(_vm.txtReturnType))]), _c('text', {
-	    staticStyle: {
-	      fontSize: "40px"
-	    }
-	  }, [_vm._v("selection: " + _vm._s(_vm.txtSelection))])]), _c('scroller', [_c('div', [_vm._m(0), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "Input Text",
-	      "autofocus": true,
-	      "value": ""
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(1), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "password",
-	      "placeholder": "Input Password"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(2), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "url",
-	      "placeholder": "Input URL"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(3), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "email",
-	      "placeholder": "Input Email"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(4), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "tel",
-	      "placeholder": "Input Tel"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(5), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "time",
-	      "placeholder": "Input Time"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(6), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "number",
-	      "placeholder": "Input number"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(7), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "date",
-	      "placeholder": "Input Date",
-	      "max": "2017-12-12",
-	      "min": "2015-01-01"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(8), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "returnKeyType": "default"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(9), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "returnKeyType": "go"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(10), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "returnKeyType": "next"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(11), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "returnKeyType": "search"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(12), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "returnKeyType": "send"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(13), _c('input', {
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "returnKeyType": "done"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })]), _c('div', [_vm._m(14), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row",
-	      marginBottom: "16px",
-	      justifyContent: "space-between"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["button"],
-	    attrs: {
-	      "value": "Focus",
-	      "type": "primary"
-	    },
-	    on: {
-	      "click": _vm.focus
-	    }
-	  }), _c('text', {
-	    staticClass: ["button"],
-	    attrs: {
-	      "value": "Blur",
-	      "type": "primary"
-	    },
-	    on: {
-	      "click": _vm.blur
-	    }
-	  })]), _c('input', {
-	    ref: "input1",
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "Input1",
-	      "value": ""
-	    }
-	  })]), _c('div', [_vm._m(15), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row",
-	      marginBottom: "16px",
-	      justifyContent: "space-between"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["button"],
-	    attrs: {
-	      "value": "setRange",
-	      "type": "primary"
-	    },
-	    on: {
-	      "click": _vm.setRange
-	    }
-	  }), _c('text', {
-	    staticClass: ["button"],
-	    attrs: {
-	      "value": "getSelectionRange",
-	      "type": "primary"
-	    },
-	    on: {
-	      "click": _vm.getSelectionRange
-	    }
-	  })]), _c('input', {
-	    ref: "inputselection",
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input",
-	      "value": "123456789"
-	    },
-	    on: {
-	      "change": _vm.onchange,
-	      "return": _vm.onreturn,
-	      "input": _vm.oninput
-	    }
-	  })])])])
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input type = text")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input type = password")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input type = url")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input type = email")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input type = tel")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input type = time")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input type = number")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input type = date")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input return-key-type = default")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input return-key-type = go")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input return-key-type = next")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input return-key-type = search")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input return-key-type = send")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input return-key-type = done")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("function focus() & blur()")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80",
-	      padding: "20",
-	      color: "#FFFFFF"
-	    }
-	  }, [_vm._v("input selection")])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/components/list.js b/src/main/assets/vue/components/list.js
deleted file mode 100644
index 33db616..0000000
--- a/src/main/assets/vue/components/list.js
+++ /dev/null
@@ -1,266 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(31)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(32)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(33)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/list.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-2953851f"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 31:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "list": {
-	    "height": 850
-	  },
-	  "count": {
-	    "fontSize": 48,
-	    "marginTop": 10,
-	    "marginRight": 10,
-	    "marginBottom": 10,
-	    "marginLeft": 10
-	  },
-	  "indicator": {
-	    "height": 40,
-	    "width": 40,
-	    "color": "#45b5f0"
-	  },
-	  "row": {
-	    "width": 750
-	  },
-	  "item": {
-	    "justifyContent": "center",
-	    "borderBottomWidth": 2,
-	    "borderBottomColor": "#c0c0c0",
-	    "height": 100,
-	    "paddingTop": 20,
-	    "paddingRight": 20,
-	    "paddingBottom": 20,
-	    "paddingLeft": 20,
-	    "backgroundColor:active": "#00BDFF"
-	  }
-	}
-
-/***/ }),
-
-/***/ 32:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  methods: {
-	    onappear: function onappear(idx, e) {
-	      var appearId = this.rows[idx].id;
-	      console.log('+++++', appearId);
-	      var appearIds = this.appearIds;
-	      appearIds.push(appearId);
-	      this.getMinAndMaxIds(appearIds);
-	    },
-	    ondisappear: function ondisappear(idx, e) {
-	      var disAppearId = this.rows[idx].id;
-	      console.log('+++++', disAppearId);
-	      var appearIds = this.appearIds;
-	      var index = appearIds.indexOf(disAppearId);
-	      if (index > -1) {
-	        appearIds.splice(index, 1);
-	      }
-	      this.getMinAndMaxIds(appearIds);
-	    },
-	    getMinAndMaxIds: function getMinAndMaxIds(appearIds) {
-	      appearIds.sort(function (a, b) {
-	        return a - b;
-	      });
-	      this.appearIds = appearIds;
-	      this.appearMax = appearIds[appearIds.length - 1];
-	      this.appearMin = appearIds[0];
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      appearMin: 1,
-	      appearMax: 1,
-	      appearIds: [],
-	      rows: [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }, { id: 8 }, { id: 9 }, { id: 10 }, { id: 11 }, { id: 12 }, { id: 13 }, { id: 14 }, { id: 15 }, { id: 16 }, { id: 17 }, { id: 18 }, { id: 19 }, { id: 20 }, { id: 21 }, { id: 22 }, { id: 23 }, { id: 24 }, { id: 25 }, { id: 26 }, { id: 27 }, { id: 28 }, { id: 29 }]
-	    };
-	  }
-	};
-
-/***/ }),
-
-/***/ 33:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('list', {
-	    staticClass: ["list"]
-	  }, _vm._l((_vm.rows), function(v, i) {
-	    return _c('cell', {
-	      key: i,
-	      staticClass: ["row"],
-	      appendAsTree: true,
-	      attrs: {
-	        "append": "tree",
-	        "index": i
-	      },
-	      on: {
-	        "appear": function($event) {
-	          _vm.onappear(i, $event)
-	        },
-	        "disappear": function($event) {
-	          _vm.ondisappear(i, $event)
-	        }
-	      }
-	    }, [_c('div', {
-	      staticClass: ["item"]
-	    }, [_c('text', {
-	      staticClass: ["item-title"]
-	    }, [_vm._v("row " + _vm._s(v.id))])])])
-	  })), _c('text', {
-	    staticClass: ["count"],
-	    attrs: {
-	      "value": 'Appear items: ' + _vm.appearMin + ' ~ ' + _vm.appearMax
-	    }
-	  })])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/components/marquee.js b/src/main/assets/vue/components/marquee.js
deleted file mode 100644
index bccadf4..0000000
--- a/src/main/assets/vue/components/marquee.js
+++ /dev/null
@@ -1,553 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(34)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(39)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/marquee.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 34:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      marquee: {
-	        height: 30,
-	        duration: 1500,
-	        interval: 2000,
-	        list: [{ text: 'Introducing Bots on Messenger' }, { text: 'Capturing 3D 360-Stereo VR Video' }, { text: 'The Future of Video on Facebook' }, { text: 'Announcing Vue.js 2.0' }, { text: 'Not Your Average Virtual-DOM' }, { text: 'Templates, JSX, or Hyperscript?' }]
-	      }
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3),
-	    marquee: __webpack_require__(35)
-	  },
-	  methods: {
-	    marqueeChange: function marqueeChange(e) {
-	      console.log(e);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 35:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(36)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(37)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(38)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/marquee.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-34df4e3a"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 36:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "wrap": {
-	    "overflow": "hidden",
-	    "position": "relative"
-	  },
-	  "anim": {
-	    "flexDirection": "column",
-	    "position": "absolute",
-	    "transform": "translateY(0) translateZ(0)"
-	  }
-	}
-
-/***/ }),
-
-/***/ 37:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var _animation = weex.requireModule('animation');
-
-	module.exports = {
-	  props: {
-	    step: { default: 0 },
-	    count: { default: 0 },
-	    index: { default: 1 },
-	    duration: { default: 0 },
-	    interval: { default: 0 },
-	    outofview: { default: false }
-	  },
-	  created: function created() {
-	    if (this.interval > 0 && this.step > 0 && this.duration > 0) {
-	      this.run();
-	    }
-	  },
-	  methods: {
-	    run: function run() {
-	      if (this.outofview) {
-	        setTimeout(this.run.bind(this), this.interval);
-	      } else {
-	        setTimeout(function () {
-	          this.animation(this.run.bind(this));
-	        }.bind(this), this.interval);
-	      }
-	    },
-	    animation: function animation(cb) {
-	      var offset = -this.step * this.index;
-	      _animation.transition(this.$refs.anim, {
-	        styles: {
-	          transform: 'translateY(' + offset + 'px) translateZ(0)'
-	        },
-	        timingFunction: 'ease',
-	        duration: this.duration
-	      }, function () {
-	        this.index = (this.index + 1) % this.count;
-	        this.$emit('change', {
-	          index: this.index,
-	          count: this.count
-	        });
-	        cb && cb();
-	      }.bind(this));
-	    },
-	    appeared: function appeared() {
-	      this.outofview = false;
-	    },
-	    disappeared: function disappeared() {
-	      this.outofview = true;
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 38:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["wrap"],
-	    on: {
-	      "appear": _vm.appeared,
-	      "disappear": _vm.disappeared
-	    }
-	  }, [_c('div', {
-	    ref: "anim",
-	    staticClass: ["anim"]
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 39:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "Marquee",
-	      "type": "primary"
-	    }
-	  }, [_c('marquee', {
-	    style: {
-	      width: 700,
-	      height: _vm.marquee.height * 2,
-	      backgroundColor: 'rgb(223, 240, 216)',
-	      borderRadius: 8,
-	      paddingLeft: 10,
-	      paddingRight: 10
-	    },
-	    attrs: {
-	      "step": _vm.marquee.height * 2,
-	      "count": _vm.marquee.list.length,
-	      "interval": _vm.marquee.interval,
-	      "duration": _vm.marquee.duration
-	    },
-	    on: {
-	      "change": _vm.marqueeChange
-	    }
-	  }, _vm._l((_vm.marquee.list), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      style: {
-	        height: _vm.marquee.height * _vm.marquee.length,
-	        paddingTop: _vm.marquee.height * 0.5,
-	        paddingBottom: _vm.marquee.height * 0.5,
-	        overflow: 'hidden'
-	      }
-	    }, [_c('text', {
-	      style: {
-	        height: _vm.marquee.height,
-	        color: 'rgb(60, 118, 61)',
-	        fontSize: 28
-	      }
-	    }, [_vm._v(_vm._s(item.text))])])
-	  }))])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/components/navigator.js b/src/main/assets/vue/components/navigator.js
deleted file mode 100644
index 18ad0db..0000000
--- a/src/main/assets/vue/components/navigator.js
+++ /dev/null
@@ -1,1113 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(40)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(50)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/navigator.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-/* 1 */,
-/* 2 */,
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(8)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(9)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(10)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-71b34881"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 8 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "btn": {
-	    "marginBottom": 0,
-	    "alignItems": "center",
-	    "justifyContent": "center",
-	    "borderWidth": 1,
-	    "borderStyle": "solid",
-	    "borderColor": "#333333"
-	  },
-	  "btn-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "btn-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "btn-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "btn-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "btn-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "btn-link": {
-	    "borderColor": "rgba(0,0,0,0)",
-	    "borderRadius": 0
-	  },
-	  "btn-txt-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-txt-primary": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-success": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-info": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-warning": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-danger": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-link": {
-	    "color": "rgb(51,122,183)"
-	  },
-	  "btn-sz-large": {
-	    "width": 300,
-	    "height": 100,
-	    "paddingTop": 25,
-	    "paddingBottom": 25,
-	    "paddingLeft": 40,
-	    "paddingRight": 40,
-	    "borderRadius": 15
-	  },
-	  "btn-sz-middle": {
-	    "width": 240,
-	    "height": 80,
-	    "paddingTop": 15,
-	    "paddingBottom": 15,
-	    "paddingLeft": 30,
-	    "paddingRight": 30,
-	    "borderRadius": 10
-	  },
-	  "btn-sz-small": {
-	    "width": 170,
-	    "height": 60,
-	    "paddingTop": 12,
-	    "paddingBottom": 12,
-	    "paddingLeft": 25,
-	    "paddingRight": 25,
-	    "borderRadius": 7
-	  },
-	  "btn-txt-sz-large": {
-	    "fontSize": 45
-	  },
-	  "btn-txt-sz-middle": {
-	    "fontSize": 35
-	  },
-	  "btn-txt-sz-small": {
-	    "fontSize": 30
-	  }
-	}
-
-/***/ }),
-/* 9 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size]
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 11 */,
-/* 12 */,
-/* 13 */,
-/* 14 */,
-/* 15 */,
-/* 16 */,
-/* 17 */,
-/* 18 */,
-/* 19 */,
-/* 20 */,
-/* 21 */,
-/* 22 */,
-/* 23 */,
-/* 24 */,
-/* 25 */,
-/* 26 */,
-/* 27 */,
-/* 28 */,
-/* 29 */,
-/* 30 */,
-/* 31 */,
-/* 32 */,
-/* 33 */,
-/* 34 */,
-/* 35 */,
-/* 36 */,
-/* 37 */,
-/* 38 */,
-/* 39 */,
-/* 40 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var navigator = weex.requireModule('navigator');
-	var getBaseURL = __webpack_require__(41).getBaseURL;
-	module.exports = {
-	  data: function data() {
-	    return {
-	      navBarHeight: 88,
-	      title: 'Navigator',
-	      dir: 'examples',
-	      baseURL: '',
-	      subPath: weex.config.env.platform === 'Web' ? 'vue-web/' : ''
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3),
-	    navpage: __webpack_require__(42),
-	    button: __webpack_require__(7)
-	  },
-	  created: function created() {
-	    this.$getConfig(function (config) {
-	      var env = config.env;
-	      if (env.platform == 'iOS') {
-	        var scale = env.scale;
-	        var deviceWidth = env.deviceWidth / scale;
-	        this.navBarHeight = 64.0 * 750.0 / deviceWidth;
-	      }
-	    }.bind(this));
-	    this.baseURL = getBaseURL(this);
-	  },
-	  methods: {
-	    naviBarLeftItemClick: function naviBarLeftItemClick(e) {
-	      modal.toast({ message: 'naviBarLeftItemClick', duration: 2 });
-	    },
-	    naviBarRightItemClick: function naviBarRightItemClick(e) {
-	      modal.toast({ message: 'naviBarRightItemClick', duration: 2 });
-	    },
-	    push: function push() {
-	      var params = {
-	        'url': this.baseURL + this.subPath + 'vue/components/navigator.js?test=1',
-	        'animated': 'true'
-	      };
-	      navigator.push(params, function () {});
-	    },
-	    pop: function pop() {
-	      var params = {
-	        'url': this.baseURL + this.subPath + 'vue/components/navigator.js?test=1',
-	        'animated': 'true'
-	      };
-	      navigator.pop(params, function () {});
-	    }
-	  }
-	};
-
-/***/ }),
-/* 41 */
-/***/ (function(module, exports) {
-
-	/*
-	 * Licensed to the Apache Software Foundation (ASF) under one
-	 * or more contributor license agreements.  See the NOTICE file
-	 * distributed with this work for additional information
-	 * regarding copyright ownership.  The ASF licenses this file
-	 * to you under the Apache License, Version 2.0 (the
-	 * "License"); you may not use this file except in compliance
-	 * with the License.  You may obtain a copy of the License at
-	 *
-	 *   http://www.apache.org/licenses/LICENSE-2.0
-	 *
-	 * Unless required by applicable law or agreed to in writing,
-	 * software distributed under the License is distributed on an
-	 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	 * KIND, either express or implied.  See the License for the
-	 * specific language governing permissions and limitations
-	 * under the License.
-	 */
-	exports.getBaseURL = function (vm) {
-	  var bundleUrl = weex.config.bundleUrl;
-	  var nativeBase;
-	  var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/')>=0;
-	  var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0;
-	  if (isAndroidAssets) {
-	    nativeBase = 'file://assets/';
-	  }
-	  else if (isiOSAssets) {
-	    // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    nativeBase = bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1);
-	  }
-	  else {
-	    var host = 'localhost:12580';
-	    var matches = /\/\/([^\/]+?)\//.exec(weex.config.bundleUrl);
-	    if (matches && matches.length >= 2) {
-	      host = matches[1];
-	    }
-	    nativeBase = 'http://' + host + '/' + vm.dir + '/build/';
-	  }
-	  var h5Base = './vue.html?page=./' + vm.dir + '/build/';
-	  // in Native
-	  var base = nativeBase;
-	  if (typeof window === 'object') {
-	    // in Browser or WebView
-	    base = h5Base;
-	  }
-	  return base
-	}
-
-
-/***/ }),
-/* 42 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(43)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(44)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(49)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/navpage.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-4512aaf3"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 43 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "wrapper": {
-	    "position": "absolute",
-	    "top": 0,
-	    "left": 0,
-	    "right": 0,
-	    "bottom": 0,
-	    "width": 750
-	  }
-	}
-
-/***/ }),
-/* 44 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    navbar: __webpack_require__(45)
-	  },
-	  props: {
-	    dataRole: { default: 'navbar' },
-	    backgroundColor: { default: 'black' },
-	    height: { default: 88 },
-	    title: { default: "" },
-	    titleColor: { default: 'black' },
-	    rightItemSrc: { default: '' },
-	    rightItemTitle: { default: '' },
-	    rightItemColor: { default: 'black' },
-	    leftItemSrc: { default: '' },
-	    leftItemTitle: { default: '' },
-	    leftItemColor: { default: 'black' }
-	  },
-	  methods: {
-	    naviBarRightItemClick: function naviBarRightItemClick(e) {
-	      this.$emit('naviBarRightItemClick', e);
-	    },
-	    naviBarLeftItemClick: function naviBarLeftItemClick(e) {
-	      this.$emit('naviBarLeftItemClick', e);
-	    }
-	  }
-	};
-
-/***/ }),
-/* 45 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(46)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(47)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(48)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/navbar.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-4fb29e5f"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 46 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "container": {
-	    "flexDirection": "row",
-	    "position": "fixed",
-	    "top": 0,
-	    "left": 0,
-	    "right": 0,
-	    "width": 750
-	  },
-	  "right-text": {
-	    "position": "absolute",
-	    "bottom": 28,
-	    "right": 32,
-	    "textAlign": "right",
-	    "fontSize": 32,
-	    "fontFamily": "'Open Sans', sans-serif"
-	  },
-	  "left-text": {
-	    "position": "absolute",
-	    "bottom": 28,
-	    "left": 32,
-	    "textAlign": "left",
-	    "fontSize": 32,
-	    "fontFamily": "'Open Sans', sans-serif"
-	  },
-	  "center-text": {
-	    "position": "absolute",
-	    "bottom": 25,
-	    "left": 172,
-	    "right": 172,
-	    "textAlign": "center",
-	    "fontSize": 36,
-	    "fontWeight": "bold"
-	  },
-	  "left-image": {
-	    "position": "absolute",
-	    "bottom": 20,
-	    "left": 28,
-	    "width": 50,
-	    "height": 50
-	  },
-	  "right-image": {
-	    "position": "absolute",
-	    "bottom": 20,
-	    "right": 28,
-	    "width": 50,
-	    "height": 50
-	  }
-	}
-
-/***/ }),
-/* 47 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    dataRole: { default: 'navbar' },
-	    //导航条背景色
-	    backgroundColor: { default: 'black' },
-	    //导航条高度
-	    height: { default: 88 },
-	    //导航条标题 
-	    title: { default: '' },
-	    //导航条标题颜色
-	    titleColor: { default: 'black' },
-	    //右侧按钮图片
-	    rightItemSrc: { default: '' },
-	    //右侧按钮标题
-	    rightItemTitle: { default: '' },
-	    //右侧按钮标题颜色
-	    rightItemColor: { default: 'black' },
-	    //左侧按钮图片
-	    leftItemSrc: { default: '' },
-	    //左侧按钮标题
-	    leftItemTitle: { default: '' },
-	    //左侧按钮颜色
-	    leftItemColor: { default: 'black' }
-	  },
-	  methods: {
-	    onclickrightitem: function onclickrightitem(e) {
-	      this.$emit('naviBarRightItemClick');
-	    },
-	    onclickleftitem: function onclickleftitem(e) {
-	      this.$emit('naviBarLeftItemClick');
-	    }
-	  }
-	};
-
-/***/ }),
-/* 48 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["container"],
-	    style: {
-	      height: _vm.height,
-	      backgroundColor: _vm.backgroundColor
-	    },
-	    attrs: {
-	      "dataRole": _vm.dataRole
-	    }
-	  }, [(!_vm.rightItemSrc) ? _c('text', {
-	    staticClass: ["right-text"],
-	    style: {
-	      color: _vm.rightItemColor
-	    },
-	    attrs: {
-	      "naviItemPosition": "right"
-	    },
-	    on: {
-	      "click": _vm.onclickrightitem
-	    }
-	  }, [_vm._v(_vm._s(_vm.rightItemTitle))]) : _vm._e(), (_vm.rightItemSrc) ? _c('image', {
-	    staticClass: ["right-image"],
-	    attrs: {
-	      "naviItemPosition": "right",
-	      "src": _vm.rightItemSrc
-	    },
-	    on: {
-	      "click": _vm.onclickrightitem
-	    }
-	  }) : _vm._e(), (!_vm.leftItemSrc) ? _c('text', {
-	    staticClass: ["left-text"],
-	    style: {
-	      color: _vm.leftItemColor
-	    },
-	    attrs: {
-	      "naviItemPosition": "left"
-	    },
-	    on: {
-	      "click": _vm.onclickleftitem
-	    }
-	  }, [_vm._v(_vm._s(_vm.leftItemTitle))]) : _vm._e(), (_vm.leftItemSrc) ? _c('image', {
-	    staticClass: ["left-image"],
-	    attrs: {
-	      "naviItemPosition": "left",
-	      "src": _vm.leftItemSrc
-	    },
-	    on: {
-	      "click": _vm.onclickleftitem
-	    }
-	  }) : _vm._e(), _c('text', {
-	    staticClass: ["center-text"],
-	    style: {
-	      color: _vm.titleColor
-	    },
-	    attrs: {
-	      "naviItemPosition": "center"
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 49 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["wrapper"]
-	  }, [_c('navbar', {
-	    attrs: {
-	      "dataRole": _vm.dataRole,
-	      "height": _vm.height,
-	      "backgroundColor": _vm.backgroundColor,
-	      "title": _vm.title,
-	      "titleColor": _vm.titleColor,
-	      "leftItemSrc": _vm.leftItemSrc,
-	      "leftItemTitle": _vm.leftItemTitle,
-	      "leftItemColor": _vm.leftItemColor,
-	      "rightItemSrc": _vm.rightItemSrc,
-	      "rightItemTitle": _vm.rightItemTitle,
-	      "rightItemColor": _vm.rightItemColor
-	    },
-	    on: {
-	      "naviBarRightItemClick": _vm.naviBarRightItemClick,
-	      "naviBarLeftItemClick": _vm.naviBarLeftItemClick
-	    }
-	  }), _c('div', {
-	    staticClass: ["wrapper"],
-	    style: {
-	      marginTop: _vm.height
-	    }
-	  }, [_vm._t("default")], 2)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 50 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('navpage', {
-	    attrs: {
-	      "dataRole": "none",
-	      "height": _vm.navBarHeight,
-	      "title": _vm.title,
-	      "backgroundColor": "#ff5898",
-	      "titleColor": "white",
-	      "leftItemTitle": "More",
-	      "leftItemColor": "white",
-	      "rightItemSrc": "http://gtms02.alicdn.com/tps/i2/TB1ED7iMpXXXXXEXXXXWA_BHXXX-48-48.png"
-	    },
-	    on: {
-	      "naviBarLeftItemClick": _vm.naviBarLeftItemClick,
-	      "naviBarRightItemClick": _vm.naviBarRightItemClick
-	    }
-	  }, [_c('panel', {
-	    attrs: {
-	      "title": "push a new page"
-	    }
-	  }, [_c('button', {
-	    attrs: {
-	      "type": "primary",
-	      "size": "small",
-	      "value": "push"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.push($event)
-	      }
-	    }
-	  })], 1), _c('panel', {
-	    attrs: {
-	      "title": "pop to the last page"
-	    }
-	  }, [_c('button', {
-	    attrs: {
-	      "type": "success",
-	      "size": "small",
-	      "value": "pop"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.pop($event)
-	      }
-	    }
-	  })], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue/components/scroller.js b/src/main/assets/vue/components/scroller.js
deleted file mode 100644
index ef53b70..0000000
--- a/src/main/assets/vue/components/scroller.js
+++ /dev/null
@@ -1,359 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(51)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(52)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(53)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/scroller.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-77a87e3b"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 51:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "refresh-view": {
-	    "height": 120,
-	    "width": 750,
-	    "display": "flex",
-	    "MsFlexAlign": "center",
-	    "WebkitAlignItems": "center",
-	    "WebkitBoxAlign": "center",
-	    "alignItems": "center"
-	  },
-	  "refresh-arrow": {
-	    "fontSize": 30,
-	    "color": "#45b5f0"
-	  },
-	  "loading-view": {
-	    "height": 80,
-	    "width": 750,
-	    "justifyContent": "center",
-	    "alignItems": "center",
-	    "backgroundColor": "#c0c0c0"
-	  },
-	  "indicator": {
-	    "height": 40,
-	    "width": 40,
-	    "color": "#45b5f0"
-	  },
-	  "header": {
-	    "backgroundColor": "#45b5f0",
-	    "paddingTop": 20,
-	    "paddingRight": 20,
-	    "paddingBottom": 20,
-	    "paddingLeft": 20,
-	    "height": 88,
-	    "justifyContent": "center"
-	  },
-	  "header-title": {
-	    "color": "#FFFFFF",
-	    "fontWeight": "bold"
-	  },
-	  "item": {
-	    "justifyContent": "center",
-	    "borderBottomWidth": 2,
-	    "borderBottomColor": "#c0c0c0",
-	    "height": 100,
-	    "paddingTop": 20,
-	    "paddingRight": 20,
-	    "paddingBottom": 20,
-	    "paddingLeft": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 52:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var dom = weex.requireModule('dom');
-	console.log(dom);
-	module.exports = {
-	  mounted: function mounted() {
-	    var result = dom.getComponentRect(this.$refs.scroller, function (option) {
-	      console.log('getComponentRect:', option);
-	    });
-	  },
-
-	  methods: {
-	    onrefresh: function onrefresh(e) {
-	      var self = this;
-	      self.refresh_display = 'show';
-	      setTimeout(function () {
-	        self.refresh_display = 'hide';
-	      }, 3000);
-	    },
-	    onloading: function onloading(e) {
-	      var self = this;
-	      self.loading_display = 'show';
-	      setTimeout(function () {
-	        self.loading_display = 'hide';
-	      }, 3000);
-	    },
-	    pullingdown: function pullingdown(e) {
-	      var dy = e.dy;
-	      var pullingDistance = e.pullingDistance;
-	      var viewHeight = e.viewHeight;
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      refresh_display: 'hide',
-	      loading_display: 'hide',
-	      sections: [{
-	        title: 'Header 1',
-	        items: [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }]
-	      }, {
-	        title: 'Header 2',
-	        items: [{ id: 6 }, { id: 7 }, { id: 8 }, { id: 9 }, { id: 10 }, { id: 11 }]
-	      }, {
-	        title: 'Header 3',
-	        items: [{ id: 6 }, { id: 7 }, { id: 8 }, { id: 9 }, { id: 10 }, { id: 11 }]
-	      }],
-	      moreSections: [{
-	        title: 'Header 3',
-	        items: [{ id: 12 }, { id: 13 }, { id: 14 }, { id: 15 }, { id: 16 }, { id: 17 }, { id: 18 }]
-	      }, {
-	        title: 'Header 4',
-	        items: [{ id: 19 }, { id: 20 }, { id: 21 }, { id: 22 }]
-	      }, {
-	        title: 'Header 5',
-	        items: [{ id: 23 }, { id: 24 }, { id: 25 }, { id: 26 }, { id: 27 }]
-	      }, {
-	        title: 'Header 6',
-	        items: [{ id: 28 }, { id: 29 }, { id: 30 }, { id: 31 }, { id: 32 }]
-	      }]
-	    };
-	  }
-	};
-
-/***/ }),
-
-/***/ 53:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', {
-	    ref: "scroller",
-	    staticClass: ["list"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree"
-	    }
-	  }, [_c('refresh', {
-	    staticClass: ["refresh-view"],
-	    attrs: {
-	      "display": _vm.refresh_display
-	    },
-	    on: {
-	      "refresh": _vm.onrefresh,
-	      "pullingdown": _vm.pullingdown
-	    }
-	  }, [_c('img', {
-	    ref: "roate",
-	    staticStyle: {
-	      width: "50px",
-	      height: "50px"
-	    },
-	    attrs: {
-	      "id": "roate",
-	      "src": "http://gw.alicdn.com/bao/uploaded/TB1xDrVNFXXXXbEXFXXXXXXXXXX-48-48.png"
-	    }
-	  })]), _vm._l((_vm.sections), function(sec, i) {
-	    return _c('div', {
-	      key: i,
-	      staticClass: ["section"]
-	    }, [_c('div', {
-	      staticClass: ["header"]
-	    }, [_c('text', {
-	      staticClass: ["header-title"]
-	    }, [_vm._v(_vm._s(sec.title))])]), _vm._l((sec.items), function(item) {
-	      return _c('div', {
-	        key: item.index,
-	        staticClass: ["item"]
-	      }, [_c('text', {
-	        staticClass: ["item-title"]
-	      }, [_vm._v("row " + _vm._s(item.id))])])
-	    })], 2)
-	  }), _c('loading', {
-	    staticClass: ["loading-view"],
-	    attrs: {
-	      "display": _vm.loading_display
-	    },
-	    on: {
-	      "loading": _vm.onloading
-	    }
-	  }, [_c('loading-indicator', {
-	    staticStyle: {
-	      height: "60px",
-	      width: "60px"
-	    }
-	  })])], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/components/slider.js b/src/main/assets/vue/components/slider.js
deleted file mode 100644
index aeeb4b5..0000000
--- a/src/main/assets/vue/components/slider.js
+++ /dev/null
@@ -1,929 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(54)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(55)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(64)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/slider.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-e4ae44bc"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 54:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "body": {
-	    "backgroundColor": "#ffffff"
-	  },
-	  "slider": {
-	    "flexDirection": "row",
-	    "width": 690,
-	    "height": 360
-	  },
-	  "indicator": {
-	    "position": "absolute",
-	    "width": 690,
-	    "height": 420,
-	    "top": 140,
-	    "left": 240,
-	    "itemColor": "#dddddd",
-	    "itemSelectedColor": "rgb(40,96,144)"
-	  }
-	}
-
-/***/ }),
-
-/***/ 55:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var img0 = '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg';
-	var img1 = '//gw.alicdn.com/tps/i1/TB1M3sQMpXXXXakXXXXApNeJVXX-360-360.png';
-	module.exports = {
-	  data: function data() {
-	    return {
-	      eventCnt: 0,
-	      togglePlayMsg: 'pause',
-	      sliders: [{
-	        interval: 1000,
-	        autoPlay: true,
-	        sliderPages: [{
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }]
-	      }, {
-	        interval: 3000,
-	        autoPlay: true,
-	        sliderPages: [{
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }]
-	      }, {
-	        interval: 5000,
-	        autoPlay: true,
-	        sliderPages: [{
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }, {
-	          items: [{
-	            image: img0,
-	            link: '//h5.m.taobao.com/1'
-	          }, {
-	            image: img1,
-	            link: '//h5.m.taobao.com/1'
-	          }]
-	        }]
-	      }]
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3),
-	    sliderPage: __webpack_require__(56)
-	  },
-	  methods: {
-	    togglePlay: function togglePlay() {
-	      var autoPlay = this.sliders[0].autoPlay;
-	      autoPlay = !autoPlay;
-	      this.sliders[0].autoPlay = autoPlay;
-	      this.togglePlayMsg = autoPlay ? 'pause' : 'play';
-	    },
-	    handleSliderChange: function handleSliderChange() {
-	      var nowCnt = this.eventCnt + 1;
-	      this.eventCnt = nowCnt;
-	    },
-	    setInterval1: function setInterval1() {
-	      this.sliders[0].interval = 1000;
-	    },
-	    setInterval3: function setInterval3() {
-	      this.sliders[0].interval = 3000;
-	    },
-	    setInterval5: function setInterval5() {
-	      this.sliders[0].interval = 5000;
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 56:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(57)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(58)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(63)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/slider-page.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-e1f8e088"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 57:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "slider-page": {
-	    "flexDirection": "row",
-	    "justifyContent": "space-between",
-	    "width": 714,
-	    "height": 420
-	  }
-	}
-
-/***/ }),
-
-/***/ 58:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    items: { default: [] }
-	  },
-	  components: {
-	    sliderItem: __webpack_require__(59)
-	  }
-	};
-
-/***/ }),
-
-/***/ 59:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(60)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(61)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(62)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/slider-item.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-bc0e7380"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 60:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "slider-item": {
-	    "width": 348,
-	    "height": 400
-	  }
-	}
-
-/***/ }),
-
-/***/ 61:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    image: { default: '' },
-	    link: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 62:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('image', {
-	    staticClass: ["slider-item"],
-	    attrs: {
-	      "src": _vm.image
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 63:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["slider-page"]
-	  }, _vm._l((_vm.items), function(v, i) {
-	    return _c('slider-item', {
-	      key: i,
-	      attrs: {
-	        "image": v.image,
-	        "link": v.link
-	      }
-	    })
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 64:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', {
-	    staticClass: ["body"]
-	  }, [_c('panel', {
-	    attrs: {
-	      "title": "auto-play",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    attrs: {
-	      "title": "auto-play = false",
-	      "paddingBody": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: ["slider"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[1].interval,
-	      "autoPlay": "false"
-	    }
-	  }, [_c('indicator', {
-	    staticClass: ["indicator"]
-	  }), _vm._l((_vm.sliders[1].sliderPages), function(v, i) {
-	    return _c('slider-page', {
-	      key: i,
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)]), _c('panel', {
-	    attrs: {
-	      "title": "auto-play = true",
-	      "paddingBody": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: ["slider"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[0].interval,
-	      "autoPlay": _vm.sliders[0].autoPlay
-	    }
-	  }, [_c('indicator', {
-	    staticClass: ["indicator"]
-	  }), _vm._l((_vm.sliders[0].sliderPages), function(v) {
-	    return _c('slider-page', {
-	      key: v.index,
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)])], 1), _c('panel', {
-	    attrs: {
-	      "title": 'Event, ' + _vm.eventCnt + ' change',
-	      "type": "primary"
-	    }
-	  }, [_c('slider', {
-	    staticClass: ["slider"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[0].interval,
-	      "autoPlay": _vm.sliders[0].autoPlay
-	    },
-	    on: {
-	      "change": _vm.handleSliderChange
-	    }
-	  }, [_c('indicator', {
-	    staticClass: ["indicator"]
-	  }), _vm._l((_vm.sliders[0].sliderPages), function(v) {
-	    return _c('slider-page', {
-	      key: v.index,
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)]), _c('panel', {
-	    attrs: {
-	      "title": "Indicator",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    attrs: {
-	      "title": "default style",
-	      "paddingBody": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: ["slider"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[0].interval,
-	      "autoPlay": _vm.sliders[0].autoPlay
-	    },
-	    on: {
-	      "change": _vm.handleSliderChange
-	    }
-	  }, [_c('indicator', {
-	    staticClass: ["indicator"]
-	  }), _vm._l((_vm.sliders[0].sliderPages), function(v) {
-	    return _c('slider-page', {
-	      key: v.index,
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)]), _c('panel', {
-	    attrs: {
-	      "title": "width & height",
-	      "paddingBody": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: ["slider"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[0].interval,
-	      "autoPlay": _vm.sliders[0].autoPlay
-	    }
-	  }, [_c('indicator', {
-	    staticStyle: {
-	      itemColor: "#dddddd",
-	      width: "714px",
-	      height: "460px"
-	    }
-	  }), _vm._l((_vm.sliders[0].sliderPages), function(v) {
-	    return _c('slider-page', {
-	      key: v.index,
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)]), _c('panel', {
-	    attrs: {
-	      "title": "left & top",
-	      "paddingBody": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: ["slider"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[1].interval,
-	      "autoPlay": _vm.sliders[1].autoPlay
-	    }
-	  }, [_c('indicator', {
-	    staticClass: ["indicator"],
-	    staticStyle: {
-	      top: "-140px",
-	      left: "-240px"
-	    }
-	  }), _vm._l((_vm.sliders[1].sliderPages), function(v, i) {
-	    return _c('slider-page', {
-	      key: i,
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)]), _c('panel', {
-	    attrs: {
-	      "title": "itemColor & itemSelectedColor",
-	      "paddingBody": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: ["slider"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[2].interval,
-	      "autoPlay": _vm.sliders[2].autoPlay
-	    }
-	  }, [_c('indicator', {
-	    staticClass: ["indicator"],
-	    staticStyle: {
-	      itemSelectedColor: "rgb(217, 83, 79)"
-	    }
-	  }), _vm._l((_vm.sliders[2].sliderPages), function(v) {
-	    return _c('slider-page', {
-	      key: v.index,
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)]), _c('panel', {
-	    attrs: {
-	      "title": "itemSize",
-	      "paddingBody": "0"
-	    }
-	  }, [_c('slider', {
-	    staticClass: ["slider"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree",
-	      "interval": _vm.sliders[1].interval,
-	      "autoPlay": _vm.sliders[1].autoPlay
-	    }
-	  }, [_c('indicator', {
-	    staticStyle: {
-	      itemColor: "#dddddd",
-	      itemSize: "40px",
-	      top: "140px",
-	      left: "180px",
-	      width: "700px",
-	      height: "380px"
-	    }
-	  }), _vm._l((_vm.sliders[1].sliderPages), function(v, i) {
-	    return _c('slider-page', {
-	      key: i,
-	      attrs: {
-	        "items": v.items
-	      }
-	    })
-	  })], 2)])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/components/sliderinfinite.js b/src/main/assets/vue/components/sliderinfinite.js
deleted file mode 100644
index 131dd86..0000000
--- a/src/main/assets/vue/components/sliderinfinite.js
+++ /dev/null
@@ -1,197 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(65)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(66)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(67)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/sliderinfinite.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-e5bd1894"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 65:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "image": {
-	    "width": 700,
-	    "height": 300
-	  },
-	  "slider": {
-	    "marginTop": 25,
-	    "marginLeft": 25,
-	    "width": 700,
-	    "height": 300,
-	    "borderWidth": 2,
-	    "borderStyle": "solid",
-	    "borderColor": "#41B883"
-	  },
-	  "frame": {
-	    "width": 700,
-	    "height": 300,
-	    "position": "relative"
-	  }
-	}
-
-/***/ }),
-
-/***/ 66:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	Object.defineProperty(exports, "__esModule", {
-	  value: true
-	});
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	exports.default = {
-	  data: function data() {
-	    return {
-	      imageList: [{ src: 'https://gw.alicdn.com/tfs/TB1SA2wQXXXXXXDapXXXXXXXXXX-1400-600.png' }, { src: 'https://gw.alicdn.com/tfs/TB1KS_OQXXXXXcSXVXXXXXXXXXX-1400-600.png' }, { src: 'https://gw.alicdn.com/tfs/TB1Ez7XQXXXXXbNXXXXXXXXXXXX-1400-600.png' }, { src: 'https://gw.alicdn.com/tfs/TB1XLn6QXXXXXb2XpXXXXXXXXXX-1400-600.png' }]
-
-	    };
-	  }
-	};
-
-/***/ }),
-
-/***/ 67:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('slider', {
-	    staticClass: ["slider"],
-	    attrs: {
-	      "interval": "3000",
-	      "autoPlay": "true"
-	    }
-	  }, _vm._l((_vm.imageList), function(img) {
-	    return _c('div', {
-	      staticClass: ["frame"]
-	    }, [_c('image', {
-	      staticClass: ["image"],
-	      attrs: {
-	        "resize": "cover",
-	        "src": img.src
-	      }
-	    })])
-	  }))])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/components/tabbar.js b/src/main/assets/vue/components/tabbar.js
deleted file mode 100644
index aefc581..0000000
--- a/src/main/assets/vue/components/tabbar.js
+++ /dev/null
@@ -1,632 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(68)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(77)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/tabbar.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 41:
-/***/ (function(module, exports) {
-
-	/*
-	 * Licensed to the Apache Software Foundation (ASF) under one
-	 * or more contributor license agreements.  See the NOTICE file
-	 * distributed with this work for additional information
-	 * regarding copyright ownership.  The ASF licenses this file
-	 * to you under the Apache License, Version 2.0 (the
-	 * "License"); you may not use this file except in compliance
-	 * with the License.  You may obtain a copy of the License at
-	 *
-	 *   http://www.apache.org/licenses/LICENSE-2.0
-	 *
-	 * Unless required by applicable law or agreed to in writing,
-	 * software distributed under the License is distributed on an
-	 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	 * KIND, either express or implied.  See the License for the
-	 * specific language governing permissions and limitations
-	 * under the License.
-	 */
-	exports.getBaseURL = function (vm) {
-	  var bundleUrl = weex.config.bundleUrl;
-	  var nativeBase;
-	  var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/')>=0;
-	  var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0;
-	  if (isAndroidAssets) {
-	    nativeBase = 'file://assets/';
-	  }
-	  else if (isiOSAssets) {
-	    // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    nativeBase = bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1);
-	  }
-	  else {
-	    var host = 'localhost:12580';
-	    var matches = /\/\/([^\/]+?)\//.exec(weex.config.bundleUrl);
-	    if (matches && matches.length >= 2) {
-	      host = matches[1];
-	    }
-	    nativeBase = 'http://' + host + '/' + vm.dir + '/build/';
-	  }
-	  var h5Base = './vue.html?page=./' + vm.dir + '/build/';
-	  // in Native
-	  var base = nativeBase;
-	  if (typeof window === 'object') {
-	    // in Browser or WebView
-	    base = h5Base;
-	  }
-	  return base
-	}
-
-
-/***/ }),
-
-/***/ 68:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var getBaseURL = __webpack_require__(41).getBaseURL;
-	module.exports = {
-	  data: function data() {
-	    return {
-	      dir: 'examples',
-	      tabItems: [{
-	        index: 0,
-	        title: 'tab1',
-	        titleColor: '#000000',
-	        icon: '',
-	        image: 'http://gtms01.alicdn.com/tps/i1/TB1qw.hMpXXXXagXXXX9t7RGVXX-46-46.png',
-	        selectedImage: 'http://gtms04.alicdn.com/tps/i4/TB16jjPMpXXXXazXVXX9t7RGVXX-46-46.png',
-	        src: 'component/tabbar/tabbar-item.js?itemId=tab1',
-	        visibility: 'visible'
-	      }, {
-	        index: 1,
-	        title: 'tab2',
-	        titleColor: '#000000',
-	        icon: '',
-	        image: 'http://gtms03.alicdn.com/tps/i3/TB1LEn9MpXXXXaUXpXX9t7RGVXX-46-46.png',
-	        selectedImage: 'http://gtms02.alicdn.com/tps/i2/TB1qysbMpXXXXcnXXXX9t7RGVXX-46-46.png',
-	        src: 'component/tabbar/tabbar-item.js?itemId=tab2',
-	        visibility: 'hidden'
-	      }, {
-	        index: 2,
-	        title: 'tab3',
-	        titleColor: '#000000',
-	        icon: '',
-	        image: 'http://gtms01.alicdn.com/tps/i1/TB1B0v5MpXXXXcvXpXX9t7RGVXX-46-46.png',
-	        selectedImage: 'http://gtms04.alicdn.com/tps/i4/TB1NxY5MpXXXXcrXpXX9t7RGVXX-46-46.png',
-	        src: 'component/tabbar/tabbar-item.js?itemId=tab3',
-	        visibility: 'hidden'
-	      }]
-	    };
-	  },
-	  components: {
-	    tabbar: __webpack_require__(69)
-	  },
-	  created: function created() {
-	    var baseURL = getBaseURL(this);
-	    for (var i = 0; i < this.tabItems.length; i++) {
-	      var tabItem = this.tabItems[i];
-	      tabItem.src = baseURL + tabItem.src;
-	    }
-	  },
-	  methods: {
-	    tabBarOnClick: function tabBarOnClick(e) {
-	      console.log('tabBarOnClick', e.index);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 69:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(70)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(71)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(76)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tabbar.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-285878a6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 70:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "wrapper": {
-	    "width": 750,
-	    "position": "absolute",
-	    "top": 0,
-	    "left": 0,
-	    "right": 0,
-	    "bottom": 0
-	  },
-	  "content": {
-	    "position": "absolute",
-	    "top": 0,
-	    "left": 0,
-	    "right": 0,
-	    "bottom": 0,
-	    "marginTop": 0,
-	    "marginBottom": 88
-	  },
-	  "tabbar": {
-	    "flexDirection": "row",
-	    "position": "fixed",
-	    "bottom": 0,
-	    "left": 0,
-	    "right": 0,
-	    "height": 88
-	  }
-	}
-
-/***/ }),
-
-/***/ 71:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    tabItems: { default: [] },
-	    selectedColor: { default: '#ff0000' },
-	    unselectedColor: { default: '#000000' }
-	  },
-	  data: function data() {
-	    return {
-	      selectedIndex: 0
-	    };
-	  },
-	  components: {
-	    tabitem: __webpack_require__(72)
-	  },
-	  created: function created() {
-	    this.select(this.selectedIndex);
-	  },
-	  methods: {
-	    tabItemOnClick: function tabItemOnClick(e) {
-	      this.selectedIndex = e.index;
-	      this.select(e.index);
-	      this.$emit('tabBarOnClick', e);
-	    },
-	    select: function select(index) {
-	      for (var i = 0; i < this.tabItems.length; i++) {
-	        var tabItem = this.tabItems[i];
-	        if (i == index) {
-	          tabItem.icon = tabItem.selectedImage;
-	          tabItem.titleColor = this.selectedColor;
-	          tabItem.visibility = 'visible';
-	        } else {
-	          tabItem.icon = tabItem.image;
-	          tabItem.titleColor = this.unselectedColor;
-	          tabItem.visibility = 'hidden';
-	        }
-	      }
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 72:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(73)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(74)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(75)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tabitem.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-400b65e9"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 73:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "container": {
-	    "flex": 1,
-	    "flexDirection": "column",
-	    "alignItems": "center",
-	    "justifyContent": "center",
-	    "height": 88
-	  },
-	  "top-line": {
-	    "position": "absolute",
-	    "top": 0,
-	    "left": 0,
-	    "right": 0,
-	    "height": 2
-	  },
-	  "tab-icon": {
-	    "marginTop": 5,
-	    "width": 40,
-	    "height": 40
-	  },
-	  "tab-text": {
-	    "marginTop": 5,
-	    "textAlign": "center",
-	    "fontSize": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 74:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    index: { default: 0 },
-	    title: { default: '' },
-	    titleColor: { default: '#000000' },
-	    icon: { default: '' },
-	    backgroundColor: { default: '#ffffff' }
-	  },
-	  methods: {
-	    onclickitem: function onclickitem(e) {
-	      var params = {
-	        index: this.index
-	      };
-	      this.$emit('tabItemOnClick', params);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 75:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["container"],
-	    style: {
-	      backgroundColor: _vm.backgroundColor
-	    },
-	    on: {
-	      "click": _vm.onclickitem
-	    }
-	  }, [_c('image', {
-	    staticClass: ["top-line"],
-	    attrs: {
-	      "src": "http://gtms03.alicdn.com/tps/i3/TB1mdsiMpXXXXXpXXXXNw4JIXXX-640-4.png"
-	    }
-	  }), _c('image', {
-	    staticClass: ["tab-icon"],
-	    attrs: {
-	      "src": _vm.icon
-	    }
-	  }), _c('text', {
-	    staticClass: ["tab-text"],
-	    style: {
-	      color: _vm.titleColor
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 76:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["wrapper"]
-	  }, [_vm._l((_vm.tabItems), function(item, i) {
-	    return _c('embed', {
-	      key: i,
-	      staticClass: ["content"],
-	      style: {
-	        visibility: item.visibility
-	      },
-	      attrs: {
-	        "src": item.src,
-	        "type": "weex"
-	      }
-	    })
-	  }), _c('div', {
-	    staticClass: ["tabbar"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree"
-	    }
-	  }, _vm._l((_vm.tabItems), function(item) {
-	    return _c('tabitem', {
-	      key: item.index,
-	      attrs: {
-	        "index": item.index,
-	        "icon": item.icon,
-	        "title": item.title,
-	        "titleColor": item.titleColor
-	      },
-	      on: {
-	        "tabItemOnClick": _vm.tabItemOnClick
-	      }
-	    })
-	  }))], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 77:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      flexDirection: "column"
-	    }
-	  }, [_c('tabbar', {
-	    attrs: {
-	      "tabItems": _vm.tabItems
-	    },
-	    on: {
-	      "tabBarOnClick": _vm.tabBarOnClick
-	    }
-	  })])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/components/text.js b/src/main/assets/vue/components/text.js
deleted file mode 100644
index ec7f6c2..0000000
--- a/src/main/assets/vue/components/text.js
+++ /dev/null
@@ -1,527 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(78)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(79)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(80)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/text.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-c5678ba4"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 78:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "txt": {
-	    "marginBottom": 12,
-	    "fontSize": 40
-	  }
-	}
-
-/***/ }),
-
-/***/ 79:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(3)
-	  }
-	};
-
-/***/ }),
-
-/***/ 80:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "color",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["txt"]
-	  }, [_vm._v("default is black")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      color: "#286090"
-	    }
-	  }, [_vm._v("#286090")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      color: "#0f0"
-	    }
-	  }, [_vm._v("#0f0")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      color: "red"
-	    }
-	  }, [_vm._v("keyword")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      color: "rgb(238, 162, 54)"
-	    }
-	  }, [_vm._v("rgb(238, 162, 54)")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      color: "rgba(238, 162, 54, 0.5)"
-	    }
-	  }, [_vm._v("rgba(238, 162, 54, 0.5)")])]), _c('panel', {
-	    attrs: {
-	      "title": "font-size",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      fontSize: "32px"
-	    }
-	  }, [_vm._v("32")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      fontSize: "64px"
-	    }
-	  }, [_vm._v("64")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      fontSize: "100px"
-	    }
-	  }, [_vm._v("100")])]), _c('panel', {
-	    attrs: {
-	      "title": "font-style",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      fontStyle: "normal"
-	    }
-	  }, [_vm._v("normal")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      fontStyle: "italic"
-	    }
-	  }, [_vm._v("italic")])]), _c('panel', {
-	    attrs: {
-	      "title": "font-weight",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      fontWeight: "normal"
-	    }
-	  }, [_vm._v("normal")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      fontWeight: "bold"
-	    }
-	  }, [_vm._v("bold")])]), _c('panel', {
-	    attrs: {
-	      "title": "text-decoration",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      textDecoration: "none"
-	    }
-	  }, [_vm._v("none")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      textDecoration: "underline"
-	    }
-	  }, [_vm._v("underline")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      textDecoration: "line-through"
-	    }
-	  }, [_vm._v("line-through")])]), _c('panel', {
-	    attrs: {
-	      "title": "text-align",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      textAlign: "left"
-	    }
-	  }, [_vm._v("left")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      textAlign: "center"
-	    }
-	  }, [_vm._v("center")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      textAlign: "right"
-	    }
-	  }, [_vm._v("right")])]), _c('panel', {
-	    attrs: {
-	      "title": "text-overflow",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      lines: "1"
-	    }
-	  }, [_vm._v("no text-overflow, no text-overflow")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      textOverflow: "clip",
-	      width: "450px",
-	      lines: "1"
-	    }
-	  }, [_vm._v("text-overflow: clip, text-overflow: clip")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      textOverflow: "ellipsis",
-	      width: "450px",
-	      lines: "1"
-	    }
-	  }, [_vm._v("text-overflow: ellipsis, text-overflow: ellipsis")])]), _c('panel', {
-	    attrs: {
-	      "title": "line-height",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["txt"]
-	  }, [_vm._v("no lineheight setting")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      lineHeight: "50px"
-	    }
-	  }, [_vm._v("lineheight 50")]), _c('text', {
-	    staticClass: ["txt"],
-	    staticStyle: {
-	      lineHeight: "80px"
-	    }
-	  }, [_vm._v(" lineheight 80")])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/components/textarea.js b/src/main/assets/vue/components/textarea.js
deleted file mode 100644
index 04e13d9..0000000
--- a/src/main/assets/vue/components/textarea.js
+++ /dev/null
@@ -1,380 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(81)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(82)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(83)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/textarea.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-0dfb413b"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 81:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "textarea": {
-	    "fontSize": 30,
-	    "height": 280,
-	    "width": 400,
-	    "borderWidth": 2,
-	    "borderColor": "#cccccc"
-	  }
-	}
-
-/***/ }),
-
-/***/ 82:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      txtInput: '',
-	      txtChange: '',
-	      returnType: '',
-	      msg: ''
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3)
-	  },
-	  methods: {
-	    onchange: function onchange(event) {
-	      this.txtChange = event.value;
-	    },
-	    oninput: function oninput(event) {
-	      this.txtInput = event.value;
-	    },
-	    onreturn: function onreturn(event) {
-	      this.returnType = event.returnKeyType;
-	      this.msg = 'You are "' + this.returnType + '" ' + event.value;
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 83:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "textarea",
-	      "type": "primary"
-	    }
-	  }, [_c('textarea', {
-	    staticClass: ["textarea"],
-	    attrs: {
-	      "autofocus": "true",
-	      "returnKeyType": "done"
-	    },
-	    on: {
-	      "return": _vm.onreturn,
-	      "change": _vm.onchange,
-	      "input": _vm.oninput
-	    }
-	  }), _c('text', [_vm._v("oninput: " + _vm._s(_vm.txtInput))]), _c('text', [_vm._v("onchange: " + _vm._s(_vm.txtChange))]), _c('text', [_vm._v("enter key type: " + _vm._s(_vm.returnType))]), _c('text', [_vm._v("action: " + _vm._s(_vm.msg))])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/components/video.js b/src/main/assets/vue/components/video.js
deleted file mode 100644
index fc68718..0000000
--- a/src/main/assets/vue/components/video.js
+++ /dev/null
@@ -1,404 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(84)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(85)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(86)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/video.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-c7b2e46c"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(8)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(9)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(10)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-71b34881"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 8:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "btn": {
-	    "marginBottom": 0,
-	    "alignItems": "center",
-	    "justifyContent": "center",
-	    "borderWidth": 1,
-	    "borderStyle": "solid",
-	    "borderColor": "#333333"
-	  },
-	  "btn-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "btn-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "btn-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "btn-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "btn-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "btn-link": {
-	    "borderColor": "rgba(0,0,0,0)",
-	    "borderRadius": 0
-	  },
-	  "btn-txt-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-txt-primary": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-success": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-info": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-warning": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-danger": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-link": {
-	    "color": "rgb(51,122,183)"
-	  },
-	  "btn-sz-large": {
-	    "width": 300,
-	    "height": 100,
-	    "paddingTop": 25,
-	    "paddingBottom": 25,
-	    "paddingLeft": 40,
-	    "paddingRight": 40,
-	    "borderRadius": 15
-	  },
-	  "btn-sz-middle": {
-	    "width": 240,
-	    "height": 80,
-	    "paddingTop": 15,
-	    "paddingBottom": 15,
-	    "paddingLeft": 30,
-	    "paddingRight": 30,
-	    "borderRadius": 10
-	  },
-	  "btn-sz-small": {
-	    "width": 170,
-	    "height": 60,
-	    "paddingTop": 12,
-	    "paddingBottom": 12,
-	    "paddingLeft": 25,
-	    "paddingRight": 25,
-	    "borderRadius": 7
-	  },
-	  "btn-txt-sz-large": {
-	    "fontSize": 45
-	  },
-	  "btn-txt-sz-middle": {
-	    "fontSize": 35
-	  },
-	  "btn-txt-sz-small": {
-	    "fontSize": 30
-	  }
-	}
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size]
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 84:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "video": {
-	    "width": 750,
-	    "height": 460,
-	    "marginBottom": 80
-	  }
-	}
-
-/***/ }),
-
-/***/ 85:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      playStatus: 'play'
-	    };
-	  },
-	  components: {
-	    button: __webpack_require__(7)
-	  },
-	  methods: {
-	    pause: function pause() {
-	      this.playStatus = 'pause';
-	      modal.toast({ 'message': 'click pause' });
-	    },
-	    play: function play() {
-	      this.playStatus = 'play';
-	      modal.toast({ 'message': 'click play' });
-	    },
-	    onpause: function onpause(e) {
-	      this.playStatus = e.playStatus;
-	      modal.toast({ 'message': 'video pause' });
-	    },
-	    onstart: function onstart(e) {
-	      this.playStatus = e.playStatus;
-	      modal.toast({ 'message': 'video start' });
-	    },
-	    onfinish: function onfinish(e) {
-	      this.playStatus = e.playStatus;
-	      modal.toast({ 'message': 'video finish' });
-	    },
-	    onfail: function onfail(e) {
-	      this.playStatus = e.playStatus;
-	      modal.toast({ 'message': 'video fail' });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 86:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('video', {
-	    staticClass: ["video"],
-	    attrs: {
-	      "onpause": "onpause",
-	      "onstart": "onstart",
-	      "onfinish": "onfinish",
-	      "onfail": "onfail",
-	      "src": "http://g.tbcdn.cn/ali-wireless-h5/res/0.0.6/toy.mp4",
-	      "autoPlay": "true",
-	      "playStatus": _vm.playStatus
-	    }
-	  }), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row",
-	      justifyContent: "center"
-	    }
-	  }, [_c('button', {
-	    attrs: {
-	      "value": "Pause"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.pause($event)
-	      }
-	    }
-	  }), _c('button', {
-	    staticStyle: {
-	      marginLeft: "20px"
-	    },
-	    attrs: {
-	      "value": "Play",
-	      "type": "primary"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.play($event)
-	      }
-	    }
-	  })], 1)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/components/waterfall.js b/src/main/assets/vue/components/waterfall.js
deleted file mode 100644
index 3b05481..0000000
--- a/src/main/assets/vue/components/waterfall.js
+++ /dev/null
@@ -1,863 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(87)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(88)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(89)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/waterfall.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-127cc93e"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 87:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "page": {
-	    "backgroundColor": "#EFEFEF"
-	  },
-	  "refresh": {
-	    "height": 128,
-	    "width": 750,
-	    "flexDirection": "row",
-	    "alignItems": "center",
-	    "justifyContent": "center"
-	  },
-	  "refreshText": {
-	    "color": "#888888",
-	    "fontWeight": "bold"
-	  },
-	  "indicator": {
-	    "color": "#888888",
-	    "height": 40,
-	    "width": 40,
-	    "marginRight": 30
-	  },
-	  "header": {
-	    "backgroundColor": "#ffffff"
-	  },
-	  "banner": {
-	    "height": 377,
-	    "flexDirection": "row"
-	  },
-	  "bannerInfo": {
-	    "width": 270,
-	    "alignItems": "center",
-	    "justifyContent": "center"
-	  },
-	  "avatar": {
-	    "width": 148,
-	    "height": 108,
-	    "borderRadius": 54,
-	    "borderWidth": 4,
-	    "borderColor": "#FFFFFF",
-	    "marginBottom": 14
-	  },
-	  "name": {
-	    "fontWeight": "bold",
-	    "fontSize": 32,
-	    "color": "#ffffff",
-	    "lineHeight": 32,
-	    "textAlign": "center",
-	    "marginBottom": 16
-	  },
-	  "titleWrap": {
-	    "width": 100,
-	    "height": 24,
-	    "marginBottom": 10,
-	    "backgroundColor": "rgba(255,255,255,0.8)",
-	    "borderRadius": 12,
-	    "justifyContent": "center",
-	    "alignItems": "center"
-	  },
-	  "title": {
-	    "fontSize": 20,
-	    "color": "#000000"
-	  },
-	  "bannerPhotoWrap": {
-	    "width": 449,
-	    "height": 305,
-	    "backgroundColor": "#FFFFFF",
-	    "borderRadius": 12,
-	    "marginTop": 35,
-	    "paddingTop": 12,
-	    "paddingRight": 12,
-	    "paddingBottom": 12,
-	    "paddingLeft": 12,
-	    "flexDirection": "row",
-	    "justifyContent": "space-between",
-	    "flexWrap": "wrap"
-	  },
-	  "bannerPhoto": {
-	    "width": 137,
-	    "height": 137,
-	    "marginBottom": 6
-	  },
-	  "stickyHeader": {
-	    "position": "sticky",
-	    "height": 94,
-	    "flexDirection": "row",
-	    "paddingBottom": 6
-	  },
-	  "stickyWrapper": {
-	    "flexDirection": "row",
-	    "backgroundColor": "#00cc99",
-	    "justifyContent": "center",
-	    "alignItems": "center",
-	    "flex": 1
-	  },
-	  "stickyTextImageWrapper": {
-	    "flex": 1,
-	    "justifyContent": "center",
-	    "alignItems": "center",
-	    "flexDirection": "row"
-	  },
-	  "stickyText": {
-	    "color": "#FFFFFF",
-	    "fontWeight": "bold",
-	    "fontSize": 32,
-	    "marginRight": 12
-	  },
-	  "stickyImage": {
-	    "width": 64,
-	    "height": 64,
-	    "borderRadius": 32
-	  },
-	  "cell": {
-	    "paddingTop": 6,
-	    "paddingBottom": 6
-	  },
-	  "item": {
-	    "backgroundColor": "#FFFFFF",
-	    "alignItems": "center"
-	  },
-	  "itemName": {
-	    "fontSize": 28,
-	    "color": "#333333",
-	    "lineHeight": 42,
-	    "textAlign": "left",
-	    "marginTop": 24
-	  },
-	  "itemPhoto": {
-	    "marginTop": 18,
-	    "width": 220,
-	    "height": 220,
-	    "marginBottom": 18
-	  },
-	  "itemDesc": {
-	    "fontSize": 24,
-	    "marginTop": 12,
-	    "marginRight": 12,
-	    "marginBottom": 12,
-	    "marginLeft": 12,
-	    "color": "#999999",
-	    "lineHeight": 36,
-	    "textAlign": "left"
-	  },
-	  "itemClickBehaviour": {
-	    "fontSize": 36,
-	    "color": "#00cc99",
-	    "lineHeight": 36,
-	    "textAlign": "center",
-	    "marginTop": 6,
-	    "marginLeft": 24,
-	    "marginRight": 24,
-	    "marginBottom": 30
-	  },
-	  "fixedItem": {
-	    "position": "fixed",
-	    "width": 78,
-	    "height": 78,
-	    "backgroundColor": "#00cc99",
-	    "right": 32,
-	    "bottom": 32,
-	    "borderRadius": 39,
-	    "alignItems": "center",
-	    "justifyContent": "center"
-	  },
-	  "fixedText": {
-	    "fontSize": 36,
-	    "color": "#FFFFFF",
-	    "lineHeight": 36
-	  }
-	}
-
-/***/ }),
-
-/***/ 88:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	Object.defineProperty(exports, "__esModule", {
-	  value: true
-	});
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	exports.default = {
-	  data: function data() {
-	    var items = [{
-	      src: 'https://gw.alicdn.com/tps/TB1Jl1CPFXXXXcJXXXXXXXXXXXX-370-370.jpg',
-	      name: 'Thomas Carlyle',
-	      desc: 'Genius only means hard-working all one\'s life',
-	      behaviourName: 'Change count',
-	      behaviour: 'changeColumnCount'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1Hv1JPFXXXXa3XXXXXXXXXXXX-370-370.jpg',
-	      desc: 'The man who has made up his mind to win will never say "impossible "',
-	      behaviourName: 'Change gap',
-	      behaviour: 'changeColumnGap'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1eNKuPFXXXXc_XpXXXXXXXXXX-370-370.jpg',
-	      desc: 'There is no such thing as a great talent without great will - power',
-	      behaviourName: 'Show scrollbar',
-	      behaviour: 'showScrollbar'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1DCh8PFXXXXX7aXXXXXXXXXXX-370-370.jpg',
-	      name: 'Addison',
-	      desc: 'Cease to struggle and you cease to live',
-	      behaviourName: 'Change width',
-	      behaviour: 'changeColumnWidth'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1ACygPFXXXXXwXVXXXXXXXXXX-370-370.jpg',
-	      desc: 'A strong man will struggle with the storms of fate',
-	      behaviourName: 'Listen appear',
-	      behaviour: 'listenAppear'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1IGShPFXXXXaqXVXXXXXXXXXX-370-370.jpg',
-	      name: 'Ruskin',
-	      desc: 'Living without an aim is like sailing without a compass',
-	      behaviourName: 'Set scrollable',
-	      behaviour: 'setScrollable'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1xU93PFXXXXXHaXXXXXXXXXXX-240-240.jpg',
-	      behaviourName: 'waterfall padding',
-	      behaviour: 'setPadding'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB19hu0PFXXXXaXaXXXXXXXXXXX-240-240.jpg',
-	      name: 'Balzac',
-	      desc: 'There is no such thing as a great talent without great will - power',
-	      behaviourName: 'listen scroll',
-	      behaviour: 'listenScroll'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1ux2vPFXXXXbkXXXXXXXXXXXX-240-240.jpg',
-	      behaviourName: 'Remove cell',
-	      behaviour: 'removeCell'
-	    }, {
-	      src: 'https://gw.alicdn.com/tps/TB1tCCWPFXXXXa7aXXXXXXXXXXX-240-240.jpg',
-	      behaviourName: 'Move cell',
-	      behaviour: 'moveCell'
-	    }];
-
-	    var repeatItems = [];
-	    for (var i = 0; i < 3; i++) {
-	      repeatItems.push.apply(repeatItems, items);
-	    }
-
-	    return {
-	      padding: 0,
-	      refreshing: false,
-	      refreshText: '↓   pull to refresh...',
-	      columnCount: 2,
-	      columnGap: 12,
-	      columnWidth: 'auto',
-	      contentOffset: '0',
-	      showHeader: true,
-	      showScrollbar: false,
-	      scrollable: true,
-	      showStickyHeader: false,
-	      appearImage: null,
-	      disappearImage: null,
-	      stickyHeaderType: 'none',
-	      banner: {
-	        photos: [{ src: 'https://gw.alicdn.com/tps/TB1JyaCPFXXXXc9XXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1MwSFPFXXXXbdXXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1U8avPFXXXXaDXpXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB17Xh8PFXXXXbkaXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1cTmLPFXXXXXRXXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1oCefPFXXXXbVXVXXXXXXXXXX-140-140.jpg' }]
-	      },
-	      items: repeatItems
-	    };
-	  },
-
-	  methods: {
-	    recylerScroll: function recylerScroll(e) {
-	      this.contentOffset = e.contentOffset.y;
-	    },
-	    showOrRemoveHeader: function showOrRemoveHeader() {
-	      this.showHeader = !this.showHeader;
-	    },
-	    onItemclick: function onItemclick(behaviour, index) {
-	      console.log('click...' + behaviour + ' at index ' + index);
-	      switch (behaviour) {
-	        case 'changeColumnCount':
-	          this.changeColumnCount();
-	          break;
-	        case 'changeColumnGap':
-	          this.changeColumnGap();
-	          break;
-	        case 'changeColumnWidth':
-	          this.changeColumnWidth();
-	          break;
-	        case 'showScrollbar':
-	          this.showOrHideScrollbar();
-	          break;
-	        case 'listenAppear':
-	          this.listenAppearAndDisappear();
-	          break;
-	        case 'setScrollable':
-	          this.setScrollable();
-	          break;
-	        case 'setPadding':
-	          this.setRecyclerPadding();
-	          break;
-	        case 'listenScroll':
-	          this.listenScrollEvent();
-	          break;
-	        case 'removeCell':
-	          this.removeCell(index);
-	          break;
-	        case 'moveCell':
-	          this.moveCell(index);
-	          break;
-	      }
-	    },
-
-	    itemAppear: function itemAppear(src) {
-	      this.appearImage = src;
-	    },
-
-	    itemDisappear: function itemDisappear(src) {
-	      this.disappearImage = src;
-	    },
-
-	    changeColumnCount: function changeColumnCount() {
-	      if (this.columnCount === 2) {
-	        this.columnCount = 3;
-	      } else {
-	        this.columnCount = 2;
-	      }
-	    },
-
-	    changeColumnGap: function changeColumnGap() {
-	      if (this.columnGap === 12) {
-	        this.columnGap = 'normal';
-	      } else {
-	        this.columnGap = 12;
-	      }
-	    },
-
-	    changeColumnWidth: function changeColumnWidth() {
-	      if (this.columnWidth === 'auto') {
-	        this.columnWidth = 600;
-	      } else {
-	        this.columnWidth = 'auto';
-	      }
-	    },
-
-	    showOrHideScrollbar: function showOrHideScrollbar() {
-	      this.showScrollbar = !this.showScrollbar;
-	    },
-
-	    setScrollable: function setScrollable() {
-	      this.scrollable = !this.scrollable;
-	    },
-
-	    listenAppearAndDisappear: function listenAppearAndDisappear() {
-	      this.stickyHeaderType = this.stickyHeaderType === 'appear' ? 'none' : 'appear';
-	    },
-
-	    listenScrollEvent: function listenScrollEvent() {
-	      this.stickyHeaderType = this.stickyHeaderType === 'scroll' ? 'none' : 'scroll';
-	    },
-
-	    scrollToTop: function scrollToTop() {
-	      // weex.requireModule('dom').scrollToElement(this.$refs.cell0)
-	      weex.requireModule('dom').scrollToElement(this.$refs.header);
-	    },
-
-	    setRecyclerPadding: function setRecyclerPadding() {
-	      debugger;
-	      this.padding = this.padding == 0 ? 12 : 0;
-	    },
-
-	    removeCell: function removeCell(index) {
-	      this.items.splice(index, 1);
-	    },
-
-	    moveCell: function moveCell(index) {
-
-	      if (index == 0) {
-	        this.items.splice(this.items.length - 1, 0, this.items.splice(index, 1)[0]);
-	      } else {
-	        this.items.splice(0, 0, this.items.splice(index, 1)[0]);
-	      }
-	    },
-
-	    onrefresh: function onrefresh(event) {
-	      var _this = this;
-
-	      this.refreshing = true;
-	      this.refreshText = "loading...";
-	      setTimeout(function () {
-	        _this.refreshing = false;
-	        _this.refreshText = '↓   pull to refresh...';
-	      }, 2000);
-	    },
-	    onpullingdown: function onpullingdown(event) {
-	      // console.log(`${event.pullingDistance}`)
-	      if (event.pullingDistance < -64) {
-	        this.refreshText = '↑   release to refresh...';
-	      } else {
-	        this.refreshText = '↓   pull to refresh...';
-	      }
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 89:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('waterfall', {
-	    staticClass: ["page"],
-	    style: {
-	      padding: _vm.padding
-	    },
-	    attrs: {
-	      "columnWidth": _vm.columnWidth,
-	      "columnCount": _vm.columnCount,
-	      "columnGap": _vm.columnGap,
-	      "showScrollbar": _vm.showScrollbar,
-	      "scrollable": _vm.scrollable
-	    },
-	    on: {
-	      "scroll": _vm.recylerScroll
-	    }
-	  }, [_c('refresh', {
-	    staticClass: ["refresh"],
-	    attrs: {
-	      "display": _vm.refreshing ? 'show' : 'hide'
-	    },
-	    on: {
-	      "refresh": _vm.onrefresh,
-	      "pullingdown": _vm.onpullingdown
-	    }
-	  }, [_c('loading-indicator', {
-	    staticClass: ["indicator"]
-	  }), _c('text', {
-	    staticClass: ["refreshText"]
-	  }, [_vm._v(_vm._s(_vm.refreshText))])]), (_vm.showHeader) ? _c('header', {
-	    ref: "header",
-	    staticClass: ["header"]
-	  }, [_c('div', {
-	    staticClass: ["banner"],
-	    attrs: {
-	      "src": "https://gw.alicdn.com/tps/TB1ESN1PFXXXXX1apXXXXXXXXXX-1000-600.jpg",
-	      "resize": "cover"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["bannerInfo"]
-	  }, [_c('image', {
-	    staticClass: ["avatar"],
-	    attrs: {
-	      "src": "https://gw.alicdn.com/tps/TB1EP9bPFXXXXbpXVXXXXXXXXXX-150-110.jpg",
-	      "resize": "cover"
-	    }
-	  }), _c('text', {
-	    staticClass: ["name"]
-	  }, [_vm._v("Adam Cat")]), _c('div', {
-	    staticClass: ["titleWrap"]
-	  }, [_c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("Genius")])])]), _c('div', {
-	    staticClass: ["bannerPhotoWrap"]
-	  }, _vm._l((_vm.banner.photos), function(photo) {
-	    return _c('image', {
-	      staticClass: ["bannerPhoto"],
-	      attrs: {
-	        "src": photo.src
-	      }
-	    })
-	  }))])]) : _vm._e(), _c('header', {
-	    staticClass: ["stickyHeader"]
-	  }, [(_vm.stickyHeaderType === 'none') ? _c('div', {
-	    staticClass: ["stickyWrapper"]
-	  }, [_c('text', {
-	    staticClass: ["stickyText"]
-	  }, [_vm._v("Sticky Header")])]) : _vm._e(), (_vm.stickyHeaderType === 'appear') ? _c('div', {
-	    staticClass: ["stickyWrapper"]
-	  }, [_c('div', {
-	    staticClass: ["stickyTextImageWrapper"]
-	  }, [_c('text', {
-	    staticClass: ["stickyText"]
-	  }, [_vm._v("Last Appear:")]), _c('image', {
-	    staticClass: ["stickyImage"],
-	    attrs: {
-	      "src": _vm.appearImage
-	    }
-	  })]), _c('div', {
-	    staticClass: ["stickyTextImageWrapper"]
-	  }, [_c('text', {
-	    staticClass: ["stickyText"]
-	  }, [_vm._v("Last Disappear:")]), _c('image', {
-	    staticClass: ["stickyImage"],
-	    attrs: {
-	      "src": _vm.disappearImage
-	    }
-	  })])]) : _vm._e(), (_vm.stickyHeaderType === 'scroll') ? _c('div', {
-	    staticClass: ["stickyWrapper"]
-	  }, [_c('text', {
-	    staticClass: ["stickyText"]
-	  }, [_vm._v("Content Offset:" + _vm._s(_vm.contentOffset))])]) : _vm._e()]), _vm._l((_vm.items), function(item, index) {
-	    return _c('cell', {
-	      key: index,
-	      ref: ("cell" + index),
-	      refInFor: true,
-	      staticClass: ["cell"],
-	      appendAsTree: true,
-	      attrs: {
-	        "append": "tree"
-	      }
-	    }, [_c('div', {
-	      staticClass: ["item"],
-	      on: {
-	        "click": function($event) {
-	          _vm.onItemclick(item.behaviour, index)
-	        },
-	        "appear": function($event) {
-	          _vm.itemAppear(item.src)
-	        },
-	        "disappear": function($event) {
-	          _vm.itemDisappear(item.src)
-	        }
-	      }
-	    }, [(item.name) ? _c('text', {
-	      staticClass: ["itemName"]
-	    }, [_vm._v(_vm._s(item.name))]) : _vm._e(), _c('image', {
-	      staticClass: ["itemPhoto"],
-	      attrs: {
-	        "src": item.src
-	      }
-	    }), (item.desc) ? _c('text', {
-	      staticClass: ["itemDesc"]
-	    }, [_vm._v(_vm._s(item.desc))]) : _vm._e(), (item.behaviourName) ? _c('text', {
-	      staticClass: ["itemClickBehaviour"]
-	    }, [_vm._v(" " + _vm._s(item.behaviourName))]) : _vm._e()])])
-	  }), _c('div', {
-	    staticClass: ["fixedItem"],
-	    on: {
-	      "click": _vm.scrollToTop
-	    }
-	  }, [_c('text', {
-	    staticClass: ["fixedText"]
-	  }, [_vm._v("Top")])])], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/components/web.js b/src/main/assets/vue/components/web.js
deleted file mode 100644
index d026a59..0000000
--- a/src/main/assets/vue/components/web.js
+++ /dev/null
@@ -1,467 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(90)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(91)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(92)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/components/web.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-cba25c3a"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(8)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(9)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(10)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-71b34881"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 8:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "btn": {
-	    "marginBottom": 0,
-	    "alignItems": "center",
-	    "justifyContent": "center",
-	    "borderWidth": 1,
-	    "borderStyle": "solid",
-	    "borderColor": "#333333"
-	  },
-	  "btn-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "btn-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "btn-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "btn-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "btn-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "btn-link": {
-	    "borderColor": "rgba(0,0,0,0)",
-	    "borderRadius": 0
-	  },
-	  "btn-txt-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-txt-primary": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-success": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-info": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-warning": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-danger": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-link": {
-	    "color": "rgb(51,122,183)"
-	  },
-	  "btn-sz-large": {
-	    "width": 300,
-	    "height": 100,
-	    "paddingTop": 25,
-	    "paddingBottom": 25,
-	    "paddingLeft": 40,
-	    "paddingRight": 40,
-	    "borderRadius": 15
-	  },
-	  "btn-sz-middle": {
-	    "width": 240,
-	    "height": 80,
-	    "paddingTop": 15,
-	    "paddingBottom": 15,
-	    "paddingLeft": 30,
-	    "paddingRight": 30,
-	    "borderRadius": 10
-	  },
-	  "btn-sz-small": {
-	    "width": 170,
-	    "height": 60,
-	    "paddingTop": 12,
-	    "paddingBottom": 12,
-	    "paddingLeft": 25,
-	    "paddingRight": 25,
-	    "borderRadius": 7
-	  },
-	  "btn-txt-sz-large": {
-	    "fontSize": 45
-	  },
-	  "btn-txt-sz-middle": {
-	    "fontSize": 35
-	  },
-	  "btn-txt-sz-small": {
-	    "fontSize": 30
-	  }
-	}
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size]
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 90:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "wrapper": {
-	    "width": 750,
-	    "position": "absolute",
-	    "top": 0,
-	    "left": 0,
-	    "right": 0,
-	    "bottom": 0
-	  },
-	  "content": {
-	    "position": "absolute",
-	    "top": 0,
-	    "left": 0,
-	    "right": 0,
-	    "bottom": 0,
-	    "marginTop": 0,
-	    "marginBottom": 70
-	  },
-	  "toolbar": {
-	    "flexDirection": "row",
-	    "position": "fixed",
-	    "bottom": 0,
-	    "left": 0,
-	    "right": 0,
-	    "height": 70
-	  }
-	}
-
-/***/ }),
-
-/***/ 91:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var webview = weex.requireModule('webview');
-	module.exports = {
-	  components: {
-	    button: __webpack_require__(7)
-	  },
-	  methods: {
-	    goback: function goback() {
-	      var el = this.$refs.webview;
-	      webview.goBack(el);
-	    },
-	    goforward: function goforward() {
-	      var el = this.$refs.webview;
-	      webview.goForward(el);
-	    },
-	    refresh: function refresh() {
-	      var el = this.$refs.webview;
-	      webview.reload(el);
-	    },
-	    startload: function startload(e) {},
-	    finishload: function finishload(e) {},
-	    failload: function failload(e) {}
-	  }
-	};
-
-/***/ }),
-
-/***/ 92:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["wrapper"]
-	  }, [_c('div', {
-	    staticClass: ["toolbar"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree"
-	    }
-	  }, [_c('button', {
-	    staticStyle: {
-	      marginLeft: "30px",
-	      width: "210px",
-	      marginTop: "5px",
-	      marginBottom: "5px"
-	    },
-	    attrs: {
-	      "type": "primary",
-	      "size": "small",
-	      "value": "back"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.goback($event)
-	      }
-	    }
-	  }), _c('button', {
-	    staticStyle: {
-	      marginLeft: "30px",
-	      width: "210px",
-	      marginTop: "5px",
-	      marginBottom: "5px"
-	    },
-	    attrs: {
-	      "type": "primary",
-	      "size": "small",
-	      "value": "forward"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.goforward($event)
-	      }
-	    }
-	  }), _c('button', {
-	    staticStyle: {
-	      marginLeft: "30px",
-	      width: "210px",
-	      marginTop: "5px",
-	      marginBottom: "5px"
-	    },
-	    attrs: {
-	      "type": "primary",
-	      "size": "small",
-	      "value": "refresh"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.refresh($event)
-	      }
-	    }
-	  })], 1), _c('web', {
-	    ref: "webview",
-	    staticClass: ["content"],
-	    attrs: {
-	      "src": "http://alibaba.github.io/weex/index.html"
-	    },
-	    on: {
-	      "pagestart": _vm.startload,
-	      "pagefinish": _vm.finishload,
-	      "error": _vm.failload
-	    }
-	  })])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/hello.js b/src/main/assets/vue/hello.js
deleted file mode 100644
index f8b9369..0000000
--- a/src/main/assets/vue/hello.js
+++ /dev/null
@@ -1,102 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* template */
-	var __vue_template__ = __webpack_require__(93)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/hello.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 93:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _vm._m(0)
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticStyle: {
-	      fontSize: "100px"
-	    }
-	  }, [_vm._v("Hello World.")])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/iconfont.js b/src/main/assets/vue/iconfont.js
deleted file mode 100644
index 5b7f90e..0000000
--- a/src/main/assets/vue/iconfont.js
+++ /dev/null
@@ -1,342 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(94)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(95)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(96)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/iconfont.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-f9298a60"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 94:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title1": {
-	    "color": "#FF0000",
-	    "fontSize": 36,
-	    "fontFamily": "iconfont1"
-	  },
-	  "title2": {
-	    "color": "#808080",
-	    "fontSize": 36,
-	    "fontFamily": "iconfont2"
-	  },
-	  "title3": {
-	    "color": "#FFC0CB",
-	    "fontSize": 36,
-	    "fontFamily": "iconfont3"
-	  },
-	  "title4": {
-	    "color": "#FF0000",
-	    "fontSize": 36,
-	    "fontFamily": "iconfont4"
-	  }
-	}
-
-/***/ }),
-
-/***/ 95:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  created: function created() {
-
-	    var domModule = weex.requireModule('dom');
-	    //目前支持ttf、woff文件,不支持svg、eot类型,moreItem at http://www.iconfont.cn/
-
-	    domModule.addRule('fontFace', {
-	      'fontFamily': "iconfont2",
-	      'src': "url('http://at.alicdn.com/t/font_1469606063_76593.ttf')"
-	    });
-	    domModule.addRule('fontFace', {
-	      'fontFamily': "iconfont3",
-	      'src': "url('http://at.alicdn.com/t/font_1469606522_9417143.woff')"
-	    });
-
-	    domModule.addRule('fontFace', {
-	      'fontFamily': "iconfont4",
-	      'src': "url('http://at.alicdn.com/t/font_zn5b3jswpofuhaor.ttf')"
-	    });
-
-	    // you can use the absolute path or the local:// scheme path
-	    //  domModule.addRule('fontFace', {
-	    //   'fontFamily': "iconfont4",
-	    //   'src': "url('file:///storage/emulated/0/Android/data/com.alibaba.weex/cache/http:__at.alicdn.com_t_font_1469606063_76593.ttf')"
-	    // });
-	  }
-	};
-
-/***/ }),
-
-/***/ 96:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _vm._m(0)
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', {
-	    staticStyle: {
-	      alignItems: "center"
-	    }
-	  }, [_c('div', {
-	    staticStyle: {
-	      marginTop: "20px"
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      color: "red",
-	      fontSize: "50px"
-	    }
-	  }, [_vm._v("only support font for ttf and woff")])]), _c('text', {
-	    staticClass: ["title2"],
-	    staticStyle: {
-	      marginTop: "50px",
-	      width: "500px"
-	    }
-	  }, [_vm._v("http ttf: ")]), _c('text', {
-	    staticClass: ["title3"],
-	    staticStyle: {
-	      marginTop: "50px",
-	      width: "500px"
-	    }
-	  }, [_vm._v("http woff: ")]), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row",
-	      marginTop: "50px"
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "50",
-	      color: "green"
-	    }
-	  }, [_vm._v("")]), _c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "50"
-	    }
-	  }, [_vm._v("")]), _c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "60",
-	      color: "blue"
-	    }
-	  }, [_vm._v("")]), _c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "60",
-	      color: "green"
-	    }
-	  }, [_vm._v("")])]), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row",
-	      marginTop: "50px"
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "50",
-	      color: "green"
-	    }
-	  }, [_vm._v("")]), _c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "50"
-	    }
-	  }, [_vm._v("")]), _c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "60",
-	      color: "blue"
-	    }
-	  }, [_vm._v("")]), _c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "60",
-	      color: "green"
-	    }
-	  }, [_vm._v("")])]), _c('div', [_c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "100",
-	      marginTop: "50px"
-	    }
-	  }, [_vm._v("")])]), _c('div', [_c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "100",
-	      color: "green",
-	      marginTop: "50px"
-	    }
-	  }, [_vm._v("")]), _c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "100",
-	      marginTop: "50px"
-	    }
-	  })]), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      fontFamily: "iconfont4",
-	      fontSize: "70",
-	      width: "750px"
-	    }
-	  }, [_vm._v("")])])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/index.js b/src/main/assets/vue/index.js
deleted file mode 100644
index 863d378..0000000
--- a/src/main/assets/vue/index.js
+++ /dev/null
@@ -1,546 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(97)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(109)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/index.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 41:
-/***/ (function(module, exports) {
-
-	/*
-	 * Licensed to the Apache Software Foundation (ASF) under one
-	 * or more contributor license agreements.  See the NOTICE file
-	 * distributed with this work for additional information
-	 * regarding copyright ownership.  The ASF licenses this file
-	 * to you under the Apache License, Version 2.0 (the
-	 * "License"); you may not use this file except in compliance
-	 * with the License.  You may obtain a copy of the License at
-	 *
-	 *   http://www.apache.org/licenses/LICENSE-2.0
-	 *
-	 * Unless required by applicable law or agreed to in writing,
-	 * software distributed under the License is distributed on an
-	 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	 * KIND, either express or implied.  See the License for the
-	 * specific language governing permissions and limitations
-	 * under the License.
-	 */
-	exports.getBaseURL = function (vm) {
-	  var bundleUrl = weex.config.bundleUrl;
-	  var nativeBase;
-	  var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/')>=0;
-	  var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0;
-	  if (isAndroidAssets) {
-	    nativeBase = 'file://assets/';
-	  }
-	  else if (isiOSAssets) {
-	    // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/
-	    nativeBase = bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1);
-	  }
-	  else {
-	    var host = 'localhost:12580';
-	    var matches = /\/\/([^\/]+?)\//.exec(weex.config.bundleUrl);
-	    if (matches && matches.length >= 2) {
-	      host = matches[1];
-	    }
-	    nativeBase = 'http://' + host + '/' + vm.dir + '/build/';
-	  }
-	  var h5Base = './vue.html?page=./' + vm.dir + '/build/';
-	  // in Native
-	  var base = nativeBase;
-	  if (typeof window === 'object') {
-	    // in Browser or WebView
-	    base = h5Base;
-	  }
-	  return base
-	}
-
-
-/***/ }),
-
-/***/ 97:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    var root = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' ? 'vue-web/vue' : 'vue';
-
-	    return {
-	      items: [
-	      // common
-	      { name: root + '/hello', title: 'Hello World' }, { name: root + '/style/index', title: 'Common Style' }, { name: root + '/animation', title: 'Animation' }, { name: root + '/transition', title: 'Transition' },
-
-	      // component
-	      { name: root + '/components/text', title: 'Text' }, { name: root + '/iconfont', title: 'iconfont' }, { name: root + '/components/image', title: 'Image' }, { name: root + '/components/input', title: 'Input' }, { name: root + '/components/scroller', title: 'Scroller' }, { name: root + '/components/list', title: 'List' }, { name: root + '/components/waterfall', title: 'Waterfall' }, { name: root + '/components/slider', title: 'Slider' }, { name: root + '/components/a', title: 'A' }, { name: root + '/components/video', title: 'Video' }, { name: root + '/components/countdown', title: 'Countdown' }, { name: root + '/components/marquee', title: 'Marquee' }, { name: root + '/components/web', title: 'Web' }, { name: root + '/components/navigator', title: 'Navigator' }, { name: root + '/components/tabbar', title: 'Tabbar' },
-
-	      // module
-	      { name: root + '/modules/instance-api', title: 'Instance API' }, { name: root + '/modules/modal', title: 'Modal' }, { name: root + '/modules/webSocket', title: 'WebSocket' }, { name: root + '/modules/stream', title: 'Stream' }, { name: root + '/modules/storage', title: 'Storage' }, { name: root + '/modules/picker', title: 'picker' },
-	      // {name: 'module/clipboard', title: 'Clipboard'}, // 0.8 , developing
-
-	      // showcase
-	      { name: root + '/showcase/boxshadow', title: 'boxshadow' }, { name: root + '/showcase/progress', title: 'Progress Bar' }, { name: root + '/showcase/itemlist', title: 'List (Advanced)' }, { name: root + '/showcase/calculator', title: 'Calculator' }, { name: root + '/showcase/tap-penetrate', title: 'TapPenetrate' }, { name: root + '/showcase/a-node-click', title: 'ANodeClick' },
-	      // {name: root + '/showcase/minesweeper', title: 'Minesweeper'},
-	      // {name: root + '/showcase/ui', title: 'UI Gallery'},
-	      // {name: root + '/showcase/dropdown/dropdown-demo', title: 'Dropdown'}
-
-	      // market
-	      { name: root + '/market/gcanvas', title: 'Gcanvas' }]
-	    };
-	  },
-	  components: {
-	    exampleList: __webpack_require__(98)
-	  },
-	  created: function created() {
-	    var root = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' ? 'vue-web/vue' : 'vue';
-	    var platform = this.$getConfig().env.platform.toLowerCase();
-	    if (platform === 'ios') {
-	      this.items.push({ name: root + '/showcase/compositing', title: 'Compositing' });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 98:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(99)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(108)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/example-list.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 99:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var getBaseURL = __webpack_require__(41).getBaseURL;
-	module.exports = {
-	  props: {
-	    dir: {
-	      default: 'examples'
-	    }, // examples, test ...
-	    items: {
-	      default: [{ name: 'hello', title: 'Hello World', url: '' }]
-	    }
-	  },
-	  components: {
-	    exampleListItem: __webpack_require__(100)
-	  },
-	  created: function created() {
-	    var base = getBaseURL(this);
-	    for (var i in this.items) {
-	      var item = this.items[i];
-	      if (!item.url) {
-	        item.url = base + item.name + '.js';
-	      }
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 100:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(101)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(102)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(107)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/example-list-item.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-8b7b5d80"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 101:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "item-txt": {
-	    "fontSize": 48,
-	    "color": "#555555"
-	  }
-	}
-
-/***/ }),
-
-/***/ 102:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var event = weex.requireModule('event');
-	module.exports = {
-	  props: {
-	    title: { default: '456' },
-	    url: { default: '' }
-	  },
-	  components: {
-	    listItem: __webpack_require__(103)
-	  },
-	  methods: {
-	    redirect: function redirect() {
-	      event.openURL(this.url);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 103:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(104)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(105)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(106)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/list-item.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-32b0ed3a"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 104:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "item": {
-	    "paddingTop": 25,
-	    "paddingBottom": 25,
-	    "paddingLeft": 35,
-	    "paddingRight": 35,
-	    "height": 160,
-	    "justifyContent": "center",
-	    "borderBottomWidth": 1,
-	    "borderColor": "#dddddd"
-	  }
-	}
-
-/***/ }),
-
-/***/ 105:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    bgColor: { default: '#ffffff' }
-	  },
-	  methods: {
-	    click: function click() {
-	      this.$emit('click');
-	    },
-	    touchstart: function touchstart() {
-	      // FIXME android touch
-	      // TODO adaptive opposite bgColor
-	      // this.bgColor = '#e6e6e6';
-	    },
-	    touchend: function touchend() {
-	      // FIXME android touchend not triggered
-	      // this.bgColor = '#ffffff';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 106:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["item"],
-	    style: {
-	      backgroundColor: _vm.bgColor
-	    },
-	    on: {
-	      "click": _vm.click,
-	      "touchstart": _vm.touchstart,
-	      "touchend": _vm.touchend
-	    }
-	  }, [_vm._t("default")], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 107:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list-item', {
-	    on: {
-	      "click": _vm.redirect
-	    }
-	  }, [_c('text', {
-	    staticClass: ["item-txt"]
-	  }, [_vm._v(_vm._s(_vm.title))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 108:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list', _vm._l((_vm.items), function(item, i) {
-	    return _c('cell', {
-	      key: i,
-	      appendAsTree: true,
-	      attrs: {
-	        "append": "tree"
-	      }
-	    }, [_c('example-list-item', {
-	      attrs: {
-	        "title": item.title,
-	        "url": item.url
-	      }
-	    })], 1)
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 109:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('example-list', {
-	    attrs: {
-	      "items": _vm.items,
-	      "dir": "examples"
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/market/gcanvas.js b/src/main/assets/vue/market/gcanvas.js
deleted file mode 100644
index abe7930..0000000
--- a/src/main/assets/vue/market/gcanvas.js
+++ /dev/null
@@ -1,3525 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(110)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(119)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/market/gcanvas.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 110:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-
-
-	var GCanvas = __webpack_require__(111);
-	var Image = __webpack_require__(112);
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      tagName: weex.config.env.platform === 'Web' ? 'canvas' : 'gcanvas'
-	    };
-	  },
-
-	  mounted: function mounted() {
-	    var ref = this.$refs.canvas_holder;
-	    var gcanvas = GCanvas.start(ref);
-	    var ctx = gcanvas.getContext('2d');
-
-	    ctx.fillStyle = 'red';
-	    ctx.fillRect(0, 0, 100, 100);
-
-	    ctx.fillStyle = 'black';
-	    ctx.fillRect(100, 100, 100, 100);
-	    ctx.fillRect(25, 210, 700, 5);
-
-	    ctx.arc(450, 200, 100, 0, Math.PI * 2, true);
-	    ctx.fill();
-
-	    var img = new Image();
-	    img.onload = function () {
-	      ctx.drawImage(img, 100, 200, 210, 330);
-	      // ctx.drawImage(img, 0,0,105,165, 100, 200, 210, 330);
-	    };
-	    img.src = 'https://img.alicdn.com/tps/TB1TFNdKVXXXXbeaXXXXXXXXXXX-210-330.png';
-	  }
-	};
-
-/***/ }),
-
-/***/ 111:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/**
-
-	gcanvas.js使用说明:
-	1、引入gcanvas库
-	2、调用gcanvas库的createElement(component)接口,创建一个canvas对象。
-	3、调用canvas对象的getContext(param),获取用于渲染的context。
-
-	扩展用法:
-	1、对于Android环境,部分机型可能无法运行。建议在页面入口处调用gcanvas库的start(successCallback, errorCallback)函数,进行黑白名单判断。
-	2、默认每16ms,会自动下发一次渲染指令。某些特殊场景下,希望自行控制下发频率的,可直接调用context.render()接口。调用后会关闭自动下发的操作,切换成每次主动调用render时才下发。
-
-	完整示例如下:
-	var libGCanvas = require('../../core/gcanvas');
-	libGCanvas.start(function(){
-	    nativeLog('gcanvas.start success');
-	    var canvasObj = libGCanvas.createElement(gcanvasComponent);
-	    var context = canvasObj.getContext('2d');
-	    //do any action here
-	},function(){
-	    nativeLog('gcanvas.start failed');
-	});
-
-	*/
-
-	var GImage = __webpack_require__(112);
-	var GBridge = __webpack_require__(113).GBridge;
-	var GLog = __webpack_require__(113).GLog;
-	var GContextWebGL = __webpack_require__(116);
-	var GContext2D = __webpack_require__(117);
-	var GHashMap = __webpack_require__(115);
-	var htmlPlugin = __webpack_require__(118);
-
-
-	///////////////////////////////
-	var GSupport = {};
-	var model_check;
-	var version_check;
-	GSupport.renderMode = 0;// 0--RENDERMODE_WHEN_DIRTY, 1--RENDERMODE_CONTINUOUSLY
-	GSupport.hybridLayerType = -1;// 0--LAYER_TYPE_NONE 1--LAYER_TYPE_SOFTWARE 2--LAYER_TYPE_HARDWARE. change hybrid layer type from LAYER_TYPE_SOFTWARE to unset, avoid block when use html5 audio.
-	GSupport.checkType = 0;// 0--all support, 1--white list check
-	GSupport.nativeVer = 0;
-	GSupport.defaultHiQualityMode = true; // false-- normal true--hiQuality
-	GSupport.supportScroll = false;
-	GSupport.newCanvasMode = false;             //true: GCanvasView in Webview
-	GSupport.sameLevel = false; //newCanvasMode = true && true: GCanvasView and Webview is same level;
-	GSupport.clearColor = "white";
-	GSupport.WHITE_LIST = {
-
-	    model_check : [
-	        function(info) {return info.MODEL == 'GT-I9300';},
-	        function(info) {return info.MODEL == 'GT-I9500';},
-	        function(info) {return info.MODEL == 'GT-N7108';},
-	        function(info) {return info.MODEL == 'HIKe 848A';},
-	        function(info) {return info.MODEL == 'HTC 601e';},
-	        function(info) {return info.MODEL == 'HUAWEI C8813';},
-	        function(info) {return info.MODEL == 'Lenovo K900';},
-	        function(info) {return info.MODEL == 'M351';},
-	        function(info) {return info.MODEL == 'M51w';},
-	        function(info) {return info.MODEL == 'MI 3';},
-	        function(info) {return info.MODEL == 'MI 3W';},
-	        function(info) {return info.MODEL == 'SM-G9006V';},
-	        function(info) {return info.MODEL == 'SM-N9006';}
-	    ],
-	    version_check : [
-	        function(info) {GLog.d("info.OS_RELEASE=" + info.OS_RELEASE); return false;},
-	        function(info) {return (info.OS_RELEASE >= '4.1.0')&&( info.OS_RELEASE <= '4.4.2');}
-	    ]
-	};
-
-
-	GSupport.checkList = function(successFunc, failureFunc){
-	    var checkType = GSupport.checkType;
-	    GLog.d("[checkList] checkType:" + checkType);
-	    if (1 == checkType) {//white list check
-	        var whitelist = GSupport.WHITE_LIST;
-	        var length = whitelist.length;
-	        for (var i = 0; i < length; i++) {
-	            var lenSub = whitelist[i].length;
-	            var found = false;
-	            for (var j = 0; j < lenSub; j++){
-	                if (whitelist[i][j](GDeviceInfo)) {
-	                    found = true;
-	                    break;
-	                }
-	            }
-	            if (!found){ // unfound in white list
-	                GLog.d("the device is not supported, " + GDeviceInfo.MODEL);
-	                failureFunc&&failureFunc();
-	                return;
-	            }
-	        }
-	    }
-	    successFunc&&successFunc();
-	};
-	///////////////////////////////
-
-	var GDeviceInfo = {};
-	// var _context = null;
-	// var _context_type = 0;//0--2d;1--webgl
-	///////////////////////////////
-
-	var GCanvasPlatform = GBridge.isBrowser()? 0 : 2;//0--H5;1--iOS;2--Android
-	var currentEl;
-	var contextTypes = ['2d','webgl']
-	var currentContextOfType = {};
-
-	function GCanvas(componentId)
-	{
-	    this.componentId = componentId;
-	    this.id = ++(GCanvas.idCounter);
-	}
-
-	GCanvas.idCounter = 0;
-	GCanvas.canvasMap = new GHashMap();
-
-	//-----------------------------
-	// GCanvas.start
-	//-----------------------------
-	GCanvas.start = function(el){
-	    GLog.d('gcanvas#start=====>>>');
-
-	    if (typeof WXEnvironment === 'object' && /ios/i.test(WXEnvironment.platform)) {
-	        GCanvasPlatform = 1;
-	    } else if (typeof navigator === 'object' && /ios/i.test(navigator.userAgent)) {
-	        GCanvasPlatform = 1;
-	    } else {
-	        GCanvasPlatform = 2;
-	    }
-
-	    GBridge.setup( {platform:GCanvasPlatform} );
-
-	    if(GCanvasPlatform === 0)
-	    {
-	        currentEl = el
-	        return currentEl;
-	    }
-	    else 
-	    {
-	        //bind canvas
-	        var config = [];
-	        config.push(GSupport.renderMode);
-	        config.push(GSupport.hybridLayerType);
-	        config.push(GSupport.supportScroll);
-	        config.push(GSupport.newCanvasMode);
-	        config.push(1);//compatible. 1 will call GCanvasJNI.getAllParameter("gcanvas");
-	        config.push(GSupport.clearColor);
-	        config.push(GSupport.sameLevel);
-	        GCanvas.enableRet = GBridge.callEnable(el.ref, config);
-	        var canvas = new GCanvas(el.ref);
-	        GCanvas.canvasMap.put(el.ref, canvas);
-	        return canvas;
-	    }
-	}
-
-	//-----------------------------
-	// Instance Method: getContext
-	//-----------------------------
-	GCanvas.prototype.getContext = function(contextID){
-	    GLog.d('gcanvas#getContext=====>>>');
-
-	    var context = this.context;
-	    //brower
-	    if(GCanvasPlatform === 0) {
-	        if (context){
-	            return context;//unsupport change type after create
-	        }
-	        else if(currentEl&&currentEl.getContext) {
-	            context = currentEl.getContext(contextID)
-	            if(context&&!context.render) context.render = function(){}
-	        }
-	        return context
-	    }
-
-	    if (context){
-	        return context;//unsupport change type after create
-	    }
-
-	    var context_type;
-	    if (contextID.match(/webgl/i)){
-	        context = new GContextWebGL(GCanvas.enableRet);
-	        context_type = 1;
-	    }else{
-	        context = new GContext2D();
-	        context_type = 0;
-	    }
-
-	    GBridge.setContextType(this.componentId, context_type);
-
-	    context.componentId = this.componentId;
-	    // if (!context.timer) {
-	    //    context.timer = setInterval(this.render.bind(this), 16);
-	    // }
-
-	    this.context = context;
-	    GBridge.callRegisterReattachJSCallback(this.componentId, context._clearImageTextures);
-
-	    this.startLoop();
-
-	    return context;
-	}
-
-	//-----------------------------
-	// Instance Method: render
-	//-----------------------------
-	GCanvas.prototype.render = function(){
-	    if(GCanvasPlatform !== 0 && this.context)
-	    {
-	        this.context.render("auto");
-	    }
-	}
-
-	//-----------------------------
-	// Instance Method: stopRender
-	//-----------------------------
-	GCanvas.prototype.stopRender = function(){
-	    if(!this.context){
-	        return;
-	    }
-
-	    if(this.context.timer){
-	        clearInterval(this.context.timer);
-	        this.context.timer = null;
-	    }
-	}
-
-	//-----------------------------
-	// Instance Method: startLoop
-	//-----------------------------
-	GCanvas.prototype.startLoop = function(fps){
-	    if(!this.context){
-	        return;
-	    }
-	 
-	    fps = parseInt(fps) || 16;
-	    if(!this.context.timer){
-	        this.context.timer = setInterval(this.render.bind(this),fps);
-	    }
-	}
-
-	//-----------------------------
-	// Instance Method: stopLoop
-	//-----------------------------
-	GCanvas.prototype.stopLoop = function(){
-	    if(!this.context){
-	        return;
-	    }
-	 
-	    if(this.context.timer){
-	        clearInterval(this.context.timer);
-	        this.context.timer = null;
-	    }
-	}
-
-
-	//-----------------------------
-	// Instance Method: reset
-	//-----------------------------
-	GCanvas.prototype.reset = function(){
-	    if(GCanvasPlatform !== 0){
-	        GBridge.resetComponent(this.componentId);
-	    }
-	}
-
-	//-----------------------------
-	// Instance Method: setDevicePixelRatio
-	//-----------------------------
-	GCanvas.prototype.setDevicePixelRatio = function(){
-	    if(!this.context){
-	        return;
-	    }
-
-	    GBridge.callSetDevPixelRatio(this.componentId);
-	}
-
-	//-----------------------------
-	// GCanvas.disable
-	//-----------------------------
-	GCanvas.disable = function(){
-	    // GLog.d('gcanvas#disable=====>>>');
-	    // if(GCanvasPlatform !== 0){
-	    //     GBridge.callDisable();
-	    // }
-	}
-
-	GCanvas.prototype.setup = function(support){
-	    if(!this.context){
-	        return;
-	    }
-	    var config = [];
-	    var mySupport = support || GSupport;
-
-	    for(var attr in GSupport){
-	      if(mySupport[attr] != undefined){
-	         GSupport[attr] = mySupport[attr];
-	      }
-	    }
-
-	    var config = {
-	      'renderMode':GSupport.renderMode,
-	      'hybridLayerType':GSupport.hybridLayerType,
-	      'supportScroll':GSupport.supportScroll,
-	      'sameLevel':GSupport. sameLevel,
-	      'newCanvasMode':GSupport.newCanvasMode,
-	      'clearColor': GSupport.clearColor
-	    };
-
-	    GBridge.callSetup(config, this.componentId, function(e){});
-	}
-
-	//-----------------------------
-	// GCanvas.setHiQuality
-	//-----------------------------
-	GCanvas.setHiQuality = function(){
-	    GLog.d('gcanvas#setHiQuality=====>>>' + quality);
-	    if(GCanvasPlatform !== 0) {
-	        GBridge.setHiQuality(quality);
-	    }
-	}
-
-	//-----------------------------
-	// GCanvas.setLogLevel
-	//-----------------------------
-	GCanvas.setLogLevel = function(level){
-	    GLog.d('gcanvas#setLogLevel=====>>> ' + level);
-	    if(GCanvasPlatform !== 0) {
-	        GBridge.setLogLevel(level);
-	    }
-	}
-
-	//-----------------------------
-	// GCanvas.htmlPlugin
-	//-----------------------------
-	GCanvas.htmlPlugin = htmlPlugin;
-
-	module.exports = GCanvas;
-
-
-/***/ }),
-
-/***/ 112:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var GBridge = __webpack_require__(113).GBridge;
-	var GHashMap = __webpack_require__(115);
-
-	// GCanvasImage
-	function GCanvasImage() {
-	  /**
-	   * The width of the image after it is loaded.
-	   *
-	   * @type {number}
-	   */
-	  this.width = 0;
-
-	  /**
-	   * The height of the image after it is loaded.
-	   *
-	   * @type {number}
-	   */
-	  this.height = 0;
-
-	  /**
-	   * A unique id assigned to each image upon creation.
-	   *
-	   * @type {number}
-	   */
-	  // this.id = (++GCanvasImage.idCounter);
-
-	  // this._id = this.id; // public facing "id" but _id used to internally
-	  // track image
-	  this._src = ""; // image source path
-	  this._complete = true; // "is loading" identifier for complete property
-	}
-
-	/**
-	 * Iterator for generating id values for GCanvasImage instances
-	 * internally.
-	 *
-	 * @private
-	 */
-	GCanvasImage.idCounter = 0;
-	GCanvasImage.imageMap = new GHashMap();
-
-	/**
-	 * Callback for when an image has successfully loaded a file path assigned
-	 * to {@link GCanvasImage#src}.
-	 *
-	 * @type {function}
-	 * @name GCanvasImage#onload
-	 */
-
-	/**
-	 * Callback for when an image has failed to load a file path assigned to
-	 * {@link GCanvasImage#src}.
-	 *
-	 * @type {function}
-	 * @name GCanvasImage#onerror
-	 */
-	GCanvasImage.prototype.removeEventListener = function(type, callback, force) {};
-
-	GCanvasImage.prototype.addEventListener = function(type, listener, force) {
-	  if (type === "load" && typeof listener === 'function') {
-	    this.onload = listener;
-	  }
-
-	  if (type === "error" && typeof listener === 'function') {
-	    this.onerror = listener;
-	  }
-	};
-
-	/**
-	 * The source property, identifying a URL path to the image's file location.
-	 * Upon setting this value to a file path value, the file is loaded into the
-	 * GCanvas plugin. For GCanvas images can be unloaded by setting the
-	 * src to null or "".
-	 *
-	 * @type {string}
-	 * @name GCanvasImage#src
-	 * @example var myImage = GCanvas.createImage(); myImage.onload =
-	 *          function(){ // ... myContext.drawImage(myImage, 0,0,100,100,
-	 *          0,0,100,100); GCanvas.render(); } myImage.onerror =
-	 *          function(){ console.log("Could not load image!"); } myImage.src =
-	 *          "images/spritesheet.jpg";
-	 */
-
-	Object.defineProperty(GCanvasImage.prototype, "src", {
-	  get: function() {
-	    return this._src;
-	  },
-	  set: function(src) {
-
-	    if (!src || src === this._src) {
-	      return;
-	    }
-
-	    this._src = src;
-
-	    // Loading
-	    this.complete = false;
-
-	    // callback wrappers
-	    var me = this;
-
-	    var data = GCanvasImage.imageMap.get(src);
-	    if (data) {
-	      me.id = data.id;
-	      me._id = data.id;
-	      me.complete = true;
-	      me.width = data.width;
-	      me.height = data.height;
-	      me.onload && me.onload();
-	      return;
-	    }
-
-	    this.id = (++GCanvasImage.idCounter);
-	    this._id = this.id; // public facing "id" but _id used to internally
-
-	    GBridge.preLoadImage([src, this.id], function(data) {
-	      if (typeof data === 'string') {
-	        try {
-	          data = JSON.parse(data);
-	        } catch (err) {}
-	      }
-
-	      if (data.error) {
-	        me.onerror && me.onerror();
-	      } else {
-	        me.complete = true;
-	        me.width = typeof data.width === 'number' ? data.width : 0;
-	        me.height = typeof data.height === 'number' ? data.height : 0;
-
-	        me.onload && me.onload();
-	        GCanvasImage.imageMap.put(src, data);
-	      }
-	    });
-	  }
-	});
-
-	/**
-	 * False when the image is in the process of loading an image after the src
-	 * property has been set. True when loading is complete or if src is never
-	 * set. If an error occurred when attempting to load the image, once the
-	 * process of loading is complete, despite the error, this value will still
-	 * become true.
-	 *
-	 * @type {boolean}
-	 * @name GCanvasImage#complete
-	 */
-	Object.defineProperty(GCanvasImage.prototype, "complete", {
-	  get: function() {
-	    return this._complete;
-	  },
-	  set: function(value) {
-	    this._complete = value;
-	  }
-	});
-
-	GCanvasImage.prototype.tagName = 'img';
-	GCanvasImage.prototype.getAttribute = function(name) {
-	  return this[name];
-	};
-
-	module.exports = typeof Image === 'function' ? Image : GCanvasImage;
-
-/***/ }),
-
-/***/ 113:
-/***/ (function(module, exports, __webpack_require__) {
-
-	/////////////////////////////////////////////////////////////////
-	//GBridge
-	/////////////////////////////////////////////////////////////////
-	var GLog = __webpack_require__(114).GLog;
-
-	var inWeex = typeof callNative !== 'undefined';
-	var debug = true;
-	var platform;
-	var canvasModule;
-
-	canvasModule = (typeof weex!=='undefined'&&weex.requireModule) ? ( weex.requireModule('gcanvas') ) : (__weex_require__('@weex-module/gcanvas') );
-
-	var GBridge = {
-
-	    setup: function(data){
-	        platform = data.platform;
-	    },
-
-	    isIOS: function(){
-	      return platform === 1;
-	    },
-
-	    callRegisterReattachJSCallback: function(componentId, cb){
-	      if(!inWeex){
-	        return;
-	      }
-
-	      if(typeof cb !== 'function'){
-	        return;
-	      }
-
-	      canvasModule.registerRetachFunction && canvasModule.registerRetachFunction(componentId, cb);
-	    },
-
-	    /**执行render指令*/
-	    callRender: function (componentId, commands) {
-	        if (!inWeex) {
-	            return;
-	        }
-
-	        canvasModule.render && canvasModule.render( commands, componentId );
-	    },
-
-	    /**Android use**/
-	    callSetup:function(configObj, componentId, callback){
-	        if (!inWeex) {
-	            return;
-	        }
-
-	        var config = configObj || {};
-	        //GLog.d('bridge#callRender() commands is ' + commands);
-	        canvasModule.setup && canvasModule.setup(JSON.stringify(config), componentId , callback);
-	    },
-
-	    /**预加载图片*/
-	    preLoadImage: function (image, cb) {
-	        if (!inWeex) {
-	            return;
-	        }
-
-	        //返回width和height
-	        //image[src, id]
-	        canvasModule.preLoadImage(image, function (e) {
-	            GLog.d('bridge#preLoadImage() callback, e ' + JSON.stringify(e));
-	            e.url = image[0];
-	            e.id = image[1];
-	            cb && cb(e);  
-	        });
-	    },
-
-	    /**绑定纹理*/
-	    bindImageTexture: function (componentId, src, callback) {
-	        if (!inWeex) {
-	            return;
-	        }
-
-	        canvasModule.bindImageTexture && canvasModule.bindImageTexture(src, componentId, callback);
-	    },
-
-	    /**
-	     * 获取canvas引用
-	     * @param ref wx-canvas 引用
-	     * @param configArray 配置参数
-	     **/
-	    callEnable: function (ref, configArray, callback) {
-	        if (!inWeex) {
-	            return;
-	        }
-	        var params = {
-	            componentId: ref,
-	            config:configArray
-	        };
-
-	        return canvasModule.enable && canvasModule.enable(params);
-
-	        // canvasModule.enable(params, function (e) {
-	        //     GLog.d('bridge#callEnable() return val:' + JSON.stringify(e));
-	        //     callback && callback(e);
-	        // });
-	    },
-
-	    callSetDevPixelRatio: function(componentId){
-	        if(!inWeex){
-	          return;
-	        }
-	        canvasModule.setDevicePixelRatio && canvasModule.setDevicePixelRatio(componentId);
-	    },
-
-	    /**
-	     * 获取设备信息(android)
-	     * @param callback 设备信息
-	     **/
-	    getDeviceInfo: function (callback) {
-	        if (!inWeex) {
-	            return;
-	        }
-
-	        if(this.isBrowser()){
-	            //浏览器端不实现
-	            callback && callback({
-	                data:{platform:0}
-	            });
-	        }
-	        else {
-	            canvasModule.getDeviceInfo({}, function (e) {
-	                GLog.d('bridge#getDeviceInfo() return val:' + JSON.stringify(e));
-	                callback && callback(e);
-	            });
-	        }
-
-	    },
-
-	    /**
-	     * 判断是不是浏览器
-	     *
-	     **/
-	    isBrowser: function () {
-
-	        if(!canvasModule||!canvasModule.getDeviceInfo){
-	            return true
-	        }
-	    },
-
-	    /**
-	     *
-	     * 设置context类型,2d或者webgl
-	     *
-	     * @param context_type 0代表2d,1代表3d
-	     * */
-	    setContextType: function (componentId, context_type){
-	        if(context_type != 0 && context_type != 1){
-	            GLog.d('bridge#setContextType(): invalid context type===>' + context_type);
-	            return;
-	        }
-	        GLog.d('bridge#setContextType(): context type is ' + context_type + ' componentId:' + componentId);
-	        canvasModule.setContextType(context_type, componentId);
-	    },
-
-	    /**
-	     *
-	     * 设置日志级别
-	     *
-	     * @param context_type 0代表2d,1代表3d
-	     * */
-	    setLogLevel: function (level){
-	        GLog.d('bridge#setLogLevel(): native logLevel ' + level);
-	        canvasModule.setLogLevel(level);
-	    },
-
-	    /**
-	     *
-	     * 设置opengl渲染质量
-	     *
-	     * @param context_type 0代表2d,1代表3d
-	     * */
-	    setHiQuality: function (quality){
-	        GLog.d('bridge#setHiQuality(): quality: ' + quality);
-	        canvasModule.setHiQuality(quality);
-	    },
-
-
-	    resetComponent: function(componentId){
-	        GLog.d('bridge#resetComponent(): componentId: ' + componentId);
-	        canvasModule.resetComponent && canvasModule.resetComponent(componentId);
-	    },
-
-	    exeSyncCmd: function (componentId, action, args){
-	    	GLog.d('bridge#exeSyncCmd(): action: ' + action + ',args:' + args);
-	    	return canvasModule.execGcanvaSyncCMD(action,args);
-	    }
-	};
-
-
-	module.exports = {
-	    GBridge: GBridge,
-	    GLog: GLog
-	};
-
-
-/***/ }),
-
-/***/ 114:
-/***/ (function(module, exports) {
-
-	/////////////////////////////////////////////////////////////////
-	//GLog
-	/////////////////////////////////////////////////////////////////
-	var GLOG_DEBUG	= 0;
-	var GLOG_INFO   = 1;
-	var GLOG_WARN   = 2;
-	var GLOG_ERROR	= 3;
-	var GLOG_NULL   = -1;
-	var GLog = {};
-	GLog._nullFunc = function(){};
-	GLog.d = GLog._nullFunc;
-	GLog.i = GLog._nullFunc
-	GLog.w = GLog._nullFunc;
-	GLog.e = GLog._nullFunc;
-	GLog._nativeEnable = false;
-	GLog._setNativeLevel = function(level){
-		/*
-		if (!this._nativeEnable)
-			return;
-		if (level == GLOG_DEBUG)
-			GCanvas._toNative(null, null, 'GCanvas', 'setLogLevel', [ "debug" ]);
-		else if (level == GLOG_INFO)
-			GCanvas._toNative(null, null, 'GCanvas', 'setLogLevel', [ "info" ]);
-		else if (level == GLOG_WARN)
-			GCanvas._toNative(null, null, 'GCanvas', 'setLogLevel', [ "warn" ]);
-		else if (level == GLOG_ERROR)
-			GCanvas._toNative(null, null, 'GCanvas', 'setLogLevel', [ "error" ]);
-		else 
-			GCanvas._toNative(null, null, 'GCanvas', 'setLogLevel', [ "fatal" ]);	
-	     */
-	}
-	GLog._refresh = function(){
-
-		
-		if (this.enable == false){
-			this._setNativeLevel(GLOG_NULL);
-			this.d = this._nullFunc;
-			this.i = this._nullFunc
-			this.w = this._nullFunc;
-			this.e = this._nullFunc;
-		}
-		else
-		{
-			if (this.level <= GLOG_ERROR)
-				this.e = function(msg){ console.error(msg);};
-			else
-				this.e = this._nullFunc;
-				
-			if (this.level <= GLOG_WARN)
-				this.w = function(msg){ console.warn(msg);};
-			else
-				this.w = this._nullFunc;
-			
-			if (this.level <= GLOG_INFO)
-				this.i = function(msg){ console.info(msg);
-					var args = {
-						msg:msg
-					}
-				//WindVane.call("GLog", "writeLog", args || {}, null, null);
-			};
-			else
-				this.i = this._nullFunc;
-			
-			if (this.level <= GLOG_DEBUG)
-				this.d = function(msg){ console.info(msg);
-					var args = {
-						msg:msg
-					}
-				//WindVane.call("GLog", "writeLog", args || {}, null, null);
-			};
-			else
-				this.d = this._nullFunc;
-			
-			this._setNativeLevel(this.level);	
-		}
-	}
-	GLog.enable = function(){
-		this.enable = true;
-		this._refresh();
-	}
-	GLog.disable = function(){
-		this.enable = false;
-		this._refresh();
-	}
-	GLog.setLevel = function(level){
-		console.info("[setLevel] "+ this.level + "=>" + level);
-		this.level = level;
-		this.enable = true;
-		this._refresh();
-	}
-
-	//GLog.setLevel(GLOG_WARN);
-	GLog.setLevel(GLOG_DEBUG);
-
-	module.exports.GLog = GLog
-
-/***/ }),
-
-/***/ 115:
-/***/ (function(module, exports) {
-
-	function GHashMap() {
-	    /**Map大小**/
-	    var size = 0;
-	    /**对象**/
-	    var entry = new Object();
-	    /**Map的存put方法**/
-	    this.put = function(key, value) {
-	        if (!this.containsKey(key)) {
-	            size++;
-	            entry[key] = value;
-	        }
-	    }
-	    /**Map取get方法**/
-	    this.get = function(key) {
-	        return this.containsKey(key) ? entry[key] : null;
-	    }
-	    /**Map删除remove方法**/
-	    this.remove = function(key) {
-	        if (this.containsKey(key) && (delete entry[key])) {
-	            size--;
-	        }
-	    }
-	    /**是否包含Key**/
-	    this.containsKey = function(key) {
-	        return (key in entry);
-	    }
-	    /**是否包含Value**/
-	    this.containsValue = function(value) {
-	        for (var prop in entry) {
-	            if (entry[prop] == value) {
-	                return true;
-	            }
-	        }
-	        return false;
-	    }
-	    /**所有的Value**/
-	    this.values = function() {
-	        var values = new Array();
-	        for (var prop in entry) {
-	            values.push(entry[prop]);
-	        }
-	        return values;
-	    }
-	    /**所有的 Key**/
-	    this.keys = function() {
-	        var keys = new Array();
-	        for (var prop in entry) {
-	            keys.push(prop);
-	        }
-	        return keys;
-	    }
-	    /**Map size**/
-	    this.size = function() {
-	        return size;
-	    }
-	    /**清空Map**/
-	    this.clear = function() {
-	        size = 0;
-	        entry = new Object();
-	    }
-	}
-
-	module.exports=GHashMap;
-
-/***/ }),
-
-/***/ 116:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var GBridge = __webpack_require__(113).GBridge;
-	var GLog = __webpack_require__(113).GLog;
-	var GCanvas = __webpack_require__(111);
-
-	function GContextWebGL(params){
-	    GInitWebGLFuncId(this);
-	    GInitWebGLEnum(this);
-	    GInitWebGLParams(params);
-
-	    this._drawCommands = "";
-	    this._globalAlpha = 1.0;
-	    this._fillStyle = "rgb(0,0,0)";
-	    this._strokeStyle = "rgb(0,0,0)";
-	    this._lineWidth = 1;
-	    this._lineCap = "butt";
-	    this._lineJoin= "miter";
-	    this._miterLimit = 10;
-	    this._globalCompositeOperation = "source-over";
-	    this._textAlign = "start";
-	    this._textBaseline = "alphabetic";
-	    this._font = "10px sans-serif";
-	    this._images = {};
-	    this._canvases1 = {};
-	    this._canvases2 = {};
-	    this._getImageData = new Array();
-
-	    this._uniformMgr = {};
-	    this._uniformCount = 3;
-
-	    //GCanvas._forbiddenAutoReplaceCanvas =true;
-	    //this._apiCanvas  = document.createElement('canvas');
-	    //GCanvas._forbiddenAutoReplaceCanvas =false;
-	    //console.log("apicanvas="+this._apiCanvas);
-	    //this._apiContext = this._apiCanvas.getContext("2d");
-	    //this._apiContext.font = this._font;
-
-	    this._savedGlobalAlpha =[];
-	    this.componentId = null;
-
-	    
-	}
-
-	function GInitWebGLParams(params) 
-	{
-	    // if( !params || params.length == 0 )
-	    //     return;
-
-	    // var u8ar = Gbase64ToArr(params);
-	    // GCanvas._glParams = new Int32Array(u8ar.buffer);
-
-	    // console.log("GInitWebGLParams:"+GCanvas._glParams);
-	}
-
-	//////////////////////////////////////////////////////////////////////////
-
-	function GInitWebGLFuncId(obj){
-	    var i=1;
-	    obj.activeTextureId=(i++)+",";
-	    obj.attachShaderId=(i++)+",";
-	    obj.bindAttribLocationId=(i++)+",";
-	    obj.bindBufferId=(i++)+",";
-	    obj.bindFramebufferId=(i++)+",";
-	    obj.bindRenderbufferId=(i++)+",";
-	    obj.bindTextureId=(i++)+",";
-	    obj.blendColorId=(i++)+",";
-	    obj.blendEquationId=(i++)+",";
-	    obj.blendEquationSeparateId=(i++)+",";
-	    obj.blendFuncId=(i++)+",";
-	    obj.blendFuncSeparateId=(i++)+",";
-	    obj.bufferDataId=(i++)+",";
-	    obj.bufferSubDataId=(i++)+",";
-	    obj.checkFramebufferStatusId=(i++)+",";
-	    obj.clearId=(i++)+",";
-	    obj.clearColorId=(i++)+",";
-	    obj.clearDepthId=(i++)+",";
-	    obj.clearStencilId=(i++)+",";
-	    obj.colorMaskId=(i++)+",";
-	    obj.compileShaderId=(i++)+",";
-	    obj.compressedTexImage2DId=(i++)+",";
-	    obj.compressedTexSubImage2DId=(i++)+",";
-	    obj.copyTexImage2DId=(i++)+",";
-	    obj.copyTexSubImage2DId=(i++)+",";
-	    obj.createBufferId=(i++)+",";
-	    obj.createFramebufferId=(i++)+",";
-	    obj.createProgramId=(i++)+",";
-	    obj.createRenderbufferId=(i++)+",";
-	    obj.createShaderId=(i++)+",";
-	    obj.createTextureId=(i++)+",";
-	    obj.cullFaceId=(i++)+",";
-	    obj.deleteBufferId=(i++)+",";
-	    obj.deleteFramebufferId=(i++)+",";
-	    obj.deleteProgramId=(i++)+",";
-	    obj.deleteRenderbufferId=(i++)+",";
-	    obj.deleteShaderId=(i++)+",";
-	    obj.deleteTextureId=(i++)+",";
-	    obj.depthFuncId=(i++)+",";
-	    obj.depthMaskId=(i++)+",";
-	    obj.depthRangeId=(i++)+",";
-	    obj.detachShaderId=(i++)+",";
-	    obj.disableId=(i++)+",";
-	    obj.disableVertexAttribArrayId=(i++)+",";
-	    obj.drawArraysId=(i++)+",";
-	    obj.drawArraysInstancedANGLEId=(i++)+",";
-	    obj.drawElementsId=(i++)+",";
-	    obj.drawElementsInstancedANGLEId=(i++)+",";
-	    obj.enableId=(i++)+",";
-	    obj.enableVertexAttribArrayId=(i++)+",";
-	    obj.flushId=(i++)+",";
-	    obj.framebufferRenderbufferId=(i++)+",";
-	    obj.framebufferTexture2DId=(i++)+",";
-	    obj.frontFaceId=(i++)+",";
-	    obj.generateMipmapId=(i++)+",";
-	    obj.getActiveAttribId=(i++)+",";
-	    obj.getActiveUniformId=(i++)+",";
-	    obj.getAttachedShadersId=(i++)+",";
-	    obj.getAttribLocationId=(i++)+",";
-	    obj.getBufferParameterId=(i++)+",";
-	    obj.getContextAttributesId=(i++)+",";
-	    obj.getErrorId=(i++)+",";
-	    obj.getExtensionId=(i++)+",";
-	    obj.getFramebufferAttachmentParameterId=(i++)+",";
-	    obj.getParameterId=(i++)+",";
-	    obj.getProgramInfoLogId=(i++)+",";
-	    obj.getProgramParameterId=(i++)+",";
-	    obj.getRenderbufferParameterId=(i++)+",";
-	    obj.getShaderInfoLogId=(i++)+",";
-	    obj.getShaderParameterId=(i++)+",";
-	    obj.getShaderPrecisionFormatId=(i++)+",";
-	    obj.getShaderSourceId=(i++)+",";
-	    obj.getSupportedExtensionsId=(i++)+",";
-	    obj.getTexParameterId=(i++)+",";
-	    obj.getUniformId=(i++)+",";
-	    obj.getUniformLocationId=(i++)+",";
-	    obj.getVertexAttribId=(i++)+",";
-	    obj.getVertexAttribOffsetId=(i++)+",";
-	    obj.isBufferId=(i++)+",";
-	    obj.isContextLostId=(i++)+",";
-	    obj.isEnabledId=(i++)+",";
-	    obj.isFramebufferId=(i++)+",";
-	    obj.isProgramId=(i++)+",";
-	    obj.isRenderbufferId=(i++)+",";
-	    obj.isShaderId=(i++)+",";
-	    obj.isTextureId=(i++)+",";
-	    obj.lineWidthId=(i++)+",";
-	    obj.linkProgramId=(i++)+",";
-	    obj.pixelStoreiId=(i++)+",";
-	    obj.polygonOffsetId=(i++)+",";
-	    obj.readPixelsId=(i++)+",";
-	    obj.renderbufferStorageId=(i++)+",";
-	    obj.sampleCoverageId=(i++)+",";
-	    obj.scissorId=(i++)+",";
-	    obj.shaderSourceId=(i++)+",";
-	    obj.stencilFuncId=(i++)+",";
-	    obj.stencilFuncSeparateId=(i++)+",";
-	    obj.stencilMaskId=(i++)+",";
-	    obj.stencilMaskSeparateId=(i++)+",";
-	    obj.stencilOpId=(i++)+",";
-	    obj.stencilOpSeparateId=(i++)+",";
-	    obj.texImage2DId=(i++)+",";
-	    obj.texParameterfId=(i++)+",";
-	    obj.texParameteriId=(i++)+",";
-	    obj.texSubImage2DId=(i++)+",";
-	    obj.uniform1fId=(i++)+",";
-	    obj.uniform1fvId=(i++)+",";
-	    obj.uniform1iId=(i++)+",";
-	    obj.uniform1ivId=(i++)+",";
-	    obj.uniform2fId=(i++)+",";
-	    obj.uniform2fvId=(i++)+",";
-	    obj.uniform2iId=(i++)+",";
-	    obj.uniform2ivId=(i++)+",";
-	    obj.uniform3fId=(i++)+",";
-	    obj.uniform3fvId=(i++)+",";
-	    obj.uniform3iId=(i++)+",";
-	    obj.uniform3ivId=(i++)+",";
-	    obj.uniform4fId=(i++)+",";
-	    obj.uniform4fvId=(i++)+",";
-	    obj.uniform4iId=(i++)+",";
-	    obj.uniform4ivId=(i++)+",";
-	    obj.uniformMatrix2fvId=(i++)+",";
-	    obj.uniformMatrix3fvId=(i++)+",";
-	    obj.uniformMatrix4fvId=(i++)+",";
-	    obj.useProgramId=(i++)+",";
-	    obj.validateProgramId=(i++)+",";
-	    obj.vertexAttribDivisorANGLEId=(i++)+",";
-	    obj.vertexAttrib2fvId=(i++)+",";
-	    obj.vertexAttribPointerId=(i++)+",";
-	    obj.viewportId=(i++)+",";
-
-	    //extension for OES_vertex_array_object
-	    obj.bindVertexArrayOESId=(i++)+",";
-	    obj.deleteVertexArraysOESId=(i++)+",";
-	    obj.genVertexArraysOESId=(i++)+","
-	    obj.isVertexArrayOESId=(i++)+","
-	}
-
-	function GInitWebGLEnum(obj){
-	    //GL Constant Define
-	    obj.NONE = 0x0;
-	    obj.ONE = 0x1;
-	    obj.LINE_LOOP = 0x2;
-	    obj.LINE_STRIP = 0x3;
-	    obj.TRIANGLES = 0x4;
-	    obj.TRIANGLE_STRIP = 0x5;
-	    obj.TRIANGLE_FAN = 0x6;
-	    obj.DEPTH_BUFFER_BIT = 0x100;
-	    obj.NEVER = 0x200;
-	    obj.LESS = 0x201;
-	    obj.EQUAL = 0x202;
-	    obj.LEQUAL = 0x203;
-	    obj.GREATER = 0x204;
-	    obj.NOTEQUAL = 0x205;
-	    obj.GEQUAL = 0x206;
-	    obj.ALWAYS = 0x207;
-	    obj.SRC_COLOR = 0x300;
-	    obj.ONE_MINUS_SRC_COLOR = 0x301;
-	    obj.SRC_ALPHA = 0x302;
-	    obj.ONE_MINUS_SRC_ALPHA = 0x303;
-	    obj.DST_ALPHA = 0x304;
-	    obj.ONE_MINUS_DST_ALPHA = 0x305;
-	    obj.DST_COLOR = 0x306;
-	    obj.ONE_MINUS_DST_COLOR = 0x307;
-	    obj.SRC_ALPHA_SATURATE = 0x308;
-	    obj.STENCIL_BUFFER_BIT = 0x400;
-	    obj.FRONT = 0x404;
-	    obj.BACK = 0x405;
-	    obj.FRONT_AND_BACK = 0x408;
-	    obj.INVALID_ENUM = 0x500;
-	    obj.INVALID_VALUE = 0x501;
-	    obj.INVALID_OPERATION = 0x502;
-	    obj.OUT_OF_MEMORY = 0x505;
-	    obj.INVALID_FRAMEBUFFER_OPERATION = 0x506;
-	    obj.CW = 0x900;
-	    obj.CCW = 0x901;
-	    obj.LINE_WIDTH = 0xB21;
-	    obj.CULL_FACE = 0xB44;
-	    obj.CULL_FACE_MODE = 0xB45;
-	    obj.FRONT_FACE = 0xB46;
-	    obj.DEPTH_RANGE = 0xB70;
-	    obj.DEPTH_TEST = 0xB71;
-	    obj.DEPTH_WRITEMASK = 0xB72;
-	    obj.DEPTH_CLEAR_VALUE = 0xB73;
-	    obj.DEPTH_FUNC = 0xB74;
-	    obj.STENCIL_TEST = 0xB90;
-	    obj.STENCIL_CLEAR_VALUE = 0xB91;
-	    obj.STENCIL_FUNC = 0xB92;
-	    obj.STENCIL_VALUE_MASK = 0xB93;
-	    obj.STENCIL_FAIL = 0xB94;
-	    obj.STENCIL_PASS_DEPTH_FAIL = 0xB95;
-	    obj.STENCIL_PASS_DEPTH_PASS = 0xB96;
-	    obj.STENCIL_REF = 0xB97;
-	    obj.STENCIL_WRITEMASK = 0xB98;
-	    obj.VIEWPORT = 0xBA2;
-	    obj.DITHER = 0xBD0;
-	    obj.BLEND = 0xBE2;
-	    obj.SCISSOR_BOX = 0xC10;
-	    obj.SCISSOR_TEST = 0xC11;
-	    obj.COLOR_CLEAR_VALUE = 0xC22;
-	    obj.COLOR_WRITEMASK = 0xC23;
-	    obj.UNPACK_ALIGNMENT = 0xCF5;
-	    obj.PACK_ALIGNMENT = 0xD05;
-	    obj.MAX_TEXTURE_SIZE = 0xD33;
-	    obj.MAX_VIEWPORT_DIMS = 0xD3A;
-	    obj.SUBPIXEL_BITS = 0xD50;
-	    obj.RED_BITS = 0xD52;
-	    obj.GREEN_BITS = 0xD53;
-	    obj.BLUE_BITS = 0xD54;
-	    obj.ALPHA_BITS = 0xD55;
-	    obj.DEPTH_BITS = 0xD56;
-	    obj.STENCIL_BITS = 0xD57;
-	    obj.TEXTURE_2D = 0xDE1;
-	    obj.DONT_CARE = 0x1100;
-	    obj.FASTEST = 0x1101;
-	    obj.NICEST = 0x1102;
-	    obj.BYTE = 0x1400;
-	    obj.UNSIGNED_BYTE = 0x1401;
-	    obj.SHORT = 0x1402;
-	    obj.UNSIGNED_SHORT = 0x1403;
-	    obj.INT = 0x1404;
-	    obj.UNSIGNED_INT = 0x1405;
-	    obj.FLOAT = 0x1406;
-	    obj.INVERT = 0x150A;
-	    obj.TEXTURE = 0x1702;
-	    obj.STENCIL_INDEX = 0x1901;
-	    obj.DEPTH_COMPONENT = 0x1902;
-	    obj.ALPHA = 0x1906;
-	    obj.RGB = 0x1907;
-	    obj.RGBA = 0x1908;
-	    obj.LUMINANCE = 0x1909;
-	    obj.LUMINANCE_ALPHA = 0x190A;
-	    obj.KEEP = 0x1E00;
-	    obj.REPLACE = 0x1E01;
-	    obj.INCR = 0x1E02;
-	    obj.DECR = 0x1E03;
-	    obj.VENDOR = 0x1F00;
-	    obj.RENDERER = 0x1F01;
-	    obj.VERSION = 0x1F02;
-	    obj.NEAREST = 0x2600;
-	    obj.LINEAR = 0x2601;
-	    obj.NEAREST_MIPMAP_NEAREST = 0x2700;
-	    obj.LINEAR_MIPMAP_NEAREST = 0x2701;
-	    obj.NEAREST_MIPMAP_LINEAR = 0x2702;
-	    obj.LINEAR_MIPMAP_LINEAR = 0x2703;
-	    obj.TEXTURE_MAG_FILTER = 0x2800;
-	    obj.TEXTURE_MIN_FILTER = 0x2801;
-	    obj.TEXTURE_WRAP_S = 0x2802;
-	    obj.TEXTURE_WRAP_T = 0x2803;
-	    obj.REPEAT = 0x2901;
-	    obj.POLYGON_OFFSET_UNITS = 0x2A00;
-	    obj.COLOR_BUFFER_BIT = 0x4000;
-	    obj.CONSTANT_COLOR = 0x8001;
-	    obj.ONE_MINUS_CONSTANT_COLOR = 0x8002;
-	    obj.CONSTANT_ALPHA = 0x8003;
-	    obj.ONE_MINUS_CONSTANT_ALPHA = 0x8004;
-	    obj.BLEND_COLOR = 0x8005;
-	    obj.FUNC_ADD = 0x8006;
-	    obj.BLEND_EQUATION_RGB = 0x8009;
-	    obj.FUNC_SUBTRACT = 0x800A;
-	    obj.FUNC_REVERSE_SUBTRACT = 0x800B;
-	    obj.UNSIGNED_SHORT_4_4_4_4 = 0x8033;
-	    obj.UNSIGNED_SHORT_5_5_5_1 = 0x8034;
-	    obj.POLYGON_OFFSET_FILL = 0x8037;
-	    obj.POLYGON_OFFSET_FACTOR = 0x8038;
-	    obj.RGBA4 = 0x8056;
-	    obj.RGB5_A1 = 0x8057;
-	    obj.TEXTURE_BINDING_2D = 0x8069;
-	    obj.SAMPLE_ALPHA_TO_COVERAGE = 0x809E;
-	    obj.SAMPLE_COVERAGE = 0x80A0;
-	    obj.SAMPLE_BUFFERS = 0x80A8;
-	    obj.SAMPLES = 0x80A9;
-	    obj.SAMPLE_COVERAGE_VALUE = 0x80AA;
-	    obj.SAMPLE_COVERAGE_INVERT = 0x80AB;
-	    obj.BLEND_DST_RGB = 0x80C8;
-	    obj.BLEND_SRC_RGB = 0x80C9;
-	    obj.BLEND_DST_ALPHA = 0x80CA;
-	    obj.BLEND_SRC_ALPHA = 0x80CB;
-	    obj.CLAMP_TO_EDGE = 0x812F;
-	    obj.GENERATE_MIPMAP_HINT = 0x8192;
-	    obj.DEPTH_COMPONENT16 = 0x81A5;
-	    obj.DEPTH_STENCIL_ATTACHMENT = 0x821A;
-	    obj.UNSIGNED_SHORT_5_6_5 = 0x8363;
-	    obj.MIRRORED_REPEAT = 0x8370;
-	    obj.ALIASED_POINT_SIZE_RANGE = 0x846D;
-	    obj.ALIASED_LINE_WIDTH_RANGE = 0x846E;
-	    obj.TEXTURE0 = 0x84C0;
-	    obj.TEXTURE1 = 0x84C1;
-	    obj.TEXTURE2 = 0x84C2;
-	    obj.TEXTURE3 = 0x84C3;
-	    obj.TEXTURE4 = 0x84C4;
-	    obj.TEXTURE5 = 0x84C5;
-	    obj.TEXTURE6 = 0x84C6;
-	    obj.TEXTURE7 = 0x84C7;
-	    obj.TEXTURE8 = 0x84C8;
-	    obj.TEXTURE9 = 0x84C9;
-	    obj.TEXTURE10 = 0x84CA;
-	    obj.TEXTURE11 = 0x84CB;
-	    obj.TEXTURE12 = 0x84CC;
-	    obj.TEXTURE13 = 0x84CD;
-	    obj.TEXTURE14 = 0x84CE;
-	    obj.TEXTURE15 = 0x84CF;
-	    obj.TEXTURE16 = 0x84D0;
-	    obj.TEXTURE17 = 0x84D1;
-	    obj.TEXTURE18 = 0x84D2;
-	    obj.TEXTURE19 = 0x84D3;
-	    obj.TEXTURE20 = 0x84D4;
-	    obj.TEXTURE21 = 0x84D5;
-	    obj.TEXTURE22 = 0x84D6;
-	    obj.TEXTURE23 = 0x84D7;
-	    obj.TEXTURE24 = 0x84D8;
-	    obj.TEXTURE25 = 0x84D9;
-	    obj.TEXTURE26 = 0x84DA;
-	    obj.TEXTURE27 = 0x84DB;
-	    obj.TEXTURE28 = 0x84DC;
-	    obj.TEXTURE29 = 0x84DD;
-	    obj.TEXTURE30 = 0x84DE;
-	    obj.TEXTURE31 = 0x84DF;
-	    obj.ACTIVE_TEXTURE = 0x84E0;
-	    obj.MAX_RENDERBUFFER_SIZE = 0x84E8;
-	    obj.DEPTH_STENCIL = 0x84F9;
-	    obj.INCR_WRAP = 0x8507;
-	    obj.DECR_WRAP = 0x8508;
-	    obj.TEXTURE_CUBE_MAP = 0x8513;
-	    obj.TEXTURE_BINDING_CUBE_MAP = 0x8514;
-	    obj.TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
-	    obj.TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
-	    obj.TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
-	    obj.TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
-	    obj.TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
-	    obj.TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A;
-	    obj.MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C;
-	    obj.VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622;
-	    obj.VERTEX_ATTRIB_ARRAY_SIZE = 0x8623;
-	    obj.VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624;
-	    obj.VERTEX_ATTRIB_ARRAY_TYPE = 0x8625;
-	    obj.CURRENT_VERTEX_ATTRIB = 0x8626;
-	    obj.VERTEX_ATTRIB_ARRAY_POINTER = 0x8645;
-	    obj.NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2;
-	    obj.COMPRESSED_TEXTURE_FORMATS = 0x86A3;
-	    obj.BUFFER_SIZE = 0x8764;
-	    obj.BUFFER_USAGE = 0x8765;
-	    obj.STENCIL_BACK_FUNC = 0x8800;
-	    obj.STENCIL_BACK_FAIL = 0x8801;
-	    obj.STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802;
-	    obj.STENCIL_BACK_PASS_DEPTH_PASS = 0x8803;
-	    obj.BLEND_EQUATION_ALPHA = 0x883D;
-	    obj.MAX_VERTEX_ATTRIBS = 0x8869;
-	    obj.VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A;
-	    obj.MAX_TEXTURE_IMAGE_UNITS = 0x8872;
-	    obj.ARRAY_BUFFER = 0x8892;
-	    obj.ELEMENT_ARRAY_BUFFER = 0x8893;
-	    obj.ARRAY_BUFFER_BINDING = 0x8894;
-	    obj.ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
-	    obj.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F;
-	    obj.STREAM_DRAW = 0x88E0;
-	    obj.STATIC_DRAW = 0x88E4;
-	    obj.DYNAMIC_DRAW = 0x88E8;
-	    obj.FRAGMENT_SHADER = 0x8B30;
-	    obj.VERTEX_SHADER = 0x8B31;
-	    obj.MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C;
-	    obj.MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D;
-	    obj.SHADER_TYPE = 0x8B4F;
-	    obj.FLOAT_VEC2 = 0x8B50;
-	    obj.FLOAT_VEC3 = 0x8B51;
-	    obj.FLOAT_VEC4 = 0x8B52;
-	    obj.INT_VEC2 = 0x8B53;
-	    obj.INT_VEC3 = 0x8B54;
-	    obj.INT_VEC4 = 0x8B55;
-	    obj.BOOL = 0x8B56;
-	    obj.BOOL_VEC2 = 0x8B57;
-	    obj.BOOL_VEC3 = 0x8B58;
-	    obj.BOOL_VEC4 = 0x8B59;
-	    obj.FLOAT_MAT2 = 0x8B5A;
-	    obj.FLOAT_MAT3 = 0x8B5B;
-	    obj.FLOAT_MAT4 = 0x8B5C;
-	    obj.SAMPLER_2D = 0x8B5E;
-	    obj.SAMPLER_CUBE = 0x8B60;
-	    obj.DELETE_STATUS = 0x8B80;
-	    obj.COMPILE_STATUS = 0x8B81;
-	    obj.LINK_STATUS = 0x8B82;
-	    obj.VALIDATE_STATUS = 0x8B83;
-	    obj.INFO_LOG_LENGTH = 0x8B84;
-	    obj.ATTACHED_SHADERS = 0x8B85;
-	    obj.ACTIVE_UNIFORMS = 0x8B86;
-	    obj.ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87;
-	    obj.SHADER_SOURCE_LENGTH = 0x8B88;
-	    obj.ACTIVE_ATTRIBUTES = 0x8B89;
-	    obj.ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A;
-	    obj.SHADING_LANGUAGE_VERSION = 0x8B8C;
-	    obj.CURRENT_PROGRAM = 0x8B8D;
-	    obj.STENCIL_BACK_REF = 0x8CA3;
-	    obj.STENCIL_BACK_VALUE_MASK = 0x8CA4;
-	    obj.STENCIL_BACK_WRITEMASK = 0x8CA5;
-	    obj.FRAMEBUFFER_BINDING = 0x8CA6;
-	    obj.RENDERBUFFER_BINDING = 0x8CA7;
-	    obj.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0;
-	    obj.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1;
-	    obj.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2;
-	    obj.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3;
-	    obj.FRAMEBUFFER_COMPLETE = 0x8CD5;
-	    obj.FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6;
-	    obj.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7;
-	    obj.FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9;
-	    obj.FRAMEBUFFER_UNSUPPORTED = 0x8CDD;
-	    obj.COLOR_ATTACHMENT0 = 0x8CE0;
-	    obj.DEPTH_ATTACHMENT = 0x8D00;
-	    obj.STENCIL_ATTACHMENT = 0x8D20;
-	    obj.FRAMEBUFFER = 0x8D40;
-	    obj.RENDERBUFFER = 0x8D41;
-	    obj.RENDERBUFFER_WIDTH = 0x8D42;
-	    obj.RENDERBUFFER_HEIGHT = 0x8D43;
-	    obj.RENDERBUFFER_INTERNAL_FORMAT = 0x8D44;
-	    obj.STENCIL_INDEX8 = 0x8D48;
-	    obj.RENDERBUFFER_RED_SIZE = 0x8D50;
-	    obj.RENDERBUFFER_GREEN_SIZE = 0x8D51;
-	    obj.RENDERBUFFER_BLUE_SIZE = 0x8D52;
-	    obj.RENDERBUFFER_ALPHA_SIZE = 0x8D53;
-	    obj.RENDERBUFFER_DEPTH_SIZE = 0x8D54;
-	    obj.RENDERBUFFER_STENCIL_SIZE = 0x8D55;
-	    obj.RGB565 = 0x8D62;
-	    obj.LOW_FLOAT = 0x8DF0;
-	    obj.MEDIUM_FLOAT = 0x8DF1;
-	    obj.HIGH_FLOAT = 0x8DF2;
-	    obj.LOW_INT = 0x8DF3;
-	    obj.MEDIUM_INT = 0x8DF4;
-	    obj.HIGH_INT = 0x8DF5;
-	    obj.SHADER_COMPILER = 0x8DFA;
-	    obj.MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB;
-	    obj.MAX_VARYING_VECTORS = 0x8DFC;
-	    obj.MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD;
-
-	    obj.UNPACK_FLIP_Y_WEBGL = 0x9240;
-	    // obj.UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241;
-	    // obj.CONTEXT_LOST_WEBGL = 0x9242;
-	    // obj.UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243;
-	    // obj.BROWSER_DEFAULT_WEBGL = 0x9244;
-
-	    //extsion
-	    obj.OES_vertex_array_object = 1;
-	    obj.OES_texture_float = 1;
-	    obj.OES_element_index_uint = 1;
-	}
-
-	function GAttribLocation() {
-	    this.id = (++GAttribLocation.idCounter);
-	}
-	GAttribLocation.idCounter = 0;
-	GAttribLocation.mapKey = [];
-	GAttribLocation.mapVal = [];
-
-
-	function GProgram() {
-	    this.id = (++GProgram.idCounter);
-	}
-	GProgram.idCounter = 0;
-
-	function GShader() {
-	    this.id = (++GShader.idCounter);
-	}
-	GShader.idCounter = 0;
-
-	function GTexture() {
-	    this.id = (++GTexture.idCounter);
-	}
-	GTexture.idCounter = 0;
-
-	function GUniformLocation() {
-	    this.id = (++GUniformLocation.idCounter);
-	}
-	GUniformLocation.idCounter = 0;
-	GUniformLocation.mapKey = [];
-	GUniformLocation.mapVal = [];
-
-	function GWebGLBuffer() {
-	    this.id = (++GWebGLBuffer.idCounter);
-	}
-	GWebGLBuffer.idCounter = 0;
-
-	function GWebGLFramebuffer() {
-	    this.id = (++GWebGLFramebuffer.idCounter);
-	}
-	GWebGLFramebuffer.idCounter = 0;
-
-	function GWebGLRenderbuffer() {
-	    this.id = (++GWebGLRenderbuffer.idCounter);
-	}
-	GWebGLRenderbuffer.idCounter = 0;
-
-	function GWebGLShaderPrecisionFormat(){
-	}
-
-
-
-	function GarrToBase64(array) 
-	{   
-	    var str = '';
-	    if( array.join === 'function' )
-	    {
-	        str = array.join();
-	    }
-	    else
-	    {
-	        for (var i = 0; i < array.length; i++) 
-	        {
-	            if( i < array.length - 1 )
-	            {
-	                str = str + array[i] + ',';
-	            }
-	            else
-	            {
-	                str = str + array[i];
-	            }
-	        }
-	    }
-	    // GLog.d("GarrToBase64(), before: "+ str);
-	    // GLog.d("GarrToBase64(), after : "+ btoa(str));
-	    return btoa(str);
-	}
-
-	function Gbase64ToArr(base64)
-	{
-	    // GLog.d("base64:" + base64);
-	    var binary_string = atob(base64);
-	    // GLog.d("binary_string:" + binary_string);
-	    var array = binary_string.slice();
-	    return array;
-	    // var len = binary_string.length;
-	    // var bytes = new Uint8Array( len );
-	    // for (var i = 0; i < len; i++)        {
-	    //     bytes[i] = binary_string.charCodeAt(i);
-	    // }
-	    // return bytes.buffer;
-	}
-	//////////////////////////////////////////////////////////////////////////
-
-
-
-	GContextWebGL.prototype.render = function() {
-	    var commands = this._drawCommands;
-	    this._drawCommands = "";
-	    if (commands != null && commands != "") {
-	        // GLog.d("GContextWebGL#render() called, commands is "+ commands);
-	        //GCanvas._toNative(null, null, 'GCanvas', 'render', [ commands ]);
-	        GBridge.callRender(this.componentId, commands)
-	    }
-	};
-
-
-	//////////////////////////////////////////////////////////////////////////
-
-	////////////////////////////// WEBGL API //////////////////////////////////
-
-	GContextWebGL.prototype.activeTexture = function(texture){
-	    this._drawCommands += (this.activeTextureId + texture + ";");
-	};
-
-	GContextWebGL.prototype.attachShader = function(program, shader){
-	    this._drawCommands += (this.attachShaderId + program.id + "," + shader.id + ";");
-	};
-
-	GContextWebGL.prototype.bindAttribLocation = function(program, index, name){
-	    this._drawCommands += (this.bindAttribLocationId + program.id + "," + index + "," + name + ";");
-	};
-
-	GContextWebGL.prototype.bindBuffer = function(target, buffer){
-	    this._drawCommands += (this.bindBufferId + target + "," + ((null == buffer)?-1:buffer.id) + ";");
-	};
-
-	GContextWebGL.prototype.bindFramebuffer = function(target, buf){
-	    this._drawCommands += (this.bindFramebufferId + target + "," + ((null == buf)?-1:buf.id) + ";");
-	};
-
-	GContextWebGL.prototype.bindRenderbuffer = function(target, buf){
-	    this._drawCommands += (this.bindRenderbufferId + target + "," + ((null == buf)?-1:buf.id) + ";");
-	};
-
-	GContextWebGL.prototype.bindTexture = function(target, texture){
-	    this._drawCommands += (this.bindTextureId + target + "," + ((null == texture)?-1:texture.id) + ";");
-	};
-
-	GContextWebGL.prototype.blendEquation = function(mode){
-	    this._drawCommands += (this.blendEquationId + mode + ";");
-	};
-
-	GContextWebGL.prototype.blendEquationSeparate = function(modeRGB, modeAlpha){
-	    this._drawCommands += (this.blendEquationSeparateId + modeRGB + "," + modeAlpha  + ";");
-	};
-
-
-	GContextWebGL.prototype.blendFunc = function(sfactor, dfactor){
-	    this._drawCommands += (this.blendFuncId + sfactor + "," + dfactor  + ";");
-	};
-
-	GContextWebGL.prototype.blendFuncSeparate = function(srcRGB, dstRGB, srcAlpha, dstAlpha){
-	    this._drawCommands += (this.blendFuncSeparateId + srcRGB + "," + dstRGB + "," + srcAlpha + "," + dstAlpha  + ";");
-	};
-
-	GContextWebGL.prototype.bufferData = function(target, array, usage){
-	    // GLog.d("[bufferData] before:_drawCommands.length=" + this._drawCommands.length);
-	    // GLog.d("[bufferData] array.length=" + array.length);
-	    this._drawCommands += (this.bufferDataId + target + "," + array.BYTES_PER_ELEMENT + "," + GarrToBase64(array) + "," + usage + ";");
-	    // GLog.d("[bufferData] after :_drawCommands.length=" + this._drawCommands.length);
-	};
-
-	GContextWebGL.prototype.checkFramebufferStatus_ = function(target){
-	    return this.FRAMEBUFFER_COMPLETE;// TODO:
-	};
-
-	GContextWebGL.prototype.clear = function(mask){
-	    this._drawCommands += (this.clearId + mask + ";");
-	};
-
-	GContextWebGL.prototype.clearColor = function(r, g, b, a){
-	    this._drawCommands += (this.clearColorId + r + "," + g + "," + b + "," + a + ";");
-	};
-
-	GContextWebGL.prototype.clearDepth = function(depth){
-	    this._drawCommands += (this.clearDepthId + depth + ";");
-	};
-
-	GContextWebGL.prototype.clearStencil = function(s){
-	    this._drawCommands += (this.clearStencilId + s + ";");
-	};
-
-	GContextWebGL.prototype.colorMask = function(r, g, b, a){
-	    this._drawCommands += (this.colorMaskId + r?1: true?1:0 + "," + b?1:0 + "," + a?1:0 + ";");
-	};
-
-	GContextWebGL.prototype.compileShader = function(shader) {
-	    this._drawCommands += (this.compileShaderId + shader.id + ";");
-	};
-
-	GContextWebGL.prototype.createBuffer = function(){
-	    var buffer = new GWebGLBuffer();
-	    this._drawCommands += (this.createBufferId + buffer.id + ";");
-	    return buffer;
-	};
-
-	GContextWebGL.prototype.createFramebuffer = function(){
-	    var framebuffer = new GWebGLFramebuffer();
-	    this._drawCommands += (this.createFramebufferId + framebuffer.id + ";");
-	    return framebuffer;
-	};
-
-	GContextWebGL.prototype.createRenderbuffer = function(){
-	    var renderbuffer= new GWebGLRenderbuffer();
-	    this._drawCommands += (this.createRenderbufferId + renderbuffer.id + ";");
-	    return renderbuffer;
-	};
-
-	GContextWebGL.prototype.createProgram = function(){
-	    var program = new GProgram();
-	    this._drawCommands += (this.createProgramId + program.id + ";");
-	    return program;
-	};
-
-	GContextWebGL.prototype.createShader = function(type) {
-	    var shader = new GShader();
-	    this._drawCommands += (this.createShaderId + shader.id + "," + type + ";");
-	    return shader;
-	};
-
-	GContextWebGL.prototype.createTexture = function() {
-	    var texture = new GTexture();
-	    this._drawCommands += (this.createTextureId + texture.id + ";");
-	    return texture;
-	};
-
-	GContextWebGL.prototype.cullFace = function(mode){
-	    this._drawCommands += (this.cullFaceId + mode + ";");
-	};
-
-	GContextWebGL.prototype.deleteBuffer = function(buffer){
-	    this._drawCommands += (this.deleteBufferId + buffer.id + ";");
-	};
-
-	GContextWebGL.prototype.deleteFramebuffer = function(framebuffer){
-	    this._drawCommands += (this.deleteFramebufferId + framebuffer.id + ";");
-	};
-
-	GContextWebGL.prototype.deleteProgram = function(program){
-	    this._drawCommands += (this.deleteProgramId + program.id + ";");
-	};
-
-	GContextWebGL.prototype.deleteRenderbuffer = function(renderbuffer){
-	    this._drawCommands += (this.deleteRenderbufferId + renderbuffer.id + ";");
-	};
-
-	GContextWebGL.prototype.deleteShader = function(shader){
-	    this._drawCommands += (this.deleteShaderId + shader.id + ";");
-	};
-
-	GContextWebGL.prototype.deleteTexture = function(texture){
-	    this._drawCommands += (this.deleteTextureId + texture.id + ";");
-	};
-
-	GContextWebGL.prototype.depthFunc = function(func){
-	    this._drawCommands += (this.depthFuncId + func + ";");
-	};
-
-	GContextWebGL.prototype.depthMask = function(flag){
-	    this._drawCommands += (this.depthMaskId + (flag?1:0) + ";");
-	};
-
-	GContextWebGL.prototype.depthRange = function(near, far){
-	    this._drawCommands += (this.depthRangeId + near + ", " + far + ";");
-	}
-
-	GContextWebGL.prototype.disable = function(cap){
-	    this._drawCommands += (this.disableId + cap + ";");
-	};
-
-	GContextWebGL.prototype.disableVertexAttribArray = function(index){
-	    this._drawCommands += (this.disableVertexAttribArrayId + index + ";");
-	};
-
-	GContextWebGL.prototype.drawArrays = function(mode, first, count){
-	    this._drawCommands += (this.drawArraysId + mode + "," + first + "," + count +  ";");
-	};
-
-	GContextWebGL.prototype.drawElements = function(mode, count, type, offset){
-	    this._drawCommands += (this.drawElementsId + mode + "," + count + "," + type + "," + offset +  ";");
-	};
-
-	GContextWebGL.prototype.enable = function(cap){
-	    this._drawCommands += (this.enableId + cap + ";");
-	};
-
-	GContextWebGL.prototype.enableVertexAttribArray = function(index){
-	    this._drawCommands += (this.enableVertexAttribArrayId + index + ";");
-	};
-
-	GContextWebGL.prototype.flush = function(){
-	    this._drawCommands += (this.flushId + ";");
-	};
-
-	GContextWebGL.prototype.generateMipmap = function(target){
-	    this._drawCommands += (this.generateMipmapId + target + ";");
-	};
-
-	GContextWebGL.prototype.framebufferRenderbuffer = function(target, attachment, renderbuffertarget, renderbuffer){
-	    this._drawCommands += (this.framebufferRenderbufferId + target + "," + attachment + "," + renderbuffertarget + "," + renderbuffer.id + ";");
-	};
-
-	GContextWebGL.prototype.framebufferTexture2D = function(target, attachment, textarget, texture, level){
-	    this._drawCommands += (this.framebufferTexture2DId + target + "," + attachment + "," + textarget + "," + texture.id + "," + level + ";");
-	};
-
-	GContextWebGL.prototype.frontFace = function(mode){
-	    this._drawCommands += (this.frontFaceId + mode + ";");
-	};
-
-	GContextWebGL.prototype.getAttribLocation   = function(program, name) {
-	    var key = program.id + ":" + name;
-	    var index = GAttribLocation.mapKey.indexOf(key);
-	    if (index > -1){
-	        //GLog.d("[getAttribLocation] " + key + "=" + GAttribLocation.mapVal[index].id);
-	        return GAttribLocation.mapVal[index];
-	    }
-
-	    var id = GAttribLocation.idCounter++;
-	    this._drawCommands += (this.getAttribLocationId + program.id + "," + name + "," + id + ";");
-
-	    GAttribLocation.mapKey.push(key);
-	    GAttribLocation.mapVal.push(id);
-	    //GLog.d("[GAttribLocation] " + key + "=" + id);
-
-	    return id;
-	};
-
-	GContextWebGL.prototype.getExtension = function(name) {
-	    //GLog.w("[getExtension] " + name);
-	    return null;
-	//  var ret = new Object();
-	//  return ret;// TODO: need call opengl es
-	};
-
-
-	//TODO
-	GContextWebGL.prototype.getParameter = function(name) {
-	    if (typeof(GCanvas._glParams) == 'undefined'){
-	        return null;
-	    }
-	    if (name == this.ALIASED_POINT_SIZE_RANGE){
-	        var f32ar =  new Float32Array(2);
-	        f32ar[0]= 1;
-	        f32ar[1]= 256;
-	        return f32ar;
-	    }
-	    //GLog.d("[GContextWebGL::getParameter] " + name + "=" + GCanvas._glParams[name]);
-	    return GCanvas._glParams[name];
-	    // TODO: unsupport this code:var _compressedTextureFormats = _glExtensionCompressedTextureS3TC ? _gl.getParameter( _gl.COMPRESSED_TEXTURE_FORMATS ) : [];
-	};
-
-	GContextWebGL.prototype.getProgramInfoLog = function(program){
-	    return ""; // TODO:need asyn deal
-	};
-
-	GContextWebGL.prototype.getProgramParameter = function(id, type){
-	    var args = id + ',' + type;
-	    var result = GBridge.exeSyncCmd('getProgramParameter',args);
-	    
-	    // return result;
-	    return "";
-	};
-
-	GContextWebGL.prototype.getShaderInfoLog = function(id){
-	    var args = id;
-	    var result = GBridge.exeSyncCmd('getShaderInfoLog',args);
-	    
-	    // return result;
-	    return "";
-	};
-
-	GContextWebGL.prototype.getShaderParameter = function(shader, pname){
-	    var args = shader + ',' + pname;
-	    var result = GBridge.exeSyncCmd('getShaderParameter',args);
-	    
-	    // return result;
-	    return "";
-	};
-
-	GContextWebGL.prototype.getActiveUniform = function(id, index){
-	    var args = id + ',' + index;
-	    var result = GBridge.exeSyncCmd('getActiveUniform',args);
-	    var tmp = result.split(',');
-	    return {
-	        type: tmp[0],
-	        name: tmp[1]
-	    };
-	}
-
-	GContextWebGL.prototype.getActiveAttrib = function(id, index){
-	    var args = id + ',' + index;
-	    var result = GBridge.exeSyncCmd('getActiveAttrib',args);
-	    var tmp = result.split(',');
-	    return {
-	        type: tmp[0],
-	        name: tmp[1]
-	    };
-	}
-
-	GContextWebGL.prototype.scissor = function(x, y, w, h) {
-	    this._drawCommands += (this.scissorId + x + "," + y + ","
-	    + w+ "," + h + ";");
-	};
-
-
-	GContextWebGL.prototype.getShaderPrecisionFormat = function(shader, pname){
-	    //var ret = new GWebGLShaderPrecisionFormat();
-	    //ret.range = 127;
-	    //ret.precision = 23;
-	    //if (shader == gl.VERTEX_SHADER) {
-	    //    switch (pname) {
-	    //        case gl.LOW_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[0];
-	    //            ret.precision = GCanvas._glParams[1];
-	    //            break;
-	    //        }
-	    //        case gl.MEDIUM_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[2];
-	    //            ret.precision = GCanvas._glParams[3];
-	    //            break;
-	    //        }
-	    //        case gl.HIGH_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[4];
-	    //            ret.precision = GCanvas._glParams[5];
-	    //            break;
-	    //        }
-	    //        case gl.LOW_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[6];
-	    //            ret.precision = GCanvas._glParams[7];
-	    //            break;
-	    //        }
-	    //        case gl.MEDIUM_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[8];
-	    //            ret.precision = GCanvas._glParams[9];
-	    //            break;
-	    //        }
-	    //        case gl.HIGH_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[10];
-	    //            ret.precision = GCanvas._glParams[11];
-	    //            break;
-	    //        }
-	    //
-	    //    } //end switch
-	    //}
-	    //if (shader == gl.FRAGMENT_SHADER) {
-	    //    switch (pname) {
-	    //        case gl.LOW_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[12];
-	    //            ret.precision = GCanvas._glParams[13];
-	    //            break;
-	    //        }
-	    //        case gl.MEDIUM_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[14];
-	    //            ret.precision = GCanvas._glParams[15];
-	    //            break;
-	    //        }
-	    //        case gl.HIGH_FLOAT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[16];
-	    //            ret.precision = GCanvas._glParams[17];
-	    //            break;
-	    //        }
-	    //        case gl.LOW_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[18];
-	    //            ret.precision = GCanvas._glParams[19];
-	    //            break;
-	    //        }
-	    //        case gl.MEDIUM_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[20];
-	    //            ret.precision = GCanvas._glParams[21];
-	    //            break;
-	    //        }
-	    //        case gl.HIGH_INT:
-	    //        {
-	    //            ret.range = GCanvas._glParams[22];
-	    //            ret.precision = GCanvas._glParams[23];
-	    //            break;
-	    //        }
-	    //
-	    //    } //end switch
-	    //}
-	    //
-	    //return ret;
-	};
-
-	GContextWebGL.prototype.getUniformLocation = function(program, name) {
-
-	    var key = program.id + ":" + name;
-	    var index = GUniformLocation.mapKey.indexOf(key);
-	    if (index > -1){
-	        //GLog.d("[getUniformLocation] " + key + "=" + GUniformLocation.mapVal[index].id);
-	        return GUniformLocation.mapVal[index];
-	    }
-
-	    var uniform = new GUniformLocation();
-	    this._drawCommands += (this.getUniformLocationId + program.id + "," + name + "," + uniform.id + ";");
-
-	    GUniformLocation.mapKey.push(key);
-	    GUniformLocation.mapVal.push(uniform);
-	    //GLog.d("[getUniformLocation] " + key + "=" + uniform.id);
-	    return uniform;
-	};
-
-	GContextWebGL.prototype.isContextLost = function(){
-	    return false;
-	};
-	GContextWebGL.prototype.lineWidth = function(width){
-	    this._drawCommands += (this.lineWidthId + width + ";");
-	};
-
-	GContextWebGL.prototype.linkProgram = function(program){
-	    this._drawCommands += (this.linkProgramId + program.id + ";");
-	};
-
-	GContextWebGL.prototype.pixelStorei = function(pname, param){
-	    if (true == param)
-	        param = 1;
-	    else if (false == param)
-	        param = 0;
-	    this._drawCommands += (this.pixelStoreiId + pname + "," + param + ";");
-	};
-
-	GContextWebGL.prototype.shaderSource = function(shader, source){
-	    this._drawCommands += (this.shaderSourceId + shader.id + "," + btoa(source) + ";");
-	};
-
-
-
-	GContextWebGL.prototype.renderbufferStorage = function(target, internalformat, width, height){
-	    this._drawCommands += (this.renderbufferStorageId + target + "," + internalformat + "," + width + "," + height + ";");
-	};
-
-
-
-
-	//texImage2D(webgl.TEXTURE_2D, 0, webgl.RGB, webgl.RGB, webgl.UNSIGNED_BYTE, img);
-	//WebGLRenderingContext.texImage2D(target, level, internalformat, width, height, border, format, type, pixels);
-	//texImage2D( _gl.TEXTURE_2D, 0, _gl.RGB, 16, 16, 0, _gl.RGB, _gl.UNSIGNED_BYTE, null );
-	GContextWebGL.prototype.texImage2D = function(target, level, internalformat){
-	    var argc = arguments.length;
-	    //GLog.d("[texImage2D]arguments.length=" + argc);
-
-	    if (6==argc){
-	        var image = arguments[5];
-	        var imgData;
-	        // if (image instanceof HTMLCanvasElement){
-	        //     imgData = image.toDataURL("image/jpeg");
-	        // }else{
-	            imgData = image.src;
-	        // }
-	        this._drawCommands += (this.texImage2DId + argc + "," + target + "," + level
-	        + "," + internalformat + "," + arguments[3] + "," + arguments[4]
-	        + "," + imgData + ";");
-	        GLog.d("[texImage2D] finish..." + imgData.length);
-	    }else if (9==argc){
-	        var image = arguments[5];
-	        this._drawCommands += (this.texImage2DId + argc + "," + target + "," + level
-	        + "," + internalformat + "," + arguments[3] + "," + arguments[4]
-	        + "," + arguments[5] + "," + arguments[6] + "," + arguments[7]
-	        + "," + arguments[8] + ";");
-	    }
-	};
-
-	GContextWebGL.prototype.texParameteri = function(target, pname, param){
-	    this._drawCommands += (this.texParameteriId + target + "," + pname + "," + param + ";");
-	};
-
-
-	GContextWebGL.prototype.uniform1f = function(location, value){
-	    this._drawCommands += (this.uniform1fId + location.id + "," + value + ";");
-	};
-
-	function trans2ArrayType(type, ar){
-	    if (ar instanceof type)
-	        return ar;
-	    var len = ar.length;
-	    var f32ar = new type(len);
-	    for (var i = 0; i < len; i++) {
-	        f32ar[i]=ar[i];
-	    }
-	    return f32ar;
-	}
-
-	GContextWebGL.prototype.uniformXXv = function(id, value, type, cmd){
-	    if (value.length == 0)
-	        return;
-
-	    value = trans2ArrayType(type, value);
-	    this._drawCommands += (cmd + id + ","
-	    + GarrToBase64(value) + ";");
-	};
-
-	GContextWebGL.prototype.uniform1f = function(location, value){
-	    this._drawCommands += (this.uniform1fId  + location.id + "," + value + ";");
-	};
-
-	GContextWebGL.prototype.uniform1fv = function(location, value){
-	    this.uniformXXv(location.id, value, Float32Array, this.uniform1fvId );
-	};
-
-	GContextWebGL.prototype.uniform1i = function(location, value){
-	    if (true == value)
-	        value= 1;
-	    else if (false == value)
-	        value = 0;
-	    this._drawCommands += (this.uniform1iId + location.id + "," + value + ";");
-	};
-
-	GContextWebGL.prototype.uniform1iv = function(location, value){
-	    this.uniformXXv(location.id, value, Int32Array, this.uniform1ivId );
-	};
-
-	GContextWebGL.prototype.uniform2f = function(location, x, y){
-	    this._drawCommands += (this.uniform2fId  + location.id + "," + x + "," + y + ";");
-	};
-
-	GContextWebGL.prototype.uniform2fv = function(location, value){
-	    this.uniformXXv(location.id, value, Float32Array, this.uniform2fvId);
-	};
-
-	GContextWebGL.prototype.uniform2i = function(location, x, y){
-	    this._drawCommands += (this.uniform2iId + location.id + "," + x + "," + y + ";");
-	};
-
-	GContextWebGL.prototype.uniform2iv = function(location, value){
-	    this.uniformXXv(location.id, value, Int32Array, this.uniform2ivId );
-	};
-
-	GContextWebGL.prototype.uniform3f = function(location, x, y, z){
-	    this._drawCommands += (this.uniform3fId + location.id + "," + x + "," + y + "," + z + ";");
-	};
-
-	GContextWebGL.prototype.uniform3fv = function(location, value){
-	    this.uniformXXv(location.id, value, Float32Array, this.uniform3fvId);
-	};
-
-	GContextWebGL.prototype.uniform3i = function(location, x, y, z){
-	    this._drawCommands += (this.uniform3iId + location.id + "," + x + "," + y + "," + z + ";");
-	};
-
-	GContextWebGL.prototype.uniform3iv = function(location, value){
-	    this.uniformXXv(location.id, value, Int32Array, this.uniform3ivId );
-	};
-
-	GContextWebGL.prototype.uniform4f = function(location, x, y, z, w){
-	    this._drawCommands += (this.uniform4fId + location.id + "," + x + "," + y + "," + z + "," + w + ";");
-	};
-
-	GContextWebGL.prototype.uniform4fv = function(location, value){
-	    this.uniformXXv(location.id, value, Float32Array, this.uniform4fvId);
-	};
-
-	GContextWebGL.prototype.uniform4i = function(location, x, y, z, w){
-	    this._drawCommands += (this.uniform4iId + location.id + "," + x + "," + y + "," + z + "," + w + ";");
-	};
-
-	GContextWebGL.prototype.uniform4iv = function(location, value){
-	    this.uniformXXv(location.id, value, Int32Array, this.uniform4ivId );
-	};
-
-
-
-	GContextWebGL.prototype.uniformMatrixXfv = function(location, transpose, value, apiId){
-	    if (value.length == 0)
-	        return;
-	    this._drawCommands += (apiId + location.id + "," + (transpose?1:0));
-	    this._drawCommands += "," + GarrToBase64(value) + (";");
-	};
-
-
-	GContextWebGL.prototype.uniformMatrix2fv = function(location, transpose, value){
-	    this.uniformMatrixXfv(location, transpose, value, this.uniformMatrix2fvId);
-	};
-
-	GContextWebGL.prototype.uniformMatrix3fv = function(location, transpose, value){
-	    this.uniformMatrixXfv(location, transpose, value, this.uniformMatrix3fvId);
-	};
-
-	GContextWebGL.prototype.uniformMatrix4fv = function(location, transpose, value){
-	    this.uniformMatrixXfv(location, transpose, value, this.uniformMatrix4fvId);
-	};
-
-
-	GContextWebGL.prototype.useProgram = function(program){
-	    this._drawCommands += (this.useProgramId + program.id + ";");
-	};
-
-	GContextWebGL.prototype.validateProgram = function(program){
-	    // TODO:
-	};
-
-	GContextWebGL.prototype.vertexAttrib2fv = function(index, value){
-	    this._drawCommands += this.vertexAttrib2fvId + index;
-	    for (var i = 0; i < value.length; i++) {
-	        this._drawCommands += ",";
-	        this._drawCommands += value[i].toFixed(3);
-	    }
-	};
-
-	GContextWebGL.prototype.vertexAttribPointer = function(index, size, type, normalized, stride, offset){
-	    this._drawCommands += (this.vertexAttribPointerId + index + "," + size + ","
-	    + type + "," + (normalized?1:0) + "," + stride + "," + offset + ";");
-	};
-
-
-	GContextWebGL.prototype.viewport = function(x, y, w, h) {
-	    this._drawCommands += (this.viewportId + x + "," + y + ","
-	    + w+ "," + h + ";");
-	};
-
-	GContextWebGL.prototype.getString = function(name) {
-	    var args = name;
-	    var result = GBridge.exeSyncCmd('getString',args);
-	    return result;
-	}
-	//extension for OES_vertex_array_object
-	GContextWebGL.prototype.bindVertexArrayOES = function(array) {
-	    this._drawCommands += (this.bindVertexArrayOESId + array + ";");
-	};
-
-	GContextWebGL.prototype.deleteVertexArraysOES = function(size, arrayRef) {
-	    this._drawCommands += (this.deleteVertexArraysOESId + size + "," + arrayRef + ";");
-	};
-
-	GContextWebGL.prototype.genVertexArraysOES = function(size, arrayRef) {
-	    this._drawCommands += (this.genVertexArraysOESId + size + "," + arrayRef + ";");
-	};
-
-	GContextWebGL.prototype.isVertexArrayOES = function(array) {
-	    var args = array;
-	    var result = GBridge.exeSyncCmd('isVertexArrayOES',args);
-	    return result;
-	};
-
-	//function autoInjectMetaViewport(){
-	//    var metas = document.getElementsByTagName("meta");
-	//    for (var i_matas = 0; i_matas < metas.length; ++i_matas) {
-	//        var meta_name = metas[i_matas].getAttribute("name");
-	//        if (meta_name == "viewport") {
-	//            return;
-	//        }
-	//    }
-	//    var injectMeta = "<meta n" + "ame='viewport' content='width=device-width, initial-scale=1.0' />"
-	//    GLog.d("[autoInjectMetaViewport] injectMeta:" + injectMeta);
-	//    document.write(injectMeta);
-	//};
-	//
-	//autoInjectMetaViewport();
-
-
-
-
-
-
-	module.exports = GContextWebGL;
-
-
-/***/ }),
-
-/***/ 117:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var GBridge = __webpack_require__(113).GBridge;
-	var GLog = __webpack_require__(113).GLog;
-	var GHashMap = __webpack_require__(115);
-	var GCanvasImage = __webpack_require__(112);
-
-	function GContext2D() {
-	    this._drawCommands = "";
-	    this._globalAlpha = 1.0;
-	    this._fillStyle = "rgb(0,0,0)";
-	    this._strokeStyle = "rgb(0,0,0)";
-	    this._lineWidth = 1;
-	    this._lineCap = "butt";
-	    this._lineJoin= "miter";
-	    this._miterLimit = 10;
-	    this._globalCompositeOperation = "source-over";
-	    this._textAlign = "start";
-	    this._textBaseline = "alphabetic";
-	    this._font = "10px sans-serif";
-	    this._images = {};
-	    this._canvases1 = {};
-	    this._canvases2 = {};
-	    this._getImageData = new Array();
-
-	//    GCanvas._forbiddenAutoReplaceCanvas =true;
-	//    this._apiCanvas  = document.createElement('canvas');
-	//    GCanvas._forbiddenAutoReplaceCanvas =false;
-	//    console.error("apicanvas="+this._apiCanvas);
-	//    this._apiContext = this._apiCanvas.getContext("2d");
-	//    this._apiContext.font = this._font;
-
-	    this._savedGlobalAlpha =[];
-	    this.timer = null;
-	    this.componentId = null;
-
-	    this._imageMap = new GHashMap();
-	    this._textureMap = new GHashMap();
-	    this._firstBindFlag = true;
-
-	}
-
-	function FillStylePattern(img, pattern) {
-	    this._style = pattern;
-	    this._img = img;
-	}
-
-	function FillStyleLinearGradient(x0, y0, x1, y1) {
-	    this._start_pos = { _x : x0, _y : y0 };
-	    this._end_pos = { _x : x1, _y : y1 };
-	    this._stop_count = 0;
-	    this._stops = [0, 0, 0, 0, 0];
-	}
-
-	FillStyleLinearGradient.prototype.addColorStop = function(pos, color) {
-	    if (this._stop_count < 5 && 0.0 <= pos && pos <= 1.0) {
-	        this._stops[this._stop_count] = { _pos : pos, _color : color };
-	        this._stop_count++;
-	    }
-	}
-
-	function FillStyleRadialGradient(x0, y0, r0, x1, y1, r1) {
-	    this._start_pos = { _x : x0, _y : y0, _r : r0 };
-	    this._end_pos = { _x : x1, _y : y1, _r : r1 };
-	    this._stop_count = 0;
-	    this._stops = [0, 0, 0, 0, 0];
-	}
-
-	FillStyleRadialGradient.prototype.addColorStop = function(pos, color) {
-	    if (this._stop_count < 5 && 0.0 <= pos && pos <= 1.0) {
-	        this._stops[this._stop_count] = { _pos : pos, _color : color };
-	        this._stop_count++;
-	    }
-	}
-
-	/**
-	 * Represents the alpha value to be used with drawing commands where 1 is
-	 * completely visible and 0 is fully transparent.
-	 *
-	 * @type {number}
-	 * @name GContext2D#globalAlpha
-	 */
-	Object.defineProperty(GContext2D.prototype, "globalAlpha", {
-	    get : function() {
-	        return this._globalAlpha;
-	    },
-	    set : function(value) {
-	        // if (this._globalAlpha != value) {
-	        this._globalAlpha = value;
-	        this._drawCommands = this._drawCommands.concat("a" + value.toFixed(6)
-	                + ";");
-	        // }
-	    }
-	});
-
-	/**
-	 * Represents the color or style to use inside shapes. It can only be a
-	 * string which must be parsed as CSS <color> value for now.
-	 *
-	 * @type {string}
-	 * @name GContext2D#fillStyle
-	 * @example // set context fillStyle context.fillStyle = 'rgb(121,194,245)';
-	 */
-	Object.defineProperty(GContext2D.prototype, "fillStyle", {
-	    get : function() {
-	        return this._fillStyle;
-	    },
-	    set : function(value) {
-	        this._fillStyle = value;
-
-	        if (typeof(value) == 'string') {
-	            this._drawCommands = this._drawCommands.concat("F" + value + ";");
-	        }
-	        else if (value instanceof FillStylePattern) {
-	            if (value._img instanceof Image) {
-	                if (!(value._img.src in this._images)) {
-	                    var new_image = GCanvas.createImage();
-	                    new_image.width = value._img.width;
-	                    new_image.height = value._img.height;
-	                    new_image.src = value._img.src;
-	                    new_image.complete = value._img.complete;
-	                    this._images[value._img.src] = new_image;
-	                } else {
-	                    this._drawCommands = this._drawCommands.concat("G" + this._images[value._img.src]._id + "," + value._style + ";");
-	                 }
-	            }
-	            else if (value._img instanceof GCanvasImage){
-	                this._drawCommands = this._drawCommands.concat("G" + value._img._id + "," + value._style + ";");
-	            }
-	        }
-	        else if (value instanceof FillStyleLinearGradient) {
-	            var command = "D" + value._start_pos._x + "," + value._start_pos._y + ","
-	                + value._end_pos._x + "," + value._end_pos._y + "," + value._stop_count;
-
-	            for (var i = 0; i < value._stop_count; ++i) {
-	                command += ("," + value._stops[i]._pos + "," + value._stops[i]._color);
-	            }
-	            this._drawCommands = this._drawCommands.concat(command + ";");
-	            //console.log('createLinearGradient command -> ' + command);
-	        }
-	        else if (value instanceof FillStyleRadialGradient) {
-	            var command = "H" + value._start_pos._x + "," + value._start_pos._y + "," + value._start_pos._r + ","
-	                + value._end_pos._x + "," + value._end_pos._y + "," + value._end_pos._r + "," + value._stop_count;
-
-	            for (var i = 0; i < value._stop_count; ++i) {
-	                command += ("," + value._stops[i]._pos + "," + value._stops[i]._color);
-	            }
-	            this._drawCommands = this._drawCommands.concat(command + ";");
-	            //console.log('FillStyleRadialGradient command -> ' + command);
-	        }
-	    }
-	});
-
-	/**
-	 * Represents the color or style for the lines. It can only be a string
-	 * which must be parsed as CSS <color> value for now.
-	 *
-	 * @type {string}
-	 * @name GContext2D#strokeStyle
-	 * @example // set context strokeStyle context.strokeStyle = 'rgb(121,194,245)';
-	 */
-	Object.defineProperty(GContext2D.prototype, "strokeStyle", {
-	    get : function() {
-	        return this._strokeStyle;
-	    },
-	    set : function(value) {
-	        this._strokeStyle = value;
-
-	        if (typeof(value) == 'string') {
-	            this._drawCommands = this._drawCommands.concat("S" + value + ";");
-	        }
-	        else if (value instanceof FillStylePattern) {
-	            if (value._img instanceof Image) {
-	                if (!(value._img.src in this._images)) {
-	                    var new_image = GCanvas.createImage();
-	                    new_image.width = value._img.width;
-	                    new_image.height = value._img.height;
-	                    new_image.src = value._img.src;
-	                    new_image.complete = value._img.complete;
-	                    this._images[value._img.src] = new_image;
-	                } else {
-	                    this._drawCommands = this._drawCommands.concat("G" + this._images[value._img.src]._id + "," + value._style + ";");
-	                 }
-	            }
-	            else if (value._img instanceof GCanvasImage){
-	                this._drawCommands = this._drawCommands.concat("G" + value._img._id + "," + value._style + ";");
-	            }
-	        }
-	        else if (value instanceof FillStyleLinearGradient) {
-	            var command = "D" + value._start_pos._x + "," + value._start_pos._y + ","
-	                + value._end_pos._x + "," + value._end_pos._y + "," + value._stop_count;
-
-	            for (var i = 0; i < value._stop_count; ++i) {
-	                command += ("," + value._stops[i]._pos + "," + value._stops[i]._color);
-	            }
-	            this._drawCommands = this._drawCommands.concat(command + ";");
-	            //console.log('createLinearGradient command -> ' + command);
-	        }
-	        else if (value instanceof FillStyleRadialGradient) {
-	            var command = "H" + value._start_pos._x + "," + value._start_pos._y + "," + value._start_pos._r + ","
-	                + value._end_pos._x + "," + value._end_pos._y + "," + value._end_pos._r + "," + value._stop_count;
-
-	            for (var i = 0; i < value._stop_count; ++i) {
-	                command += ("," + value._stops[i]._pos + "," + value._stops[i]._color);
-	            }
-	            this._drawCommands = this._drawCommands.concat(command + ";");
-	            //console.log('FillStyleRadialGradient command -> ' + command);
-	        }
-	    }
-	});
-
-	/**
-	 * Represents the width of the lines.
-	 *
-	 * @type {number}
-	 * @name GContext2D#lineWidth
-	 * @example // set context lineWidth context.lineWidth = 2;
-	 */
-	Object.defineProperty(GContext2D.prototype, "lineWidth", {
-	    get : function() {
-	        return this._lineWidth;
-	    },
-	    set : function(value) {
-	        this._lineWidth = value;
-	        this._drawCommands = this._drawCommands.concat("W" + value
-	                + ";");
-	    }
-	});
-	/**
-	 * The lineCap property sets or returns the style of the end caps for a line.
-	 *
-	 * @type {number}
-	 * @name GContext2D#lineCap
-	 * @example // set context lineCap context.lineCap="round";
-	 */
-	Object.defineProperty(GContext2D.prototype, "lineCap", {
-	    get : function() {
-	        return this._lineCap;
-	    },
-	    set : function(value) {
-	        this._lineCap = value;
-	        this._drawCommands = this._drawCommands.concat("C" + value + ";");
-	    }
-	});
-
-
-	/**
-	 * Sets or returns the type of corner created, when two lines meet
-	 *
-	 * @type {number}
-	 * @name GContext2D#lineJoin
-	 * @example // set context lineJoin context.lineJoin="round";
-	 */
-	Object.defineProperty(GContext2D.prototype, "lineJoin", {
-	    get : function() {
-	        return this._lineJoin;
-	    },
-	    set : function(value) {
-	        this._lineJoin = value;
-	        this._drawCommands = this._drawCommands.concat("J" + value + ";");
-	    }
-	});
-
-
-	/**
-	 * Sets or returns the maximum miter length
-	 *
-	 * @type {number}
-	 * @name GContext2D#miterLimit
-	 * @example // set context miterLimit context.miterLimit=10;
-	 */
-	Object.defineProperty(GContext2D.prototype, "miterLimit", {
-	    get : function() {
-	        return this._miterLimit;
-	    },
-	    set : function(value) {
-	        this._miterLimit = value;
-	        this._drawCommands = this._drawCommands.concat("M" + value + ";");
-	    }
-	});
-
-	/**
-	 * Represents the globalCompositeOperation value to be used with drawing
-	 * commands where 1 is completely visible and 0 is fully transparent.
-	 *
-	 * @type {number}
-	 * @name GContext2D#globalCompositeOperation
-	 */
-	Object.defineProperty(GContext2D.prototype, "globalCompositeOperation", {
-	    get : function() {
-	        return this._globalCompositeOperation;
-	    },
-
-	    set : function(value) {
-	        // if (this._globalCompositeOperation != value) {
-
-	        this._globalCompositeOperation = value;
-	        var mode = 0;
-	        switch (value) {
-	        case "source-over":
-	            mode = 0;
-	            break;
-	        case "source-atop":
-	            mode = 5;
-	            break;
-	        case "source-in":
-	            mode = 0;
-	            break;
-	        case "source-out":
-	            mode = 2;
-	            break;
-	        case "destination-over":
-	            mode = 4;
-	            break;
-	        case "destination-atop":
-	            mode = 4;
-	            break;
-	        case "destination-in":
-	            mode = 4;
-	            break;
-	        case "destination-out":
-	            mode = 3;
-	            break;
-	        case "lighter":
-	            mode = 1;
-	            break;
-	        case "copy":
-	            mode = 2;
-	            break;
-	        case "xor":
-	            mode = 6;
-	            break;
-	        default:
-	            mode = 0;
-	        }
-
-	        this._drawCommands = this._drawCommands.concat("B" + mode + ";");
-	        // }
-	    }
-	});
-
-	/**
-	 * Represents the textAlign value to be used with drawing commands
-	 *
-	 * @type {number}
-	 * @name GContext2D#textAlign
-	 */
-	Object.defineProperty(GContext2D.prototype, "textAlign", {
-	    get : function() {
-	        return this._textAlign;
-	    },
-
-	    set : function(value) {
-	        // if (this._textAlign != value) {
-	        this._textAlign = value;
-	        var Align = 0;
-	        switch (value) {
-	        case "start":
-	            Align = 0;
-	            break;
-	        case "end":
-	            Align = 1;
-	            break;
-	        case "left":
-	            Align = 2;
-	            break;
-	        case "center":
-	            Align = 3;
-	            break;
-	        case "right":
-	            Align = 4;
-	            break;
-	        default:
-	            Align = 0;
-	        }
-
-	        this._drawCommands = this._drawCommands.concat("A" + Align + ";");
-	        // }
-	    }
-
-	});
-
-	/**
-	 * Represents the _textBaseline value to be used with drawing commands
-	 *
-	 * @type {number}
-	 * @name GContext2D#_textBaseline
-	 */
-	Object.defineProperty(GContext2D.prototype, "textBaseline", {
-	    get : function() {
-	        return this._textBaseline;
-	    },
-
-	    set : function(value) {
-	        this._textBaseline = value;
-	        var baseline = 0;
-	        switch (value) {
-	        case "alphabetic":
-	            baseline = 0;
-	            break;
-	        case "middle":
-	            baseline = 1;
-	            break;
-	        case "top":
-	            baseline = 2;
-	            break;
-	        case "hanging":
-	            baseline = 3;
-	            break;
-	        case "bottom":
-	            baseline = 4;
-	            break;
-	        case "ideographic":
-	            baseline = 5;
-	            break;
-	        default:
-	            baseline = 0;
-	            break;
-	        }
-
-	        this._drawCommands = this._drawCommands.concat("E" + baseline + ";");
-	    }
-
-	});
-
-	/**
-	 * Represents the textAlign value to be used with drawing commands
-	 *
-	 * @type {number}
-	 * @name GContext2D#textAlign
-	 */
-	Object.defineProperty(GContext2D.prototype, "font", {
-	    get : function() {
-	        return this._font;
-	    },
-	    set : function(value) {
-	        // if (this._font != value) {
-	        this._font = value;
-	        //this._apiContext.font = this._font;
-	        this._drawCommands = this._drawCommands.concat("j" + value + ";");
-	        // }
-	    }
-
-	});
-
-	/**
-	 * Loads an image into the plugin to be used as a texture in the GCanvas.
-	 * Generally this method is never called directly. Instead, it is called
-	 * indirectly through GCanvasImage instances upon setting their
-	 * {@link GCanvasImage#src|GCanvasImage.src} property.
-	 *
-	 * @param {GCanvasImage}
-	 *            image The image to be loaded into the GCanvas plugin.
-	 * @param {function}
-	 *            [successCallback] A callback that is fired when the image has
-	 *            been successfully loaded.
-	 * @param {function}
-	 *            [errorCallback] A callback that is fired when there was an
-	 *            error in loading the image.
-	 * @example // create a new image and load // it from a relative URL path
-	 *          var myImage = GCanvas.createImage(); myImage.src =
-	 *          "images/spritesheet.jpg"; // calls loadTexture for you
-	 * @private
-	 */
-	GContext2D.prototype.loadTexture = function(image, successCallback, errorCallback) {
-	    var data = this._imageMap.get(image.src);
-	    if( data )
-	    {
-	        successCallback && successCallback(data);
-	        return;
-	    }
-
-	    var that = this;
-	    GBridge.preLoadImage([image.src, image.id], function(e){
-	        if (e){
-	            that._imageMap.put(image.src, e);
-	            successCallback && successCallback(e);
-	        }else{
-	            GLog.d("GContext2D loadTexture errorCallback!");
-	            errorCallback && errorCallback(e);
-	        }
-	    });
-	};
-
-	/**
-	 * Unloads an image from the GCanvas plugin. Generally this method is
-	 * never called directly. Instead, it is called indirectly through
-	 * GCanvasImage instances upon setting their
-	 * {@link GCanvasImage#src|GCanvasImage.src} property to a false value
-	 * such as <code>null</code> or an empty string (<code>""</code>).
-	 *
-	 * @param {GCanvasImage}
-	 *            image The image to be unloaded from the GCanvas plugin.
-	 * @example // unload an image from memory myImage.src = null; // calls
-	 *          unloadTexture for you
-	 * @private
-	 */
-	GContext2D.prototype.unloadTexture = function(image) {
-	    this._imageMap.remove(image.src);
-	};
-
-	/**
-	 * Defines the 2D matrix transform applied to drawings within the context.
-	 *
-	 * @param {number}
-	 *            a The value that affects the positioning of pixels along the x
-	 *            axis when scaling or rotating the context.
-	 * @param {number}
-	 *            b The value that affects the positioning of pixels along the y
-	 *            axis when rotating or skewing the context.
-	 * @param {number}
-	 *            c The value that affects the positioning of pixels along the x
-	 *            axis when rotating or skewing the context.
-	 * @param {number}
-	 *            d The value that affects the positioning of pixels along the y
-	 *            axis when scaling or rotating the context.
-	 * @param {number}
-	 *            tx The distance by which to translate the context along the x
-	 *            axis.
-	 * @param {number}
-	 *            ty The distance by which to translate the context along the y
-	 *            axis.
-	 */
-	GContext2D.prototype.setTransform = function(a, b, c, d, tx, ty) {
-	    this._drawCommands = this._drawCommands.concat("t"
-	            + (a === 1 ? "1" : a.toFixed(6)) + ","
-	            + (b === 0 ? "0" : b.toFixed(6)) + ","
-	            + (c === 0 ? "0" : c.toFixed(6)) + ","
-	            + (d === 1 ? "1" : d.toFixed(6)) + "," + tx + "," + ty + ";");
-	};
-
-	/**
-	 * Defines an added 2D matrix transform applied to drawings within the
-	 * context.
-	 *
-	 * @param {number}
-	 *            a The value added to the value that affects the positioning of
-	 *            pixels along the x axis when scaling or rotating the context.
-	 * @param {number}
-	 *            b The value added to the value that affects the positioning of
-	 *            pixels along the y axis when rotating or skewing the context.
-	 * @param {number}
-	 *            c The value added to the value that affects the positioning of
-	 *            pixels along the x axis when rotating or skewing the context.
-	 * @param {number}
-	 *            d The value added to the value that affects the positioning of
-	 *            pixels along the y axis when scaling or rotating the context.
-	 * @param {number}
-	 *            tx The value added to the distance by which to translate the
-	 *            context along the x axis.
-	 * @param {number}
-	 *            ty The value added to the distance by which to translate the
-	 *            context along the y axis.
-	 */
-	GContext2D.prototype.transform = function(a, b, c, d, tx, ty) {
-	    this._drawCommands = this._drawCommands.concat("f"
-	            + (a === 1 ? "1" : a.toFixed(6)) + ","
-	            + (b === 0 ? "0" : b.toFixed(6)) + ","
-	            + (c === 0 ? "0" : c.toFixed(6)) + ","
-	            + (d === 1 ? "1" : d.toFixed(6)) + "," + tx + "," + ty + ";");
-	};
-
-	/**
-	 * Restores the 2D matrix transform to the identity matrix. This is
-	 * equivalent to calling <code>context.setTransform(1,0,0,1,0,0)</code>.
-	 */
-	GContext2D.prototype.resetTransform = function() {
-	    this._drawCommands = this._drawCommands.concat("m;");
-	};
-
-	/**
-	 * Scales the 2D matrix transform along the x and y axes.
-	 *
-	 * @param {number}
-	 *            a The value added to the value that affects the positioning of
-	 *            pixels along the x axis when scaling or rotating the context.
-	 * @param {number}
-	 *            d The value added to the value that affects the positioning of
-	 *            pixels along the y axis when scaling or rotating the context.
-	 */
-	GContext2D.prototype.scale = function(a, d) {
-	    this._drawCommands = this._drawCommands.concat("k" + a.toFixed(6) + ","
-	            + d.toFixed(6) + ";");
-	};
-
-	/**
-	 * Rotates the 2D matrix transform by a specified number of radians.
-	 *
-	 * @param {number}
-	 *            angle The value in radians to rotate the context.
-	 */
-	GContext2D.prototype.rotate = function(angle) {
-	    this._drawCommands = this._drawCommands
-	            .concat("r" + angle.toFixed(6) + ";");
-	};
-
-	/**
-	 * Moves the 2D matrix transform along the x and y axes.
-	 *
-	 * @param {number}
-	 *            tx The value added to the distance by which to translate the
-	 *            context along the x axis.
-	 * @param {number}
-	 *            ty The value added to the distance by which to translate the
-	 *            context along the y axis.
-	 */
-	GContext2D.prototype.translate = function(tx, ty) {
-	    this._drawCommands = this._drawCommands.concat("l" + tx + "," + ty + ";");
-	};
-
-	/**
-	 * Sets a save point for the current context transform. This allows you to
-	 * arbitrarily modify the transform and restore it back to its to its
-	 * original state at the time save() was called by using restore().
-	 *
-	 * @see GContext2D#restore
-	 */
-	GContext2D.prototype.save = function() {
-	    this._savedGlobalAlpha.push(this._globalAlpha);
-	    this._drawCommands = this._drawCommands.concat("v;");
-	};
-
-	/**
-	 * Restores the state of the context transform to the state at the point in
-	 * time when save() was last called.
-	 *
-	 * @see GContext2D#save
-	 */
-	GContext2D.prototype.restore = function() {
-	    this._drawCommands = this._drawCommands.concat("e;");
-	    this._globalAlpha = this._savedGlobalAlpha.pop();
-	};
-
-
-	GContext2D.prototype._concatDrawCmd = function(numArgs, imageInfo,
-	    sx, sy, sw, sh, // source (or destination if fewer args)
-	    dx, dy, dw, dh){// destination
-
-	    if(!imageInfo){
-	        return;
-	    }
-
-	    if(numArgs === 3){
-	        var x = parseFloat(sx) || 0;
-	        var y = parseFloat(sy) || 0;
-
-	        this._drawCommands += ("d" + imageInfo.id + ",0,0,"
-	            + imageInfo.width + "," + imageInfo.height + ","
-	            + x + "," + y + "," + imageInfo.width + "," + imageInfo.height + ";");
-	    }else if(numArgs === 5){
-	        var x = parseFloat(sx) || 0;
-	        var y = parseFloat(sy) || 0;
-	        var width = parseInt(sw) || imageInfo.width;
-	        var height = parseInt(sh) || imageInfo.height;
-
-	        this._drawCommands += ("d" + imageInfo.id + ",0,0,"
-	            + imageInfo.width + "," + imageInfo.height + ","
-	            + x + "," + y + "," + width + "," + height + ";");
-	    }else if(numArgs === 9){
-	        var sx = parseFloat(sx) || 0;
-	        var sy = parseFloat(sy) || 0;
-	        var sw = parseInt(sw) || imageInfo.width;
-	        var sh = parseInt(sh) || imageInfo.height;
-	        var dx = parseFloat(dx) || 0;
-	        var dy = parseFloat(dy) || 0;
-	        var dw = parseInt(dw) || imageInfo.width;
-	        var dh = parseInt(dh) || imageInfo.height;
-
-	        this._drawCommands += ("d" + imageInfo.id + ","
-	            + sx + "," + sy + "," + sw + "," + sh + ","
-	            + dx + "," + dy + "," + dw + "," + dh + ";");
-	    }
-	};
-
-	GContext2D.prototype.drawImage = function(image, // image
-	    sx, sy, sw, sh, // source (or destination if fewer args)
-	    dx, dy, dw, dh) { // destination
-
-	    //GLog.d("[GContext2D.drawImage] start...");
-
-	    var that = this;
-	    var numArgs = arguments.length;
-
-	    var imageCache = this._getImageTexture(image.src);
-	    if (imageCache) {
-	        this._concatDrawCmd(numArgs, image, sx, sy, sw, sh, dx, dy, dw, dh);
-	        return;
-	    }
-
-	    if( GBridge.isIOS() )
-	    {
-	        GBridge.bindImageTexture(that.componentId, image.src, function(){});
-	        that._concatDrawCmd(numArgs, image, sx, sy, sw, sh, dx, dy, dw, dh);
-	        that._saveImageTexture(image.src, image);
-	    }
-	    else
-	    {
-	        GBridge.bindImageTexture(that.componentId, image.src, function(e){
-	            if( !e.error )
-	            {
-	                if(image.width === 0 && e.width > 0){
-	                  image.width = e.width;
-	                }
-
-	                if(image.height === 0 && e.height > 0){
-	                  image.height = e.height;
-	                }
-	                that._concatDrawCmd(numArgs, image, sx, sy, sw, sh, dx, dy, dw, dh);
-	                that._saveImageTexture(image.src, image);
-	            }
-	        });
-	    }
-	};
-
-
-	GContext2D.prototype._getImageTexture = function(url){
-	    if( url )
-	    {
-	        return this._textureMap.get(url);
-	    }
-	    return null;
-	}
-
-	GContext2D.prototype._removeImageTexture = function(url){
-	    if( url )
-	    {
-	        this._textureMap.remove(url);
-	    }
-	}
-
-
-	GContext2D.prototype._saveImageTexture = function(url, e){
-	    if( e && e.src )
-	    {
-	        this._textureMap.put(url, e);
-	    }
-	}
-
-	GContext2D.prototype._clearImageTextures = function(){
-	  this._textureMap.clear();
-	}
-
-
-	/**
-	 * Informs the drawing context that drawing commands have completed for the
-	 * current frame and the should be sent to the GCanvas plugin for drawing
-	 * to the screen.
-	 * <p>
-	 * This method is unique to GContext2D and does not exist within the HTML
-	 * 2D context, so the utility method {@link GCanvas.render} should be
-	 * used to make it easy to call or not call this method depending on the
-	 * context you are currently working with.
-	 * </p>
-	 *
-	 * @example // makes necessary GCanvas render call // if canvas being
-	 *          used is GCanvas var myCanvas = GCanvas.create(); var
-	 *          myContext = myCanvas.getContext("2d");
-	 *  // ... myContext.translate(10,10); myContext.rotate(Math.PI); //
-	 * ...
-	 *  // after all context calls are complete // for the current frame:
-	 * GCanvas.render(); // calls GContext2D.render()
-	 */
-
-	GContext2D.prototype.render = function(flag) {
-	    if (this.timer && typeof flag === "undefined"){
-	        clearInterval(this.timer);
-	        this.timer = null;
-	    }
-
-	    var commands = this._drawCommands;
-	    this._drawCommands = "";
-	    if (commands !== null && commands !== "") {
-	        GBridge.callRender(this.componentId, commands);
-	    }
-	};
-
-	/**
-	 * Implementation of GCanvas.capture.
-	 *
-	 * @private
-	 */
-	GContext2D.prototype.capture = function(x, y, w, h, fileName, successCallback, errorCallback) {
-	    // if (successCallback && typeof successCallback !== 'function') {
-	    //     throw new Error('successCallback parameter not a function');
-	    // }
-	    // if (errorCallback && typeof errorCallback !== 'function') {
-	    //     throw new Error('errorCallback parameter not a function');
-	    // }
-
-	    // GCanvas._toNative(successCallback, errorCallback, 'GCanvas',
-	    //         'capture', [ x, y, w, h, fileName ]);
-	};
-
-
-	GContext2D.prototype.createPattern = function(img, pattern) {
-	    return new FillStylePattern(img, pattern);
-	};
-
-	/**
-	 * Implementation of GCanvas.createLinearGradient(x0, y0, x1, y1).
-	 *
-	 * @private
-	 */
-	 GContext2D.prototype.createLinearGradient = function(x0, y0, x1, y1) {
-	    return new FillStyleLinearGradient(x0, y0, x1, y1);
-	};
-
-	/**
-	 * Implementation of GCanvas.createRadialGradient(x0, y0, x1, y1).
-	 *
-	 * @private
-	 */
-	 GContext2D.prototype.createRadialGradient = function(x0, y0, r0, x1, y1, r1) {
-	    return new FillStyleRadialGradient(x0, y0, r0, x1, y1, r1);
-	};
-
-	GContext2D.prototype.strokeRect = function(x, y, w, h, successCallback,
-	        errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("s" + x + "," + y + "," + w
-	            + "," + h + ";");
-	};
-
-	GContext2D.prototype.clearRect = function(x, y, w, h, successCallback,
-	        errorCallback) {
-	    // TODO: enable it later.
-	    this._drawCommands = this._drawCommands.concat("c" + x + "," + y + "," + w
-	        + "," + h + ";");
-	}
-
-	GContext2D.prototype.clip = function(successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("p;");
-	}
-
-	GContext2D.prototype.resetClip = function(successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("q;");
-	}
-
-	GContext2D.prototype.closePath = function(successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("o;");
-	}
-
-	GContext2D.prototype.moveTo = function(x, y, successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("g" + x.toFixed(6) + ","
-	            + y.toFixed(6) + ";");
-	}
-
-	GContext2D.prototype.lineTo = function(x, y, successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("i" + x.toFixed(6) + ","
-	            + y.toFixed(6) + ";");
-	}
-
-	GContext2D.prototype.quadraticCurveTo = function(cpx, cpy, x, y,
-	        successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("u" + cpx + "," + cpy + ","
-	            + x + "," + y + ";");
-	}
-
-	GContext2D.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y,
-	        successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("z" + cp1x + "," + cp1y
-	            + "," + cp2x + "," + cp2y + "," + x + "," + y + ";");
-	}
-
-	GContext2D.prototype.arcTo = function(x1, y1, x2, y2, radius,
-	        successCallback, errorCallback) {
-	    this._drawCommands = this._drawCommands.concat("h" + x1 + "," + y1 + ","
-	            + x2 + "," + y2 + "," + radius + ";");
-	}
-
-	/**
-	 * Resets the current default path.
-	 *
-	 * @param null
-	 */
-	GContext2D.prototype.beginPath = function() {
-	    this._drawCommands = this._drawCommands.concat("b;");
-	};
-
-	/**
-	 * Paint the specified rectangular area using the fillStyle. If either
-	 * height or width are zero, this method has no effect.
-	 *
-	 * @param {number}
-	 *            x The x location of the source clipping rectangle
-	 * @param {number}
-	 *            y The y location of the source clipping rectangle
-	 * @param {number}
-	 *            w The width of the rectangle
-	 * @param {number}
-	 *            h The height of the rectangle
-	 */
-	GContext2D.prototype.fillRect = function(x, y, w, h) {
-	    this._drawCommands = this._drawCommands.concat("n" + x + "," + y + "," + w
-	            + "," + h + ";");
-	};
-
-	/**
-	 * Adds a new closed subpath to the path, representing the given rectangle.
-	 *
-	 * @param {number}
-	 *            x The x location of the rectangle
-	 * @param {number}
-	 *            y The y location of the rectangle
-	 * @param {number}
-	 *            w The width of the rectangle
-	 * @param {number}
-	 *            h The height of the rectangle
-	 */
-	GContext2D.prototype.rect = function(x, y, w, h) {
-	    this._drawCommands = this._drawCommands.concat("w" + x + "," + y + "," + w
-	            + "," + h + ";");
-	};
-
-	/**
-	 * Fills the subpaths of the current default path or the given path with the
-	 * current fill style.
-	 *
-	 * @param {string}
-	 *            path The given path to fill.
-	 */
-	GContext2D.prototype.fill = function(path) {
-	    this._drawCommands = this._drawCommands.concat("L;");
-	};
-
-	/**
-	 * Strokes the subpaths of the current default path or the given path with
-	 * the current stroke style.
-	 *
-	 * @param {string}
-	 *            path The given path to stroke.
-	 */
-	GContext2D.prototype.stroke = function(path) {
-	    this._drawCommands = this._drawCommands.concat("x;");
-	};
-
-	/**
-	 * Adds points to the subpath such that the arc described by the
-	 * circumference of the circle described by the arguments, starting at the
-	 * given start angle and ending at the given end angle, going in the given
-	 * direction (defaulting to clockwise), is added to the path, connected to
-	 * the previous point by a straight line.
-	 *
-	 * @param {number}
-	 *            x
-	 * @param {number}
-	 *            y
-	 * @param {number}
-	 *            radius
-	 * @param {number}
-	 *            startAngle
-	 * @param {number}
-	 *            endAngle
-	 * @param {string}
-	 *            anticlockwise
-	 */
-	GContext2D.prototype.arc = function(x, y, radius, startAngle, endAngle,
-	        anticlockwise) {
-
-	    var ianticlockwise = 0;
-	    if (anticlockwise)
-	        ianticlockwise = 1;
-
-	    this._drawCommands = this._drawCommands.concat("y" + x + "," + y + ","
-	            + radius + "," + startAngle + "," + endAngle + "," + ianticlockwise
-	            + ";");
-	};
-
-
-
-	GContext2D.prototype.fillText = function(text, x, y) {
-	    var tmptext =text.replace(/!/g,"!!");
-	        tmptext =tmptext.replace(/,/g,"!,");
-	        tmptext =tmptext.replace(/;/g,"!;");
-	    this._drawCommands = this._drawCommands.concat("T" + tmptext + "," + x + ","
-	            + y + ",0.0;");
-	};
-
-	GContext2D.prototype.strokeText = function(text, x, y) {
-	    this._drawCommands = this._drawCommands.concat("U" + text + "," + x + ","
-	            + y + ",0.0;");
-	};
-
-
-	//TODO:这个api有用需要原生的canvas对象,所以不支持
-	GContext2D.prototype.measureText = function(text) {
-	    return -1;
-	    //return this._apiContext.measureText(text);
-	};
-
-	GContext2D.prototype.isPointInPath = function(x,y) {
-	    return true;
-	};
-
-
-	/////////////////////////////////////////////////////////////////
-	//base64
-	/////////////////////////////////////////////////////////////////
-
-	function GarrToBase64(buffer) {
-	    var binary = ''
-	    var bytes = new Uint8Array( buffer )
-	    var len = bytes.byteLength;
-	    for (var i = 0; i < len; i++) {
-	        binary += String.fromCharCode( bytes[ i ] )
-	    }
-	    return btoa( binary );
-	}
-
-	function _GcharDecode (nChr) {
-	  return nChr > 64 && nChr < 91 ?
-	      nChr - 65
-	    : nChr > 96 && nChr < 123 ?
-	      nChr - 71
-	    : nChr > 47 && nChr < 58 ?
-	      nChr + 4
-	    : nChr === 43 ?
-	      62
-	    : nChr === 47 ?
-	      63
-	    :
-	      0;
-	}
-
-	function Gbase64ToArr (sBase64, nBlocksSize) {
-	  var
-	    sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length,
-	    nOutLen = nBlocksSize ? Math.ceil((nInLen * 3 + 1 >> 2) / nBlocksSize) * nBlocksSize : nInLen * 3 + 1 >> 2, taBytes = new Uint8Array(nOutLen);
-
-	  for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
-	    nMod4 = nInIdx & 3;
-	    nUint24 |= _GcharDecode(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;
-	    if (nMod4 === 3 || nInLen - nInIdx === 1) {
-	      for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
-	        taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;
-	      }
-	      nUint24 = 0;
-
-	    }
-	  }
-
-	  return taBytes;
-	}
-
-
-
-	/////////////////////////////////////////////////////////////////
-	//GCanvasImage
-	/////////////////////////////////////////////////////////////////
-	function GImageData(w, h) {
-	    GLog.d("GImageData wh=" + w + "," + h);
-	    this.width = w;
-	    this.height = h;
-	    this.data = new Uint8Array(w*h*4);
-	}
-
-	GContext2D.prototype.createImageData = function(w, h) {
-	    GLog.d("GContext2D::createImageData wh=" + w + "," + h);
-	    return new GImageData(w,h);
-	};
-
-
-	GContext2D.prototype._putImageData = function(data,dx, dy, sw, sh,  dw, dh){
-	    this._drawCommands = this._drawCommands.concat("P"
-	        + dx + ","
-	        + dy + ","
-	        + sw + ","
-	        + sh + ","
-	        + dw + ","
-	        + dh + ","
-	        + GarrToBase64(data) + ";");
-	}
-	GContext2D.prototype.putImageData = function(imgData, x, y, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {
-	    GLog.d("GContext2D::putImageData [" + arguments.length + "] "
-	        + "dest_xy=(" + x + "," + y + ") "
-	        + "dirty_xy=(" + dirtyX + "," + dirtyY + ") "
-	        + "dirty_wh=(" + dirtyWidth + "," + dirtyHeight + ") ");
-
-	    if (arguments.length <= 3){
-	        this._putImageData(imgData.data, x, y, imgData.width, imgData.height, imgData.width, imgData.height);
-	    }
-	    else{
-	        var destData = new Uint8Array(dirtyWidth*dirtyHeight*4);
-	        var imgPos;
-	        var destPos = 0
-	        for(var i =0; i < dirtyHeight; i++){
-	            imgPos = (imgData.width*(dirtyY + i) + dirtyX)*4;
-	            for(var j=0; j< dirtyWidth; ++j){
-	                destData[destPos++]=imgData.data[imgPos++];
-	                destData[destPos++]=imgData.data[imgPos++];
-	                destData[destPos++]=imgData.data[imgPos++];
-	                destData[destPos++]=imgData.data[imgPos++];
-	            }
-	        }
-
-	        this._putImageData(destData, x+dirtyX, y+dirtyY, dirtyWidth, dirtyHeight, dirtyWidth, dirtyHeight);
-	    }
-	};
-
-
-	GContext2D.prototype.getImageDataAsyn = function(x, y, w, h) {
-	    return '';
-	    // GLog.d("GContext2D::getImageDataAsyn xy=(" + x + "," + y + "), wh=(" + w + ","+ h +")");
-	    // GCanvas._instance.getContext().render("auto");
-	    // var len = w*h;
-	    // var imgData = new GImageData(w,h);
-	    // imgData._x = x;
-	    // imgData._y = y;
-	    // imgData._dataGet = 0;
-	    // imgData._split = 0;
-	    // var me = this;
-	    // me._getImageData.push(imgData);
-
-	    // var h2 = Math.floor(262144/w);// 2^18
-	    // if (h2 < h)
-	    //     imgData._split = 1;
-
-	    // function getImageDataAsynSuccess(getData) {
-	    //     var destData = me._getImageData[0];
-	    //     GLog.d("GContext2D::getImageDataAsyn: dataGet=" + destData._dataGet);
-	    //     if (0 == destData._split){// one part
-	    //         destData.data = Gbase64ToArr(getData);
-	    //         destData._dataGet += destData.data.length;
-	    //     }else{// multi parts
-	    //         var taBytes  = Gbase64ToArr(getData);
-	    //         destData._dataGet += taBytes.length;
-	    //         for (var i=0;i<taBytes.length;i++){
-	    //             destData.data[destData._dataGet+i] = taBytes[i];
-	    //         }
-	    //     }
-
-	    //     if (destData._dataGet >= (destData._x*destData._y)){
-	    //         if (typeof destData.onload === 'function') {
-	    //             GLog.d("GContext2D::getImageDataAsyn: callback exec.");
-	    //             destData.onload();
-	    //         }
-	    //         me._getImageData.splice(0,1);//delete first data
-	    //     }
-	    // }
-
-	    // for(var i=0; i<h; i+= h2){
-	    //     GCanvas._toNative(getImageDataAsynSuccess, getImageDataAsynSuccess, 'GCanvas',
-	    //             'getImageData', [ x, y+i, w, (i+h2>h)?(h-i):h2 ]);
-	    // }
-
-
-	    // return imgData;
-	};
-
-
-
-	module.exports = GContext2D;
-
-
-/***/ }),
-
-/***/ 118:
-/***/ (function(module, exports) {
-
-	
-	var context;
-	function getProto (Weex) {
-	  return {
-	    create: function () {
-	      this.node = document.createElement('canvas')
-	      return this.node
-	    },
-	    getContext: function (type) {
-	      context = this.node.getContext(type || '2d')
-	      return context
-	    },
-
-	    getContextAsyn: function (type, callback) {
-	      context = this.node.getContext(type || '2d')
-	      callback(context)
-	    },
-
-	    drawImage: function (url) {
-	      var img = new Image();
-	      img.src = url
-	      arguments[0] = img
-	      return context.drawImage.apply(context, arguments)
-	    }
-
-	  }
-	}
-
-	function init (Weex) {
-	  var Component = Weex.Component
-	  var extend = Weex.utils.extend
-
-	  function GCanvas (data) {
-	    Component.call(this, data)
-	  }
-
-	  GCanvas.prototype = Object.create(Component.prototype)
-	  extend(GCanvas.prototype, getProto(Weex))
-
-	  Weex.registerComponent('gcanvas', GCanvas)
-	}
-
-	module.exports =  {
-	  init: init
-	}
-
-
-
-/***/ }),
-
-/***/ 119:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    ref: "test"
-	  }, [_c(_vm.tagName, {
-	    ref: "canvas_holder",
-	    tag: "component",
-	    staticStyle: {
-	      width: "750px",
-	      height: "750px"
-	    },
-	    attrs: {
-	      "width": "750",
-	      "height": "750"
-	    }
-	  })], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/modules/clipboard.js b/src/main/assets/vue/modules/clipboard.js
deleted file mode 100644
index a0f6c33..0000000
--- a/src/main/assets/vue/modules/clipboard.js
+++ /dev/null
@@ -1,712 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(120)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(121)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/clipboard.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(8)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(9)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(10)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-71b34881"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 8:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "btn": {
-	    "marginBottom": 0,
-	    "alignItems": "center",
-	    "justifyContent": "center",
-	    "borderWidth": 1,
-	    "borderStyle": "solid",
-	    "borderColor": "#333333"
-	  },
-	  "btn-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "btn-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "btn-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "btn-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "btn-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "btn-link": {
-	    "borderColor": "rgba(0,0,0,0)",
-	    "borderRadius": 0
-	  },
-	  "btn-txt-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-txt-primary": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-success": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-info": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-warning": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-danger": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-link": {
-	    "color": "rgb(51,122,183)"
-	  },
-	  "btn-sz-large": {
-	    "width": 300,
-	    "height": 100,
-	    "paddingTop": 25,
-	    "paddingBottom": 25,
-	    "paddingLeft": 40,
-	    "paddingRight": 40,
-	    "borderRadius": 15
-	  },
-	  "btn-sz-middle": {
-	    "width": 240,
-	    "height": 80,
-	    "paddingTop": 15,
-	    "paddingBottom": 15,
-	    "paddingLeft": 30,
-	    "paddingRight": 30,
-	    "borderRadius": 10
-	  },
-	  "btn-sz-small": {
-	    "width": 170,
-	    "height": 60,
-	    "paddingTop": 12,
-	    "paddingBottom": 12,
-	    "paddingLeft": 25,
-	    "paddingRight": 25,
-	    "borderRadius": 7
-	  },
-	  "btn-txt-sz-large": {
-	    "fontSize": 45
-	  },
-	  "btn-txt-sz-middle": {
-	    "fontSize": 35
-	  },
-	  "btn-txt-sz-small": {
-	    "fontSize": 30
-	  }
-	}
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size]
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(14)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(15)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(16)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-36fe495c"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 14:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "tip": {
-	    "paddingLeft": 36,
-	    "paddingRight": 36,
-	    "paddingTop": 36,
-	    "paddingBottom": 36,
-	    "borderRadius": 10
-	  },
-	  "tip-txt": {
-	    "fontSize": 28
-	  },
-	  "tip-success": {
-	    "backgroundColor": "#dff0d8",
-	    "borderColor": "#d6e9c6"
-	  },
-	  "tip-txt-success": {
-	    "color": "#3c763d"
-	  },
-	  "tip-info": {
-	    "backgroundColor": "#d9edf7",
-	    "borderColor": "#bce8f1"
-	  },
-	  "tip-txt-info": {
-	    "color": "#31708f"
-	  },
-	  "tip-warning": {
-	    "backgroundColor": "#fcf8e3",
-	    "borderColor": "#faebcc"
-	  },
-	  "tip-txt-warning": {
-	    "color": "#8a6d3b"
-	  },
-	  "tip-danger": {
-	    "backgroundColor": "#f2dede",
-	    "borderColor": "#ebccd1"
-	  },
-	  "tip-txt-danger": {
-	    "color": "#a94442"
-	  }
-	}
-
-/***/ }),
-
-/***/ 15:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 16:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type]
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 120:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	var clipboard = weex.requireModule('clipboard');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      textToCopy: '',
-	      textFromPaste: '',
-	      tips: ''
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3),
-	    tip: __webpack_require__(13),
-	    button: __webpack_require__(7)
-	  },
-	  mounted: function mounted() {
-	    this.tips = "1. Just click COPY button. It will auto generate a string with random text, and copy to system clipboard. \n 2. do copy in another app, then come back and click PASTE button.";
-	  },
-	  methods: {
-	    doCopy: function doCopy() {
-	      modal.toast({ 'message': 'doCopy!', duration: 0.5 });
-	      textToCopy = "autoGenerateTextToCopy" + Math.random();
-	      clipboard.setString(textToCopy);
-	      this.textToCopy = textToCopy;
-	      this.tips = "copy done. Now system clipboard has string of '" + textToCopy + "', try PASTE button, or paste in another app.";
-	    },
-	    doPaste: function doPaste() {
-	      var me = this;
-	      modal.toast({ 'message': 'doPaste!', duration: 0.5 });
-	      clipboard.getString(function (ret) {
-	        console.log("paste result is " + JSON.stringify(ret));
-	        me.textFromPaste = ret.data;
-	        me.tips = "Paste done. Only support native(Android/iOS) NOW. according to security reason, paste in html5 is not supported.";
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 121:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "Clipboard",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    attrs: {
-	      "title": "Copy to clipboard5"
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      lineHeight: "40px",
-	      fontSize: "28px"
-	    }
-	  }, [_vm._v(_vm._s(_vm.textToCopy))]), _c('button', {
-	    attrs: {
-	      "type": "info",
-	      "size": "middle",
-	      "value": "Copy"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.doCopy($event)
-	      }
-	    }
-	  })], 1), _c('panel', {
-	    attrs: {
-	      "title": "Paste from clipboard"
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      lineHeight: "40px",
-	      fontSize: "28px"
-	    }
-	  }, [_vm._v(_vm._s(_vm.textFromPaste))]), _c('button', {
-	    attrs: {
-	      "type": "info",
-	      "size": "middle",
-	      "value": "Paste"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.doPaste($event)
-	      }
-	    }
-	  })], 1), _c('panel', {
-	    attrs: {
-	      "title": "Result"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: {
-	      marginBottom: "20px"
-	    },
-	    attrs: {
-	      "value": _vm.tips
-	    }
-	  })], 1)], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/modules/instance-api.js b/src/main/assets/vue/modules/instance-api.js
deleted file mode 100644
index 8b94ffd..0000000
--- a/src/main/assets/vue/modules/instance-api.js
+++ /dev/null
@@ -1,317 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(122)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(123)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/instance-api.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 122:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      config: ''
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3)
-	  },
-	  created: function created() {
-	    var config = this.$getConfig();
-	    console.log('config', JSON.stringify(config));
-	    this.config = JSON.stringify(config, null, 2);
-	  }
-	};
-
-/***/ }),
-
-/***/ 123:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "$getConfig()",
-	      "type": "primary"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.config))])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/modules/modal.js b/src/main/assets/vue/modules/modal.js
deleted file mode 100644
index 62e6d51..0000000
--- a/src/main/assets/vue/modules/modal.js
+++ /dev/null
@@ -1,598 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(124)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(125)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/modal.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(8)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(9)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(10)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-71b34881"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 8:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "btn": {
-	    "marginBottom": 0,
-	    "alignItems": "center",
-	    "justifyContent": "center",
-	    "borderWidth": 1,
-	    "borderStyle": "solid",
-	    "borderColor": "#333333"
-	  },
-	  "btn-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "btn-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "btn-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "btn-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "btn-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "btn-link": {
-	    "borderColor": "rgba(0,0,0,0)",
-	    "borderRadius": 0
-	  },
-	  "btn-txt-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-txt-primary": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-success": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-info": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-warning": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-danger": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-link": {
-	    "color": "rgb(51,122,183)"
-	  },
-	  "btn-sz-large": {
-	    "width": 300,
-	    "height": 100,
-	    "paddingTop": 25,
-	    "paddingBottom": 25,
-	    "paddingLeft": 40,
-	    "paddingRight": 40,
-	    "borderRadius": 15
-	  },
-	  "btn-sz-middle": {
-	    "width": 240,
-	    "height": 80,
-	    "paddingTop": 15,
-	    "paddingBottom": 15,
-	    "paddingLeft": 30,
-	    "paddingRight": 30,
-	    "borderRadius": 10
-	  },
-	  "btn-sz-small": {
-	    "width": 170,
-	    "height": 60,
-	    "paddingTop": 12,
-	    "paddingBottom": 12,
-	    "paddingLeft": 25,
-	    "paddingRight": 25,
-	    "borderRadius": 7
-	  },
-	  "btn-txt-sz-large": {
-	    "fontSize": 45
-	  },
-	  "btn-txt-sz-middle": {
-	    "fontSize": 35
-	  },
-	  "btn-txt-sz-small": {
-	    "fontSize": 30
-	  }
-	}
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size]
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 124:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {};
-	  },
-	  components: {
-	    panel: __webpack_require__(3),
-	    button: __webpack_require__(7)
-	  },
-	  methods: {
-	    toast: function toast(msg, duration) {
-	      if (!msg || typeof msg !== 'string') {
-	        msg = 'I am Toast show!';
-	      }
-	      duration = duration || 2;
-	      modal.toast({
-	        'message': msg,
-	        'duration': duration
-	      });
-	    },
-	    alert: function alert(msg, okTitle, cancelTitle) {
-	      if (!msg || typeof msg !== 'string') {
-	        msg = "I am Alert!";
-	      }
-	      modal.alert({
-	        'message': msg,
-	        'okTitle': okTitle,
-	        'cancelTitle': cancelTitle
-	      }, function () {
-	        modal.toast({ message: "Click Alert OK Bnt!!" });
-	      });
-	    },
-	    confirm: function confirm(msg, okTitle, cancelTitle) {
-	      if (!msg || typeof msg !== 'string') {
-	        msg = "I am Confirm!";
-	      }
-	      okTitle = okTitle || "OK";
-	      cancelTitle = cancelTitle || "Cancel";
-	      modal.confirm({
-	        'message': msg,
-	        'okTitle': okTitle,
-	        'cancelTitle': cancelTitle
-	      }, function (result) {
-	        modal.toast({ message: "Click Confirm  " + JSON.stringify(result) });
-	      });
-	    },
-	    prompt: function prompt() {
-	      modal.prompt({
-	        'message': 'I am Prompt!',
-	        'okTitle': 'ok',
-	        'cancelTitle': 'cancel'
-	      }, function (result) {
-	        modal.toast({ message: "Click Prompt  " + JSON.stringify(result) });
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 125:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "Toast",
-	      "type": "primary"
-	    }
-	  }, [_c('button', {
-	    attrs: {
-	      "type": "primary",
-	      "value": "Toast"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.toast($event)
-	      }
-	    }
-	  })], 1), _c('panel', {
-	    attrs: {
-	      "title": "Dialog",
-	      "type": "primary"
-	    }
-	  }, [_c('button', {
-	    staticStyle: {
-	      marginBottom: "20px"
-	    },
-	    attrs: {
-	      "type": "success",
-	      "value": "Alert"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.alert($event)
-	      }
-	    }
-	  }), _c('button', {
-	    staticStyle: {
-	      marginBottom: "20px"
-	    },
-	    attrs: {
-	      "type": "primary",
-	      "value": "Confirm"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.confirm($event)
-	      }
-	    }
-	  }), _c('button', {
-	    attrs: {
-	      "type": "warning",
-	      "value": "Prompt"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.prompt($event)
-	      }
-	    }
-	  })], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/modules/picker.js b/src/main/assets/vue/modules/picker.js
deleted file mode 100644
index 3b5bf46..0000000
--- a/src/main/assets/vue/modules/picker.js
+++ /dev/null
@@ -1,242 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(126)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(127)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(128)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/picker.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-4373d0c4"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 126:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "container": {
-	    "flex": 1
-	  }
-	}
-
-/***/ }),
-
-/***/ 127:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var picker = weex.requireModule('picker');
-	module.exports = {
-	  data: {
-	    normalpickData: '',
-	    pickDateData: '',
-	    pickTimeData: ''
-	  },
-	  methods: {
-	    normalpick: function normalpick() {
-	      var self = this;
-	      picker.pick({
-	        height: '300px',
-	        items: [1, 2, 3, 4]
-	      }, function (ret) {
-	        var result = ret.result;
-	        if (result == 'success') {
-	          self.normalpickData = ret.data;
-	        }
-	      });
-	    },
-	    pickDate: function pickDate(e) {
-	      var self = this;
-	      picker.pickDate({
-	        'value': '2016-12-20',
-	        'max': '2016-12-30',
-	        'min': '2014-12-30'
-	      }, function (ret) {
-	        var result = ret.result;
-	        if (result == 'success') {
-	          self.pickDateData = ret.data;
-	        }
-	      });
-	    },
-	    pickTime: function pickTime() {
-	      var self = this;
-	      picker.pickTime({}, function (ret) {
-	        var result = ret.result;
-	        if (result == 'success') {
-	          self.pickTimeData = ret.data;
-	        }
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 128:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["conatiner"]
-	  }, [_vm._m(0), _c('div', {
-	    staticStyle: {
-	      margin: "20px",
-	      padding: "20px",
-	      backgroundColor: "#1ba1e2",
-	      color: "#fff"
-	    },
-	    on: {
-	      "click": _vm.normalpick
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      color: "#fff"
-	    }
-	  }, [_vm._v("normalpick" + _vm._s(_vm.normalpickData))])]), _c('div', {
-	    staticStyle: {
-	      margin: "20px",
-	      padding: "20px",
-	      backgroundColor: "#1ba1e2",
-	      color: "#fff"
-	    },
-	    on: {
-	      "click": _vm.pickDate
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      color: "#fff"
-	    }
-	  }, [_vm._v("pickDate" + _vm._s(_vm.pickDateData))])]), _c('div', {
-	    staticStyle: {
-	      margin: "20px",
-	      padding: "20px",
-	      backgroundColor: "#1ba1e2",
-	      color: "#fff"
-	    },
-	    on: {
-	      "click": _vm.pickTime
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      color: "#fff"
-	    }
-	  }, [_vm._v("pickTime" + _vm._s(_vm.pickTimeData))])])])
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80px",
-	      padding: "20px",
-	      color: "white"
-	    }
-	  }, [_vm._v("picker")])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/modules/storage.js b/src/main/assets/vue/modules/storage.js
deleted file mode 100644
index e98287c..0000000
--- a/src/main/assets/vue/modules/storage.js
+++ /dev/null
@@ -1,394 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(129)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(130)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/storage.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 129:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var storage = weex.requireModule('storage');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      setItemResult: 'loading',
-	      getItemResult: 'loading',
-	      removeItemResult: 'loading',
-	      lengthResult: 'loading',
-	      getAllKeysResult: 'loading'
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3)
-	  },
-	  created: function created() {
-	    var me = this;
-
-	    //setItem
-	    storage.setItem('foo', 'foo-value', function (e) {
-	      console.log('set [foo<->foo-value]:' + JSON.stringify(e));
-	      me.setItemResult = 'foo:' + JSON.stringify(e) + '\n';
-	    });
-	    storage.setItem('bar', 'bar-value', function (e) {
-	      console.log('set [bar<->bar-value]:' + JSON.stringify(e));
-	      me.setItemResult = me.setItemResult + 'bar:' + JSON.stringify(e);
-	    });
-
-	    //getItem
-	    storage.getItem('foo', function (e) {
-	      console.log('get foo result:' + JSON.stringify(e));
-	      me.getItemResult = 'get foo,value is ' + e.data + '\n';
-	    });
-	    storage.getItem('bar', function (e) {
-	      console.log('get bar result:' + JSON.stringify(e));
-	      me.getItemResult += 'get bar,value is ' + e.data;
-	    });
-
-	    //length
-	    storage.length(function (e) {
-	      console.log('length:' + JSON.stringify(e));
-	      me.lengthResult = 'current length is ' + e.data;
-	    });
-
-	    //getAllKeys
-	    storage.getAllKeys(function (e) {
-	      console.log('getAllKeys:' + JSON.stringify(e));
-	      me.getAllKeysResult = '' + e.data;
-	      //me.getAllKeysResult +=' '+ typeof e.data
-	    });
-
-	    //removeItem
-	    storage.removeItem('foo', function (e) {
-	      console.log('remove foo:' + JSON.stringify(e));
-	      me.removeItemResult = 'remove item foo ' + e.result;
-	    });
-	  }
-	};
-
-/***/ }),
-
-/***/ 130:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "storage API",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    attrs: {
-	      "title": "setItem"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.setItemResult))])]), _c('panel', {
-	    attrs: {
-	      "title": "getItem"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.getItemResult))])]), _c('panel', {
-	    attrs: {
-	      "title": "length"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.lengthResult))])]), _c('panel', {
-	    attrs: {
-	      "title": "getAllKeys"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.getAllKeysResult))])]), _c('panel', {
-	    attrs: {
-	      "title": "removeItem"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.removeItemResult))])])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/modules/stream.js b/src/main/assets/vue/modules/stream.js
deleted file mode 100644
index f08f183..0000000
--- a/src/main/assets/vue/modules/stream.js
+++ /dev/null
@@ -1,490 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(131)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(132)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/stream.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 131:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var stream = weex.requireModule('stream');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      getJsonpResult: 'loading...',
-	      getResult: 'loading...',
-	      postResult: 'loading...',
-	      putResult: 'loading...',
-	      deleteResult: 'loading...',
-	      headResult: 'loading...',
-	      patchResult: 'loading...'
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3)
-	  },
-	  created: function created() {
-	    var me = this;
-	    var GET_URL_JSONP = 'http://jsfiddle.net/echo/jsonp/?callback=anything&result=content_in_response';
-	    var GET_URL = 'http://httpbin.org/get';
-	    var POST_URL = 'http://httpbin.org/post';
-	    var PUT_URL = 'http://httpbin.org/put';
-	    var DELETE_URL = 'http://httpbin.org/delete';
-	    var HEAD_URL = 'http://httpbin.org/status/418';
-	    var PATCH_URL = 'http://httpbin.org/patch';
-
-	    stream.fetch({
-	      method: 'GET',
-	      url: GET_URL_JSONP,
-	      type: 'jsonp'
-	    }, function (ret) {
-	      if (!ret.ok) {
-	        me.getJsonpResult = "request failed";
-	      } else {
-	        console.log('get:' + ret);
-	        me.getJsonpResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get jsonp in progress:' + response.length);
-	      me.getJsonpResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'GET',
-	      url: GET_URL,
-	      type: 'json'
-	    }, function (ret) {
-	      if (!ret.ok) {
-	        me.getResult = "request failed";
-	      } else {
-	        console.log('get:' + ret);
-	        me.getResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.getResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'POST',
-	      url: POST_URL,
-	      type: 'json'
-	    }, function (ret) {
-	      if (!ret.ok) {
-	        me.postResult = "request failed";
-	      } else {
-	        console.log('get:' + JSON.stringify(ret));
-	        me.postResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.postResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'PUT',
-	      url: PUT_URL,
-	      type: 'json'
-	    }, function (ret) {
-	      if (!ret.ok) {
-	        me.putResult = "request failed";
-	      } else {
-	        console.log('get:' + JSON.stringify(ret));
-	        me.putResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.putResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'DELETE',
-	      url: DELETE_URL,
-	      type: 'json'
-	    }, function (ret) {
-
-	      if (!ret.ok) {
-	        me.deleteResult = "request failed";
-	      } else {
-	        console.log('get:' + JSON.stringify(ret));
-	        me.deleteResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.deleteResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'HEAD',
-	      url: HEAD_URL,
-	      type: 'json'
-	    }, function (ret) {
-	      if (ret.statusText !== 'I\'m a teapot') {
-	        me.headResult = "request failed";
-	      } else {
-	        console.log('get:' + JSON.stringify(ret));
-	        me.headResult = ret.statusText;
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.headResult = "bytes received:" + response.length;
-	    });
-
-	    stream.fetch({
-	      method: 'PATCH',
-	      url: PATCH_URL,
-	      type: 'json'
-	    }, function (ret) {
-	      if (!ret.ok) {
-	        me.patchResult = "request failed";
-	      } else {
-	        console.log('get:' + JSON.stringify(ret));
-	        me.patchResult = JSON.stringify(ret.data);
-	      }
-	    }, function (response) {
-	      console.log('get in progress:' + response.length);
-	      me.patchResult = "bytes received:" + response.length;
-	    });
-	  }
-	};
-
-/***/ }),
-
-/***/ 132:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "stream.fetch",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    attrs: {
-	      "title": "method = GET"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.getResult))])]), _c('panel', {
-	    attrs: {
-	      "title": "method = GET / type = jsonp"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.getJsonpResult))])]), _c('panel', {
-	    attrs: {
-	      "title": "method = POST"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.postResult))])]), _c('panel', {
-	    attrs: {
-	      "title": "method = PUT"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.putResult))])]), _c('panel', {
-	    attrs: {
-	      "title": "method = DELETE"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.deleteResult))])]), _c('panel', {
-	    attrs: {
-	      "title": "method = HEAD"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.headResult))])]), _c('panel', {
-	    attrs: {
-	      "title": "method = PATCH"
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.patchResult))])])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/modules/websocket.js b/src/main/assets/vue/modules/websocket.js
deleted file mode 100644
index 69eb4cc..0000000
--- a/src/main/assets/vue/modules/websocket.js
+++ /dev/null
@@ -1,437 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(133)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(134)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(135)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/modules/websocket.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-35ca2732"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 133:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "input": {
-	    "fontSize": 40,
-	    "height": 80,
-	    "width": 600
-	  },
-	  "button": {
-	    "fontSize": 36,
-	    "width": 150,
-	    "color": "#41B883",
-	    "textAlign": "center",
-	    "paddingTop": 25,
-	    "paddingBottom": 25,
-	    "borderWidth": 2,
-	    "borderStyle": "solid",
-	    "marginRight": 20,
-	    "borderColor": "rgb(162,217,192)",
-	    "backgroundColor": "rgba(162,217,192,0.2)"
-	  }
-	}
-
-/***/ }),
-
-/***/ 134:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	Object.defineProperty(exports, "__esModule", {
-	  value: true
-	});
-
-	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var websocket = weex.requireModule('webSocket');
-	exports.default = {
-	  data: function data() {
-	    return {
-	      connectinfo: '',
-	      sendinfo: '',
-	      onopeninfo: '',
-	      onmessage: '',
-	      oncloseinfo: '',
-	      onerrorinfo: '',
-	      closeinfo: '',
-	      txtInput: '',
-	      navBarHeight: 88,
-	      title: 'Navigator',
-	      dir: 'examples',
-	      baseURL: ''
-	    };
-	  },
-
-	  methods: {
-
-	    connect: function connect() {
-	      websocket.WebSocket('ws://echo.websocket.org', '');
-	      var self = this;
-	      self.onopeninfo = 'connecting...';
-	      websocket.onopen = function (e) {
-	        self.onopeninfo = 'websocket open';
-	      };
-	      websocket.onmessage = function (e) {
-	        console.log(_typeof(e.data));
-	        if (typeof e.data === 'string') {
-	          self.onmessage = e.data;
-	        } else {
-	          var str = 'receive array buffer show with string:' + String.fromCharCode.apply(null, new Float32Array(e.data));
-	          self.onmessage = str;
-	        }
-	      };
-	      websocket.onerror = function (e) {
-	        self.onerrorinfo = e.data;
-	      };
-	      websocket.onclose = function (e) {
-	        self.onopeninfo = '';
-	        self.oncloseinfo = e.code;
-	      };
-	    },
-	    send: function send(e) {
-	      var input = this.$refs.input;
-	      input.blur();
-	      websocket.send(this.txtInput);
-	      this.sendinfo = this.txtInput;
-	    },
-	    sendArrayBuffer: function sendArrayBuffer(e) {
-	      var input = this.$refs.input;
-	      input.blur();
-	      var buffer = new ArrayBuffer(16);
-	      var view = new Float32Array(buffer);
-	      view.set([4, 89, 36.9, 0.765]);
-	      console.log(buffer);
-	      var str = 'send array buffer show with string:' + String.fromCharCode.apply(null, new Float32Array(buffer));
-	      this.sendinfo = str;
-	      websocket.send(buffer);
-	    },
-	    oninput: function oninput(event) {
-	      this.txtInput = event.value;
-	    },
-	    close: function close(e) {
-	      this.closeinfo = 'close connect';
-	      websocket.close();
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 135:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('div', [_vm._m(0), _c('input', {
-	    ref: "input",
-	    staticClass: ["input"],
-	    attrs: {
-	      "type": "text",
-	      "placeholder": "please input message to send",
-	      "autofocus": "false",
-	      "value": ""
-	    },
-	    on: {
-	      "input": _vm.oninput
-	    }
-	  }), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row",
-	      justifyContent: "center"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["button"],
-	    on: {
-	      "click": _vm.connect
-	    }
-	  }, [_vm._v("connect")]), _c('text', {
-	    staticClass: ["button"],
-	    on: {
-	      "click": _vm.send
-	    }
-	  }, [_vm._v("send")]), _c('text', {
-	    staticClass: ["button"],
-	    on: {
-	      "click": _vm.sendArrayBuffer
-	    }
-	  }, [_vm._v("sendArrayBuffer")]), _c('text', {
-	    staticClass: ["button"],
-	    on: {
-	      "click": _vm.close
-	    }
-	  }, [_vm._v("close")])]), _vm._m(1), _c('text', {
-	    staticStyle: {
-	      color: "black",
-	      height: "80px"
-	    }
-	  }, [_vm._v(_vm._s(_vm.closeinfo))]), _vm._m(2), _c('text', {
-	    staticStyle: {
-	      color: "black",
-	      height: "80px"
-	    }
-	  }, [_vm._v(_vm._s(_vm.sendinfo))]), _vm._m(3), _c('text', {
-	    staticStyle: {
-	      color: "black",
-	      height: "80px"
-	    }
-	  }, [_vm._v(_vm._s(_vm.onopeninfo))]), _vm._m(4), _c('text', {
-	    staticStyle: {
-	      color: "black",
-	      height: "400px"
-	    }
-	  }, [_vm._v(_vm._s(_vm.onmessage))]), _vm._m(5), _c('text', {
-	    staticStyle: {
-	      color: "black",
-	      height: "80px"
-	    }
-	  }, [_vm._v(_vm._s(_vm.oncloseinfo))]), _vm._m(6), _c('text', {
-	    staticStyle: {
-	      color: "black",
-	      height: "80px"
-	    }
-	  }, [_vm._v(_vm._s(_vm.onerrorinfo))])])])
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "#286090"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80px",
-	      padding: "20px",
-	      color: "white"
-	    }
-	  }, [_vm._v("websocket")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "lightgray"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80px",
-	      padding: "20px",
-	      color: "black"
-	    }
-	  }, [_vm._v("method = close")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "lightgray"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80px",
-	      padding: "20px",
-	      color: "black"
-	    }
-	  }, [_vm._v("method = send")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "lightgray"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80px",
-	      padding: "20px",
-	      color: "black"
-	    }
-	  }, [_vm._v("method = onopen")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "lightgray"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80px",
-	      padding: "20px",
-	      color: "black"
-	    }
-	  }, [_vm._v("method = onmessage")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "lightgray"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80px",
-	      padding: "20px",
-	      color: "black"
-	    }
-	  }, [_vm._v("method = onclose")])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      backgroundColor: "lightgray"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      height: "80px",
-	      padding: "20px",
-	      color: "black"
-	    }
-	  }, [_vm._v("method = onerror")])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/showcase/a-node-click.js b/src/main/assets/vue/showcase/a-node-click.js
deleted file mode 100644
index 7f4f090..0000000
--- a/src/main/assets/vue/showcase/a-node-click.js
+++ /dev/null
@@ -1,244 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(136)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(137)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(138)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/a-node-click.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-07076933"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 136:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "list": {
-	    "height": 2000
-	  },
-	  "cell": {
-	    "height": 400,
-	    "backgroundColor": "#0000FF"
-	  },
-	  "txt": {
-	    "fontSize": 64,
-	    "height": 84,
-	    "lineHeight": 84,
-	    "paddingTop": 10,
-	    "paddingRight": 10,
-	    "paddingBottom": 10,
-	    "paddingLeft": 10
-	  },
-	  "ct": {
-	    "width": 200,
-	    "height": 200,
-	    "backgroundColor": "#ffffff"
-	  }
-	}
-
-/***/ }),
-
-/***/ 137:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	Object.defineProperty(exports, "__esModule", {
-	  value: true
-	});
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	exports.default = {
-	  data: function data() {
-	    return {
-	      // url: '//m.taobao.com'
-	      url: '#'
-	    };
-	  },
-
-	  components: {
-	    xlink: {
-	      props: {
-	        href: String
-	      },
-	      render: function render(createElement) {
-	        return createElement('a', {
-	          ref: 'link',
-	          attrs: {
-	            'component-name': 'link',
-	            'href': this.href
-	          }
-	        }, this.$slots.default);
-	      }
-	    }
-	  },
-	  methods: {
-	    click: function click(evt) {
-	      evt.preventDefault();
-	      // var d = Date.now()
-	      // while (true) {
-	      //   var now = Date.now()
-	      //   if (now - d > 2000) { break }
-	      // }
-	      // throw new Error('test')
-	      console.log('click on inner');
-	    },
-	    clickCell: function clickCell(evt) {
-	      console.log('click on cell');
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 138:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list', {
-	    staticClass: ["list"]
-	  }, [_c('cell', {
-	    staticClass: ["cell"],
-	    appendAsTree: true,
-	    attrs: {
-	      "append": "tree"
-	    },
-	    on: {
-	      "click": _vm.clickCell
-	    }
-	  }, [_c('xlink', {
-	    staticStyle: {
-	      width: "400px",
-	      height: "400px",
-	      backgroundColor: "yellow"
-	    },
-	    attrs: {
-	      "target": "_blank",
-	      "href": _vm.url
-	    }
-	  }, [_c('div', {
-	    staticClass: ["ct"],
-	    on: {
-	      "click": _vm.click
-	    }
-	  }, [_c('text', [_vm._v("CLICK ME")])])])], 1)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/showcase/boxshadow.js b/src/main/assets/vue/showcase/boxshadow.js
deleted file mode 100644
index 8f2871c..0000000
--- a/src/main/assets/vue/showcase/boxshadow.js
+++ /dev/null
@@ -1,244 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(139)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(140)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(141)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/boxshadow.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-4db814d1"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 139:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "wrapper": {
-	    "alignItems": "center",
-	    "marginTop": 120
-	  },
-	  "title": {
-	    "fontSize": 48
-	  }
-	}
-
-/***/ }),
-
-/***/ 140:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	    data: function data() {
-	        return {
-	            logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-	            target: 'World'
-	        };
-	    }
-	};
-
-/***/ }),
-
-/***/ 141:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["wrapper"]
-	  }, [_c('div', {
-	    staticStyle: {
-	      width: "400px",
-	      height: "60px",
-	      backgroundColor: "#FFE4C4",
-	      boxShadow: "20px  10px rgb(255, 69, 0)"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      textAlign: "center"
-	    }
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])]), _c('div', {
-	    staticStyle: {
-	      marginTop: "80px",
-	      width: "400px",
-	      height: "60px",
-	      backgroundColor: "#FFE4C4",
-	      boxShadow: "20px  10px 5px rgba(255, 69, 0, 0.8)"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      textAlign: "center"
-	    }
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])]), _c('div', {
-	    staticStyle: {
-	      marginTop: "80px",
-	      width: "400px",
-	      height: "60px",
-	      backgroundColor: "#FFE4C4",
-	      boxShadow: "inset 20px  10px 5px rgba(255, 69, 0, 0.8)"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      textAlign: "center"
-	    }
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])]), _c('div', {
-	    staticStyle: {
-	      marginTop: "80px",
-	      width: "400px",
-	      height: "60px",
-	      backgroundColor: "#FFE4C4",
-	      boxShadow: "inset 20px  10px 5px rgb(255, 69, 0)"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      textAlign: "center"
-	    }
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])]), _c('div', {
-	    staticStyle: {
-	      marginTop: "80px",
-	      width: "400px",
-	      height: "60px",
-	      backgroundColor: "#FFE4C4",
-	      boxShadow: "20px  10px 5px black"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      textAlign: "center"
-	    }
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])]), _c('div', {
-	    staticStyle: {
-	      marginTop: "80px",
-	      width: "400px",
-	      height: "60px",
-	      backgroundColor: "#FFE4C4",
-	      boxShadow: "20px  10px 5px #008B00"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"],
-	    staticStyle: {
-	      textAlign: "center"
-	    }
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/showcase/calculator.js b/src/main/assets/vue/showcase/calculator.js
deleted file mode 100644
index d114074..0000000
--- a/src/main/assets/vue/showcase/calculator.js
+++ /dev/null
@@ -1,356 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(142)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(143)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(144)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/calculator.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-22dcf14c"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 142:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "row": {
-	    "flexDirection": "row"
-	  },
-	  "result": {
-	    "textAlign": "right",
-	    "backgroundColor": "#666666",
-	    "fontSize": 40,
-	    "color": "#FFFFFF",
-	    "height": 100,
-	    "paddingTop": 30,
-	    "paddingRight": 30,
-	    "paddingBottom": 30,
-	    "paddingLeft": 30,
-	    "marginTop": 5,
-	    "marginRight": 5,
-	    "marginBottom": 5,
-	    "marginLeft": 5
-	  },
-	  "btn": {
-	    "flex": 1,
-	    "textAlign": "center",
-	    "backgroundColor": "#eeeeee",
-	    "fontSize": 36,
-	    "height": 100,
-	    "paddingTop": 30,
-	    "paddingRight": 30,
-	    "paddingBottom": 30,
-	    "paddingLeft": 30,
-	    "marginTop": 5,
-	    "marginRight": 5,
-	    "marginBottom": 5,
-	    "marginLeft": 5
-	  },
-	  "btn-operator": {
-	    "backgroundColor": "#666699",
-	    "fontSize": 40,
-	    "color": "#FFFFFF"
-	  }
-	}
-
-/***/ }),
-
-/***/ 143:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var OP = ['+', '-', '*', '/'];
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      result: '',
-	      inputs: []
-	    };
-	  },
-	  methods: {
-	    input: function input(e) {
-	      modal.toast({ message: 'input: ' + e.target.attr.value, duration: 1 });
-	      var value = e.target.attr['value'];
-	      var inputs = this.inputs;
-	      var lastOne = inputs.length ? inputs[inputs.length - 1] : '';
-	      if (OP.indexOf(lastOne) > -1 && OP.indexOf(value) > -1) {
-	        return;
-	      }
-	      inputs.push(value);
-	      var buf = [],
-	          char;
-	      for (var i = 0; i < inputs.length; i++) {
-	        char = inputs[i];
-	        if (OP.indexOf(char) > -1) {
-	          char = ' ' + char + ' ';
-	        }
-	        buf.push(char);
-	      }
-	      this.result = buf.join('');
-	    },
-	    calculate: function calculate() {
-	      var result = eval(this.result);
-	      this.inputs = [result];
-	      this.result = result;
-	    },
-	    clear: function clear() {
-	      this.inputs = [];
-	      this.result = '';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 144:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      padding: "5px"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["result"]
-	  }, [_vm._v(_vm._s(_vm.result))]), _c('div', {
-	    staticClass: ["row"]
-	  }, [_c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("1")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("2")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("3")]), _c('text', {
-	    staticClass: ["btn", "btn-operator"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("+")])]), _c('div', {
-	    staticClass: ["row"]
-	  }, [_c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("4")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("5")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("6")]), _c('text', {
-	    staticClass: ["btn", "btn-operator"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("-")])]), _c('div', {
-	    staticClass: ["row"]
-	  }, [_c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("7")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("8")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("9")]), _c('text', {
-	    staticClass: ["btn", "btn-operator"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("*")])]), _c('div', {
-	    staticClass: ["row"]
-	  }, [_c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v("0")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.input
-	    }
-	  }, [_vm._v(".")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.clear
-	    }
-	  }, [_vm._v("AC")]), _c('text', {
-	    staticClass: ["btn", "btn-operator"],
-	    on: {
-	      "click": _vm.calculate
-	    }
-	  }, [_vm._v("=")])])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/showcase/compositing.js b/src/main/assets/vue/showcase/compositing.js
deleted file mode 100644
index e2caf9e..0000000
--- a/src/main/assets/vue/showcase/compositing.js
+++ /dev/null
@@ -1,306 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(145)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(146)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(147)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/compositing.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-76fdcbaa"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 145:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "wrapper": {
-	    "alignItems": "center",
-	    "opacity": 0.8
-	  },
-	  "itemWrapper": {
-	    "flex": 1,
-	    "borderTopRightRadius": 80,
-	    "borderBottomRightRadius": 80,
-	    "borderTopWidth": 10,
-	    "borderTopColor": "#FF0000",
-	    "borderStyle": "dashed",
-	    "alignItems": "center",
-	    "backgroundColor": "#FFFFFF"
-	  },
-	  "nameWrapper": {
-	    "backgroundColor": "rgba(255,0,0,0.5)",
-	    "borderRadius": 30,
-	    "borderColor": "#000000",
-	    "borderWidth": 10
-	  },
-	  "item": {
-	    "marginTop": 120,
-	    "backgroundColor": "#CCCCCC",
-	    "alignItems": "center"
-	  },
-	  "itemName": {
-	    "fontSize": 28,
-	    "color": "#333333",
-	    "lineHeight": 42,
-	    "textAlign": "left",
-	    "marginTop": 24
-	  },
-	  "itemPhoto": {
-	    "marginTop": 18,
-	    "width": 220,
-	    "height": 220,
-	    "marginBottom": 18,
-	    "borderRadius": 30,
-	    "overflow": "hidden",
-	    "backgroundColor": "#0000FF"
-	  },
-	  "itemDesc": {
-	    "fontSize": 24,
-	    "marginTop": 12,
-	    "marginRight": 12,
-	    "marginBottom": 12,
-	    "marginLeft": 12,
-	    "color": "#999999",
-	    "lineHeight": 36,
-	    "textAlign": "left"
-	  }
-	}
-
-/***/ }),
-
-/***/ 146:
-/***/ (function(module, exports) {
-
-	"use strict";
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {},
-	  methods: {}
-	};
-
-/***/ }),
-
-/***/ 147:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["wrapper"],
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_vm._m(0), _vm._m(1)])
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["item"],
-	    attrs: {
-	      "compositing": "true"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["itemWrapper"]
-	  }, [_c('div', {
-	    staticClass: ["nameWrapper"]
-	  }, [_c('text', {
-	    staticClass: ["itemName"]
-	  }, [_vm._v("Thomas Carlyle")])]), _c('image', {
-	    staticClass: ["itemPhoto"],
-	    attrs: {
-	      "src": "https://gw.alicdn.com/tps/TB1Jl1CPFXXXXcJXXXXXXXXXXXX-370-370.jpg"
-	    }
-	  }), _c('div', {
-	    staticClass: ["descWrapper"]
-	  }, [_c('text', {
-	    staticClass: ["itemDesc"]
-	  }, [_vm._v("Genius only means hard-working all one\\'s life")])])])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["item"],
-	    attrs: {
-	      "compositing": "false"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["itemWrapper"]
-	  }, [_c('div', {
-	    staticClass: ["nameWrapper"]
-	  }, [_c('text', {
-	    staticClass: ["itemName"]
-	  }, [_vm._v("Thomas Carlyle")])]), _c('image', {
-	    staticClass: ["itemPhoto"],
-	    attrs: {
-	      "src": "https://gw.alicdn.com/tps/TB1Jl1CPFXXXXcJXXXXXXXXXXXX-370-370.jpg"
-	    }
-	  }), _c('div', {
-	    staticClass: ["descWrapper"]
-	  }, [_c('text', {
-	    staticClass: ["itemDesc"]
-	  }, [_vm._v("Genius only means hard-working all one\\'s life")])])])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/showcase/gesture.js b/src/main/assets/vue/showcase/gesture.js
deleted file mode 100644
index 858e2ed..0000000
--- a/src/main/assets/vue/showcase/gesture.js
+++ /dev/null
@@ -1,195 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(148)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(149)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(150)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/gesture.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-54c2a822"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 148:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "ct": {
-	    "position": "absolute",
-	    "width": 750,
-	    "height": 1000,
-	    "backgroundColor": "#f7f7f7"
-	  }
-	}
-
-/***/ }),
-
-/***/ 149:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      text: 'no press.',
-	      top: '0px',
-	      left: '0px',
-	      flag: false
-	    };
-	  },
-	  methods: {
-	    handlePress: function handlePress(e) {
-	      this.text = '->longpress(' + e.touch.pageX + ',' + e.touch.pageY + ')id:' + e.touch.identifier;
-	    },
-	    handleSwipe: function handleSwipe(e) {
-	      this.text += '->swipe(' + e.touch.pageX + ',' + e.touch.pageY + ')id:' + e.touch.identifier;
-	    },
-	    handlePanStart: function handlePanStart(e) {
-	      this.flag = false;
-	      this.text = '->panstart(' + e.touch.pageX + ',' + e.touch.pageY + ')id:' + e.touch.identifier;
-	    },
-	    handlePanMove: function handlePanMove(e) {
-	      if (this.flag) {
-	        return;
-	      }
-	      this.flag = true;
-	      this.text += '->panmove(' + e.touch.pageX + ',' + e.touch.pageY + ')id:' + e.touch.identifier;
-	    },
-	    handlePanEnd: function handlePanEnd(e) {
-	      this.text += '->panend(' + e.touch.pageX + ',' + e.touch.pageY + ')id:' + e.touch.identifier;
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 150:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('div', {
-	    staticClass: ["ct"],
-	    style: {
-	      top: _vm.top,
-	      left: _vm.left
-	    },
-	    on: {
-	      "longpress": _vm.handlePress,
-	      "swipe": _vm.handleSwipe,
-	      "panstart": _vm.handlePanStart,
-	      "panmove": _vm.handlePanMove,
-	      "panend": _vm.handlePanEnd
-	    }
-	  }, [_c('text', [_vm._v(_vm._s(_vm.text))])])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/showcase/itemlist.js b/src/main/assets/vue/showcase/itemlist.js
deleted file mode 100644
index 9177666..0000000
--- a/src/main/assets/vue/showcase/itemlist.js
+++ /dev/null
@@ -1,1085 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(151)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(152)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(153)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/itemlist.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-548f750a"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 151:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "flexRow": {
-	    "flexDirection": "row"
-	  },
-	  "flexColumn": {
-	    "flexDirection": "column"
-	  },
-	  "fixed": {
-	    "position": "fixed",
-	    "bottom": 50,
-	    "left": 50,
-	    "width": 300,
-	    "height": 50,
-	    "alignItems": "center",
-	    "justifyContent": "center"
-	  },
-	  "shopImg": {
-	    "width": 220,
-	    "height": 220
-	  },
-	  "list": {
-	    "flexDirection": "column",
-	    "overflow": "hidden",
-	    "width": 750,
-	    "height": 1200,
-	    "backgroundColor": "#dddddd"
-	  },
-	  "cell": {
-	    "backgroundColor": "#dddddd",
-	    "flexDirection": "column",
-	    "width": 750
-	  },
-	  "test": {
-	    "width": 60,
-	    "height": 60
-	  },
-	  "shopDiv": {
-	    "flexDirection": "column",
-	    "backgroundColor": "#ffffff",
-	    "marginTop": 5,
-	    "marginRight": 5,
-	    "marginBottom": 5,
-	    "marginLeft": 5,
-	    "paddingTop": 10,
-	    "paddingRight": 10,
-	    "paddingBottom": 10,
-	    "paddingLeft": 10,
-	    "borderWidth": 1,
-	    "borderColor": "#cccccc"
-	  },
-	  "shopRowList": {
-	    "flexDirection": "column",
-	    "borderWidth": 1,
-	    "borderColor": "#cccccc",
-	    "marginTop": 5,
-	    "marginRight": 5,
-	    "marginBottom": 5,
-	    "marginLeft": 5,
-	    "paddingTop": 10,
-	    "paddingRight": 10,
-	    "paddingBottom": 10,
-	    "paddingLeft": 10,
-	    "backgroundColor": "#ffffff"
-	  },
-	  "shopHeader": {
-	    "flexDirection": "row",
-	    "width": 720
-	  },
-	  "shopFooter": {
-	    "flexDirection": "row",
-	    "width": 720
-	  },
-	  "smallImg": {
-	    "width": 20,
-	    "height": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 152:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      shopList: [{
-	        id: 1,
-	        scopeValue: 1,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Mendeleyev',
-	        PersonVisitTime: 'today',
-	        shopDesc: 'Genius only means hard-working all one\'s life',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB1rtOnHpXXXXXLaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/bao/uploaded/i4/TB15KrfFVXXXXXJXXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB1t5YBGVXXXXXcaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 2,
-	        scopeValue: 2,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Napoleon',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'The man who has made up his mind to win will never say "impossible "',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/imgextra/i1/2655929383/TB2.qITjpXXXXcIXXXXXXXXXXXX_!!2655929383.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd3.alicdn.com/imgextra/i3/2655929383/TB2eWwZjpXXXXbHXXXXXXXXXXXX_!!2655929383.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/2655929383/TB2tgQWjpXXXXbZXXXXXXXXXXXX_!!2655929383.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 3,
-	        scopeValue: 3,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Balzac',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'There is no such thing as a great talent without great will - power',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/imgextra/i1/TB1AFz9LXXXXXbrXVXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/2557954751/TB2is2njXXXXXatXpXXXXXXXXXX_!!2557954751.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/2557954751/TB2PNYGjXXXXXbXXXXXXXXXXXXX_!!2557954751.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 4,
-	        scopeValue: 4,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Thomas Carlyle',
-	        PersonVisitTime: '3 day ago',
-	        shopDesc: 'Cease to struggle and you cease to live',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/69426324/TB2zbwdfXXXXXa4XpXXXXXXXXXX_!!69426324.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/69426324/TB2L7ZAfXXXXXXOXXXXXXXXXXXX_!!69426324.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/69426324/TB2p9wufXXXXXbiXXXXXXXXXXXX_!!69426324.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 5,
-	        scopeValue: 5,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Addison',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'A strong man will struggle with the storms of fate',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd3.alicdn.com/bao/uploaded/i3/TB1MQ8_KVXXXXaLXVXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/53218032/TB2bGSqiXXXXXXyXpXXXXXXXXXX_!!53218032.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB1kP2zKFXXXXbIXXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 6,
-	        scopeValue: 1,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Ruskin',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'Living without an aim is like sailing without a compass',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/bao/uploaded/i4/TB11yFnHXXXXXakaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/32720628/TB2CRJUcXXXXXXwXpXXXXXXXXXX_!!32720628.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB17LUzHXXXXXcEaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 7,
-	        scopeValue: 2,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Yiming',
-	        PersonVisitTime: 'today',
-	        shopDesc: 'Live a noble and honest life. Reviving past times in your old age will help you to enjoy your life again',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/bao/uploaded/i4/TB1hvNoJXXXXXaMaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/2058567235/TB2V8iygFXXXXaRXpXXXXXXXXXX_!!2058567235.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/2058567235/TB2im1QgFXXXXX8XXXXXXXXXXXX_!!2058567235.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 8,
-	        scopeValue: 3,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'Brown',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'Behind every successful man there\'s a lot u unsuccessful years',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/bao/uploaded/i1/TB18BZ2KFXXXXb8XFXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/imgextra/i1/2775383848/TB2r012jVXXXXXHXpXXXXXXXXXX_!!2775383848.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd3.alicdn.com/imgextra/i3/2775383848/TB2iI9VjVXXXXaoXpXXXXXXXXXX_!!2775383848.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 9,
-	        scopeValue: 4,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'YIMING',
-	        PersonVisitTime: 'today',
-	        shopDesc: 'Enrich your life today,. yesterday is history.tomorrow is mystery',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/bao/uploaded/i1/TB1JB.rLpXXXXXLXXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd4.alicdn.com/imgextra/i4/2702739128/TB2JdvmjVXXXXXjXXXXXXXXXXXX_!!2702739128.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd2.alicdn.com/imgextra/i2/2702739128/TB2A.e6jVXXXXXGXpXXXXXXXXXX_!!2702739128.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-
-	      }, {
-	        id: 10,
-	        scopeValue: 5,
-	        PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-	        PersonName: 'YIMING',
-	        PersonVisitTime: 'yesterday',
-	        shopDesc: 'The secret of success is constancy to purpose',
-	        shopImgList: [{
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd3.alicdn.com/bao/uploaded/i3/TB17zXOGXXXXXbEXVXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd1.alicdn.com/imgextra/i1/2265445951/TB22ACTbFXXXXXBXXXXXXXXXXXX_!!2265445951.jpg_220x220.jpg'
-	        }, {
-	          shopImgWidth: '220px',
-	          shopImgHeight: '220px',
-	          shopImg: 'https://gd3.alicdn.com/imgextra/i3/2265445951/TB2oXqUbFXXXXXIXXXXXXXXXXXX_!!2265445951.jpg_220x220.jpg'
-	        }],
-	        shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopLikeText: '6',
-	        shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-	        shopCommentText: '97',
-	        shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-	        shopLookText: '1003',
-	        shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-	        shareText: "10"
-	      }]
-	    };
-	  },
-	  methods: {
-	    loadmore: function loadmore(e) {
-	      modal.toast({
-	        'message': 'loadmore',
-	        'duration': 2.0
-	      });
-	    },
-	    oncellclick: function oncellclick(id) {
-	      modal.toast({
-	        'message': 'row ' + id + ' clicked',
-	        'duration': 2.0
-	      });
-	    }
-	  }
-
-	};
-
-/***/ }),
-
-/***/ 153:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list', {
-	    staticClass: ["list"],
-	    attrs: {
-	      "loadmoreoffset": "2000"
-	    },
-	    on: {
-	      "loadmore": _vm.loadmore
-	    }
-	  }, _vm._l((_vm.shopList), function(item) {
-	    return _c('cell', {
-	      staticClass: ["cell"],
-	      appendAsTree: true,
-	      attrs: {
-	        "scope": item.scopeValue,
-	        "append": "tree"
-	      },
-	      on: {
-	        "click": function($event) {
-	          _vm.oncellclick(item.id)
-	        }
-	      }
-	    }, [_c('div', {
-	      staticClass: ["shopDiv"]
-	    }, [_c('div', {
-	      staticClass: ["shopHeader"],
-	      staticStyle: {
-	        flexDirection: "row"
-	      }
-	    }, [_c('div', {
-	      staticStyle: {
-	        flex: "2",
-	        flexDirection: "row"
-	      }
-	    }, [_c('div', [_c('image', {
-	      staticClass: ["test"],
-	      attrs: {
-	        "src": item.PersonPhoto
-	      }
-	    })]), _c('div', {
-	      staticStyle: {
-	        flexDirection: "column",
-	        marginLeft: "5px"
-	      }
-	    }, [_c('div', {
-	      staticStyle: {
-	        marginTop: "5px"
-	      }
-	    }, [_c('text', {
-	      staticStyle: {
-	        fontSize: "20px"
-	      }
-	    }, [_vm._v(_vm._s(item.PersonName))])]), _c('div', {
-	      staticStyle: {
-	        marginTop: "5px"
-	      }
-	    }, [_c('text', {
-	      staticStyle: {
-	        fontSize: "20",
-	        color: "#cccccc"
-	      }
-	    }, [_vm._v(_vm._s(item.PersonVisitTime))])])])]), _vm._m(0, true)]), _c('div', {
-	      staticClass: ["shopBody"],
-	      staticStyle: {
-	        flexDirection: "column"
-	      }
-	    }, [_c('div', {
-	      staticClass: ["descDiv"],
-	      staticStyle: {
-	        marginTop: "10px",
-	        marginLeft: "10px"
-	      }
-	    }, [_c('text', {
-	      staticClass: ["shopDesc"],
-	      staticStyle: {
-	        fontSize: "25px"
-	      }
-	    }, [_vm._v(_vm._s(item.shopDesc))])]), _c('div', {
-	      staticStyle: {
-	        flexDirection: "row"
-	      }
-	    }, _vm._l((item.shopImgList), function(img) {
-	      return _c('div', {
-	        staticClass: ["imgDiv"],
-	        staticStyle: {
-	          flex: "1",
-	          height: "300px",
-	          flexDirection: "column",
-	          margin: "10px"
-	        }
-	      }, [_c('div', [_c('image', {
-	        staticClass: ["shopImg"],
-	        style: {
-	          width: img.shopImgWidth,
-	          height: img.shopImgHeight
-	        },
-	        attrs: {
-	          "src": img.shopImg
-	        }
-	      })]), _vm._m(1, true)])
-	    }))]), _c('div', {
-	      staticClass: ["shopFooter"],
-	      staticStyle: {
-	        flexDirection: "row",
-	        marginTop: "10px",
-	        marginLeft: "10px",
-	        justifyContent: "flex-end"
-	      }
-	    }, [_c('div', {
-	      staticStyle: {
-	        marginRight: "5px"
-	      }
-	    }, [_c('image', {
-	      staticClass: ["shopLikeImg", "smallImg"],
-	      attrs: {
-	        "src": item.shopLikeImg
-	      }
-	    })]), _c('div', {
-	      staticStyle: {
-	        marginRight: "15px"
-	      }
-	    }, [_c('text', {
-	      staticClass: ["shopLikeText"],
-	      staticStyle: {
-	        fontSize: "20px"
-	      }
-	    }, [_vm._v(_vm._s(item.shopLikeText))])]), _c('div', {
-	      staticStyle: {
-	        marginRight: "5px"
-	      }
-	    }, [_c('image', {
-	      staticClass: ["shopCommentImg", "smallImg"],
-	      attrs: {
-	        "src": item.shopCommentImg
-	      }
-	    })]), _c('div', {
-	      staticStyle: {
-	        marginRight: "15px"
-	      }
-	    }, [_c('text', {
-	      staticClass: ["shopCommentText"],
-	      staticStyle: {
-	        fontSize: "20px"
-	      }
-	    }, [_vm._v(_vm._s(item.shopCommentText))])]), _c('div', {
-	      staticStyle: {
-	        marginRight: "5px"
-	      }
-	    }, [_c('image', {
-	      staticClass: ["shopLookImg", "smallImg"],
-	      attrs: {
-	        "src": item.shopLookImg
-	      }
-	    })]), _c('div', {
-	      staticStyle: {
-	        marginRight: "15px"
-	      }
-	    }, [_c('text', {
-	      staticClass: ["shopLookText"],
-	      staticStyle: {
-	        fontSize: "20px"
-	      }
-	    }, [_vm._v(_vm._s(item.shopLookText))])]), _c('div', {
-	      staticStyle: {
-	        marginRight: "5px"
-	      }
-	    }, [_c('image', {
-	      staticClass: ["shareImg", "smallImg"],
-	      attrs: {
-	        "src": item.shareImg
-	      }
-	    })]), _c('div', {
-	      staticStyle: {
-	        marginRight: "20px"
-	      }
-	    }, [_c('text', {
-	      staticClass: ["shareText"],
-	      staticStyle: {
-	        fontSize: "20px"
-	      }
-	    }, [_vm._v(_vm._s(item.shareText))])])])])])
-	  }))
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      flex: "5",
-	      flexDirection: "row"
-	    }
-	  }, [_c('div', {
-	    staticStyle: {
-	      flexDirection: "row",
-	      marginLeft: "10px",
-	      marginTop: "10px"
-	    }
-	  }, [_c('div', [_c('image', {
-	    staticStyle: {
-	      width: "20px",
-	      height: "20px"
-	    },
-	    attrs: {
-	      "src": "https://img.alicdn.com/tps/i4/TB1zkDeIFXXXXXrXVXX07tlTXXX-200-200.png_88x88xz.jpg"
-	    }
-	  })]), _c('div', [_c('text', {
-	    staticStyle: {
-	      fontSize: "20px"
-	    }
-	  }, [_vm._v("Hope")])])]), _c('div', {
-	    staticStyle: {
-	      position: "absolute",
-	      left: "90px",
-	      top: "10px",
-	      flexDirection: "row"
-	    }
-	  }, [_c('div', [_c('image', {
-	    staticStyle: {
-	      width: "20px",
-	      height: "20px"
-	    },
-	    attrs: {
-	      "src": "https://img.alicdn.com/tps/i2/TB1hRb1IXXXXXX3XVXXXQaP.pXX-87-87.jpeg"
-	    }
-	  })]), _c('div', [_c('text', {
-	    staticStyle: {
-	      fontSize: "20px"
-	    }
-	  }, [_vm._v("Mem")])])]), _c('div', {
-	    staticStyle: {
-	      position: "absolute",
-	      left: "170px",
-	      top: "10px",
-	      flexDirection: "row"
-	    }
-	  }, [_c('div', [_c('image', {
-	    staticStyle: {
-	      width: "20px",
-	      height: "20px"
-	    },
-	    attrs: {
-	      "src": "https://img.alicdn.com/tps/i3/TB1DGkJJFXXXXaZXFXX07tlTXXX-200-200.png"
-	    }
-	  })]), _c('div', [_c('text', {
-	    staticStyle: {
-	      fontSize: "20px"
-	    }
-	  }, [_vm._v("auth")])])]), _c('div', {
-	    staticStyle: {
-	      position: "absolute",
-	      left: "250px",
-	      top: "10px",
-	      flexDirection: "row"
-	    }
-	  }, [_c('div', [_c('image', {
-	    staticStyle: {
-	      width: "20px",
-	      height: "20px"
-	    },
-	    attrs: {
-	      "src": "https://img.alicdn.com/tps/i1/TB1nFvPIXXXXXbUXXXXUAkPJpXX-87-87.png"
-	    }
-	  })]), _c('div', [_c('text', {
-	    staticStyle: {
-	      fontSize: "20px"
-	    }
-	  }, [_vm._v("Friend")])])]), _c('div', {
-	    staticStyle: {
-	      position: "absolute",
-	      left: "330px",
-	      top: "10px",
-	      flexDirection: "row"
-	    }
-	  }, [_c('div', [_c('image', {
-	    staticStyle: {
-	      width: "20px",
-	      height: "20px"
-	    },
-	    attrs: {
-	      "src": "https://img.alicdn.com/tps/i2/TB1CpD7IXXXXXbSXXXXUAkPJpXX-87-87.png"
-	    }
-	  })]), _c('div', [_c('text', {
-	    staticStyle: {
-	      fontSize: "20px"
-	    }
-	  }, [_vm._v("issue")])])]), _c('div', {
-	    staticStyle: {
-	      position: "absolute",
-	      left: "410px",
-	      top: "10px",
-	      flexDirection: "row"
-	    }
-	  }, [_c('div', [_c('image', {
-	    staticStyle: {
-	      width: "20px",
-	      height: "20px"
-	    },
-	    attrs: {
-	      "src": "https://gtms02.alicdn.com/tps/i2/TB11ZZfIVXXXXbMXFXXEDhGGXXX-32-32.png"
-	    }
-	  })]), _c('div', [_c('text', {
-	    staticStyle: {
-	      fontSize: "20px"
-	    }
-	  }, [_vm._v("super")])])])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      flex: "1",
-	      marginTop: "10px",
-	      flexDirection: "row"
-	    }
-	  }, [_c('div', {
-	    staticStyle: {
-	      flex: "1",
-	      justifyContent: "center",
-	      flexDirection: "row"
-	    }
-	  }, [_c('div', [_c('image', {
-	    staticStyle: {
-	      width: "20px",
-	      height: "20px"
-	    },
-	    attrs: {
-	      "src": "https://img.alicdn.com/tps/i1/TB1nFvPIXXXXXbUXXXXUAkPJpXX-87-87.png"
-	    }
-	  })]), _c('div', {
-	    staticStyle: {
-	      marginLeft: "5px"
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      fontSize: "20px",
-	      textAlign: "center"
-	    }
-	  }, [_vm._v("Up")])])]), _c('div', {
-	    staticStyle: {
-	      flex: "1",
-	      justifyContent: "center",
-	      flexDirection: "row"
-	    }
-	  }, [_c('div', [_c('image', {
-	    staticStyle: {
-	      width: "20px",
-	      height: "20px"
-	    },
-	    attrs: {
-	      "src": "https://img.alicdn.com/tps/i2/TB1CpD7IXXXXXbSXXXXUAkPJpXX-87-87.png"
-	    }
-	  })]), _c('div', {
-	    staticStyle: {
-	      marginLeft: "5px"
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      fontSize: "20px",
-	      textAlign: "center"
-	    }
-	  }, [_vm._v("down")])])])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/showcase/new-fashion.js b/src/main/assets/vue/showcase/new-fashion.js
deleted file mode 100644
index 2b4dcbc..0000000
--- a/src/main/assets/vue/showcase/new-fashion.js
+++ /dev/null
@@ -1,3462 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(154)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(155)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(197)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/new-fashion.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-5362f131"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-/* 1 */,
-/* 2 */,
-/* 3 */,
-/* 4 */,
-/* 5 */,
-/* 6 */,
-/* 7 */,
-/* 8 */,
-/* 9 */,
-/* 10 */,
-/* 11 */,
-/* 12 */,
-/* 13 */,
-/* 14 */,
-/* 15 */,
-/* 16 */,
-/* 17 */,
-/* 18 */,
-/* 19 */,
-/* 20 */,
-/* 21 */,
-/* 22 */,
-/* 23 */,
-/* 24 */,
-/* 25 */,
-/* 26 */,
-/* 27 */,
-/* 28 */,
-/* 29 */,
-/* 30 */,
-/* 31 */,
-/* 32 */,
-/* 33 */,
-/* 34 */,
-/* 35 */,
-/* 36 */,
-/* 37 */,
-/* 38 */,
-/* 39 */,
-/* 40 */,
-/* 41 */,
-/* 42 */,
-/* 43 */,
-/* 44 */,
-/* 45 */,
-/* 46 */,
-/* 47 */,
-/* 48 */,
-/* 49 */,
-/* 50 */,
-/* 51 */,
-/* 52 */,
-/* 53 */,
-/* 54 */,
-/* 55 */,
-/* 56 */,
-/* 57 */,
-/* 58 */,
-/* 59 */,
-/* 60 */,
-/* 61 */,
-/* 62 */,
-/* 63 */,
-/* 64 */,
-/* 65 */,
-/* 66 */,
-/* 67 */,
-/* 68 */,
-/* 69 */,
-/* 70 */,
-/* 71 */,
-/* 72 */,
-/* 73 */,
-/* 74 */,
-/* 75 */,
-/* 76 */,
-/* 77 */,
-/* 78 */,
-/* 79 */,
-/* 80 */,
-/* 81 */,
-/* 82 */,
-/* 83 */,
-/* 84 */,
-/* 85 */,
-/* 86 */,
-/* 87 */,
-/* 88 */,
-/* 89 */,
-/* 90 */,
-/* 91 */,
-/* 92 */,
-/* 93 */,
-/* 94 */,
-/* 95 */,
-/* 96 */,
-/* 97 */,
-/* 98 */,
-/* 99 */,
-/* 100 */,
-/* 101 */,
-/* 102 */,
-/* 103 */,
-/* 104 */,
-/* 105 */,
-/* 106 */,
-/* 107 */,
-/* 108 */,
-/* 109 */,
-/* 110 */,
-/* 111 */,
-/* 112 */,
-/* 113 */,
-/* 114 */,
-/* 115 */,
-/* 116 */,
-/* 117 */,
-/* 118 */,
-/* 119 */,
-/* 120 */,
-/* 121 */,
-/* 122 */,
-/* 123 */,
-/* 124 */,
-/* 125 */,
-/* 126 */,
-/* 127 */,
-/* 128 */,
-/* 129 */,
-/* 130 */,
-/* 131 */,
-/* 132 */,
-/* 133 */,
-/* 134 */,
-/* 135 */,
-/* 136 */,
-/* 137 */,
-/* 138 */,
-/* 139 */,
-/* 140 */,
-/* 141 */,
-/* 142 */,
-/* 143 */,
-/* 144 */,
-/* 145 */,
-/* 146 */,
-/* 147 */,
-/* 148 */,
-/* 149 */,
-/* 150 */,
-/* 151 */,
-/* 152 */,
-/* 153 */,
-/* 154 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "content": {
-	    "color": "#353535",
-	    "backgroundColor": "#666666",
-	    "position": "absolute",
-	    "top": 0,
-	    "left": 0,
-	    "right": 0,
-	    "bottom": 0
-	  },
-	  "refresh": {
-	    "alignItems": "center",
-	    "justifyContent": "center"
-	  },
-	  "loading": {
-	    "alignItems": "center",
-	    "justifyContent": "center"
-	  }
-	}
-
-/***/ }),
-/* 155 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	var timer = weex.requireModule('timer');
-
-	module.exports = {
-	  components: {
-	    headlines: __webpack_require__(156),
-	    category: __webpack_require__(169),
-	    coupon: __webpack_require__(173),
-	    goods: __webpack_require__(177),
-	    resource: __webpack_require__(181),
-	    scene: __webpack_require__(185),
-	    match: __webpack_require__(189),
-	    brand: __webpack_require__(193)
-	  },
-	  data: {
-	    navBarHeight: 88,
-	    cnt: 0,
-	    show0: true,
-	    show1: false,
-	    show2: false,
-	    displayRefresh: 'show',
-	    displayLoading: 'show',
-	    showData: {}
-	  },
-	  created: function created() {
-	    this.showData = {
-	      "header": {
-	        "topBanner": "https://gw.alicdn.com/tps/TB1J48kMXXXXXXtapXXXXXXXXXX-750-782.jpg",
-	        "ruleLink": "https://chaoshi.m.tmall.com/",
-	        "isShowShare": true,
-	        "shareInfo": {
-	          "shareTitle": "我是分享标题",
-	          "shareIntro": " 我是分享内容测试",
-	          "allLink": "https://www.tmall.com",
-	          "mobileImage": "https://gw.alicdn.com/tps/TB1J48kMXXXXXXtapXXXXXXXXXX-750-782.jpg",
-	          "pcImage": "https://img.alicdn.com/tps/i4/TB1Dyw1LVXXXXXEapXXSutbFXXX.jpg",
-	          "shareScene": "我是测试业务",
-	          "bizId": ""
-	        },
-	        "announceHdBanner": "https://gw.alicdn.com/tps/i4/TB1fzclLVXXXXaVaXXXwu0bFXXX.png",
-	        "bannerItems": [{
-	          "img": "https://img.alicdn.com/tps/TB1U8LHLVXXXXa3XpXXXXXXXXXX-233-172.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://img.alicdn.com/tps/TB1U8LHLVXXXXa3XpXXXXXXXXXX-233-172.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://img.alicdn.com/tps/TB1U8LHLVXXXXa3XpXXXXXXXXXX-233-172.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }]
-	      },
-	      "fashion": {
-	        "isHide": false,
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "bigBannerImg": "https://gw.alicdn.com/tps/TB1tO.aLVXXXXcvXpXXXXXXXXXX-750-262.jpg",
-	        "bigBannerUrl": "https://chaoshi.m.tmall.com/",
-	        "smallBannerItems": [{
-	          "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }],
-	        "isHideStarBanner": false,
-	        "firstStarBannerItems": [{
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }],
-	        "secondStarBannerItems": [{
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }],
-	        "thirdStarBannerItems": [{
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }]
-	      },
-	      "goods": {
-	        "isHide": false,
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "bannerItems": [{
-	          "img1": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url1": "https://chaoshi.m.tmall.com/",
-	          "img2": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url2": "https://chaoshi.m.tmall.com/",
-	          "img3": "https://gw.alicdn.com/tps/TB12MPFLVXXXXXnXVXXXXXXXXXX-250-592.jpg",
-	          "url3": "https://chaoshi.m.tmall.com/",
-	          "img4": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url4": "https://chaoshi.m.tmall.com/",
-	          "img5": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url5": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img1": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url1": "https://chaoshi.m.tmall.com/",
-	          "img2": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url2": "https://chaoshi.m.tmall.com/",
-	          "img3": "https://gw.alicdn.com/tps/TB12MPFLVXXXXXnXVXXXXXXXXXX-250-592.jpg",
-	          "url3": "https://chaoshi.m.tmall.com/",
-	          "img4": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url4": "https://chaoshi.m.tmall.com/",
-	          "img5": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-	          "url5": "https://chaoshi.m.tmall.com/"
-	        }]
-	      },
-	      "coupon": {
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg"
-	      },
-	      "scene": {
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "_backup": {
-	          "id": "03653",
-	          "data": [{
-	            "id": "1395",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1395&scm=1003.1.03653.MAIN_1395_710531&pos=1",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i2/TB1n6bVLVXXXXcCXVXXTCU0QpXX-300-300.jpg",
-	            "sceneCat": "50008881,50008883,50008882,50008884,50012774,50012775,50012776,50012781,50008886,50012766,50012771,50012772,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,16240,50012773,50006846,50010394,50008888,50008890,50008889,50012784,50012785,50012786,50012787,50008885,50012777,50012778,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124942005,50010368,50011892,50011894,50023751,121366037,121458036,121392038,121420035,121364028,121468026,121400029,121418030,121478031,121480030,121366035,121424025,121426030,121484030,121412031,125054002,125074007,125074008,125104003,125080003,125024006,125080004,121400030,121424024,121482025,121418031,121402028,121388035",
-	            "finalScore": "77.26011111111112",
-	            "_pos_": 1,
-	            "entityType": "MAIN",
-	            "benefitImg": "//img.alicdn.com/tps/i3/TB1Onr9LVXXXXbiXpXXB8gAQpXX-300-100.png"
-	          }, {
-	            "id": "1394",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1394&scm=1003.1.03653.MAIN_1394_710531&pos=2",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i1/TB13mj1LVXXXXa.XFXXTCU0QpXX-300-300.jpg",
-	            "sceneCat": "50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124986002,50010368, 50011892,50011894,121480030,121366035,121424025,121426030,121484030,121412031",
-	            "finalScore": "77.06103999999999",
-	            "_pos_": 2,
-	            "entityType": "MAIN",
-	            "benefitImg": "//img.alicdn.com/tps/i2/TB17kvVLVXXXXaTXVXXB8gAQpXX-300-100.png"
-	          }, {
-	            "id": "1396",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1396&scm=1003.1.03653.MAIN_1396_710531&pos=3",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i2/TB1ZOAXLVXXXXa0XXXXTCU0QpXX-300-300.jpg",
-	            "sceneCat": "50010368,50011892,50011894,50013794,50010792,50010790,50010790,121434025,121396024,50010793,50010789,50010793,121386035,121392037,121458034,121392036,121482027,121392015,121368014,121418013,121392016,50011982,122690003,302910,50012010,122654005,50012019,50012825,50012027,50012042,50011744,50012906,50012907,50008881,50008883,50008882?,50012784?,50022889,50022728,50013228,50013896,50014775,50019578,50014822,50026394,50019694,50019279,50019272,50014079,50014078,50014076,50014077,50017238,121464011,121468014,50019130,50019127,50019126,50019128,50019125,50015984,50014803,50014802,50015980,50014788,50014787,50019526,50014791,50019520,50013932,50014677,50015978,50014786,50014785,50522001,50014493,50023100,121418021,121388027,121424021,121418020,121368020,50012036,50012044,50012043,50010368, 50011892, 50019274,50012044,50012048,50012043,50013228,50013238,50011726,50019279,50015984,50014803,50014802,50019526,50014791,50019520,50013932,50014677,50019526,50013314,50023341,50016752,50016749,50016747,50016744,50016741,50016740,50016739,50016738,50016737,50016769,50016763,50016750,50007003,302910,50012010,50012032,50012033,50011745,50011746,50011894,121458034,121756003,121426033,50011982,50011979,121390006,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,1512,123534001,14,50008090,50012341,50132002,50012342,50012343,50012345,50012346,50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,121450007,50013697,50010218,50005960,50005962,50012820,50012406,50023620,50023605,50008829,50024064,50023440,50008687,124392001,50023771,50006804,50012410,124482010,121398023,50023789,50011975",
-	            "finalScore": "76.76379487179486",
-	            "_pos_": 3,
-	            "entityType": "MAIN",
-	            "benefitImg": "//img.alicdn.com/tps/i3/TB1Usn.LVXXXXaoXpXXB8gAQpXX-300-100.png"
-	          }, {
-	            "id": "1619",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1619&scm=1003.1.03653.SUB_1619_710531&pos=4",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i2/TB1MpoBLVXXXXbxXpXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,122654005,50011740,50009032,124688012,213202,121396029,121476023,121410029,213203,50023326,213205,50022686,50023293,50466023,50024999,50016885,50011894",
-	            "finalScore": "75.88480000000001",
-	            "_pos_": 4,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i4/TB1j0AxLVXXXXaRXFXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1612",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1612&scm=1003.1.03653.SUB_1612_710531&pos=5",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i3/TB1NNwyLVXXXXaEXVXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50010850,50000671,162104,162116,123216004",
-	            "finalScore": "75.23733333333334",
-	            "_pos_": 5,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i1/TB1PsoBLVXXXXbQXpXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1610",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1610&scm=1003.1.03653.SUB_1610_710531&pos=6",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i4/TB1EkczLVXXXXcVXpXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "121484044,121452038,50012342,50012027,50012032,50006843,50010850,50000671,162104,1623,50011277,162116,123216004,50008898,121366037,121458036,121392038,121420035,121364028,121468026,121472031,121476036,121470042,121418032,121410036,121472032,121420032,121470040,121384032,121460028,121448028,121400030,121424024,121482025,121418031,121402028,121388035,121460029,121400028,121400029,121418030,121476034,121478031,121448029,121480030,121366035,121424025,121426030,121484030,121412031,121384033,121424023,121402027,121408039,121420033,121452028,121466040,121416029,121482028,121420034,121396046,121422052,121370037,121424031,21364043,121472040,121412045,121424032,125054002,125074007,125074008,125104003,125080003,125024006,125080004",
-	            "finalScore": "75.00533333333334",
-	            "_pos_": 6,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i2/TB1RzwFLVXXXXXsXpXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1620",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1620&scm=1003.1.03653.SUB_1620_710531&pos=7",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i1/TB1IJsILVXXXXbGXXXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50010789,50010790,50010792,50010793,50010794,50010796,50010797,50010798,50010801,50010803,50010805,50010807,50010808,50010813,50010814,50010815,50013794,121382014,121386023,121388007,121388008,121398004,121364007,121398006,121410007,121426007,121452004,50012010,50012027,50012032,124688012, 124986002, 124942005,50010850,50000671,162104,162201,50022566,162116,1623,50011277,50008897,162401,162402",
-	            "finalScore": "74.72522222222223",
-	            "_pos_": 7,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i1/TB16A.yLVXXXXX8XFXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1608",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1608&scm=1003.1.03653.SUB_1608_710531&pos=8",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i3/TB1xA3jLVXXXXXqapXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50012010,50012027,50012032,50007003,50008881,50008883,1623,162116,50010850,123216004",
-	            "finalScore": "74.626",
-	            "_pos_": 8,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i2/TB1WvoALVXXXXcdXpXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1615",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1615&scm=1003.1.03653.SUB_1615_710531&pos=9",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i1/TB1PVctLVXXXXchXFXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50011978,50011979,50011980,50011993,50011996,50011997,121390006,121408011,121474010,50010789,50010790,50010792,50010793,50010803,50013794,121398004,121410007,213205,121470030,50024980,121408030",
-	            "finalScore": "74.02799999999999",
-	            "_pos_": 9,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i4/TB1yKwBLVXXXXa4XpXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1618",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1618&scm=1003.1.03653.SUB_1618_710531&pos=10",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i1/TB1vn3sLVXXXXX5XVXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50008886,50012766,50012771,50012772,50012773,50008090,111219,50012100,50012082,50012478,50012475,213202,50018977,121396029,121476023,50018994,121410029,213203,50023326,50003820,213205,50022686,50012481,50013976?,50001871,122854005,121458010,121452006,121416008,50008779,50002777,121394007,121386009,50010825,50013810,121434010,50001865,50008565,50008246,50017192,121404045,121368009,121462014,50019372,50008248,121418011,50008249,50017193,50008252,50008251,50000512,121364047",
-	            "finalScore": "73.94212121212121",
-	            "_pos_": 10,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i4/TB1kSkpLVXXXXbTXVXX3bpXTXXX-170-100.png"
-	          }, {
-	            "id": "1617",
-	            "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1617&scm=1003.1.03653.SUB_1617_710531&pos=11",
-	            "_s_": "d",
-	            "itemImg": "//img.alicdn.com/tps/i1/TB1ELwrLVXXXXaNXVXXKofZZpXX-182-206.jpg",
-	            "sceneCat": "50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,50012341,50132002,50012342,50012343,50012345,50012346,50012341,50132002,50012342,50012343,50012345,50012346",
-	            "finalScore": "73.78883333333334",
-	            "_pos_": 11,
-	            "entityType": "SUB",
-	            "benefitImg": "//img.alicdn.com/tps/i3/TB1CtsuLVXXXXcJXFXX3bpXTXXX-170-100.png"
-	          }],
-	          "exposureParam": "//ac.mmstat.com/1.gif?apply=vote&abbucket=_AB-M1001_B5&com=02&acm=03653.1003.1.710531&cod=03653&cache=jWl8FJsb&aldid=TPMkJDIw&logtype=4&abtest=_AB-LR1001-PR1001&scm=1003.1.03653.710531&ip=42.120.74.104",
-	          "serverTime": 1458296110334
-	        }
-	      },
-	      "resource": {
-	        "isHide": false,
-	        "bigBannerImg": "https://gw.alicdn.com/tps/TB1tO.aLVXXXXcvXpXXXXXXXXXX-750-262.jpg",
-	        "bigBannerUrl": "https://chaoshi.m.tmall.com/",
-	        "smallBannerItems": [{
-	          "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        }]
-	      },
-	      "category": {
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "_backup": {
-	          "main": [],
-	          "sub": [{
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/dqc?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_15_735362&pos=1",
-	            "entityType": "OTHER",
-	            "colour": "b4ebff",
-	            "industryTitle": "数码",
-	            "_pos_": 1,
-	            "industryBenefit": "疯抢大牌新品",
-	            "industryId": "15",
-	            "industryImg": "//img.alicdn.com/tps/i4/TB1_xG.LVXXXXbWaXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/xihu?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_13_735362&pos=2",
-	            "entityType": "OTHER",
-	            "colour": "cdffa4",
-	            "industryTitle": "洗护",
-	            "_pos_": 2,
-	            "industryBenefit": "爆款1分钱抢",
-	            "industryId": "13",
-	            "industryImg": "//img.alicdn.com/tps/i3/TB1Ft_CLVXXXXX2XXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/mobilephone?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_14_735362&pos=3",
-	            "entityType": "OTHER",
-	            "colour": "c5ffdf",
-	            "industryTitle": "手机",
-	            "_pos_": 3,
-	            "industryBenefit": "1元抢优惠券",
-	            "industryId": "14",
-	            "industryImg": "//img.alicdn.com/tps/i3/TB1mJjuLVXXXXc.XXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/xiangbaohuanxin?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_11_735362&pos=4",
-	            "entityType": "OTHER",
-	            "colour": "ffccdc",
-	            "industryTitle": "箱包",
-	            "_pos_": 4,
-	            "industryBenefit": "极致焕新尖货",
-	            "industryId": "11",
-	            "industryImg": "//img.alicdn.com/tps/i2/TB1_5P9KVXXXXayaXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/newfood?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_12_735362&pos=5",
-	            "entityType": "OTHER",
-	            "colour": "fff5a3",
-	            "industryTitle": "食品",
-	            "_pos_": 5,
-	            "industryBenefit": "新品1分试吃",
-	            "industryId": "12",
-	            "industryImg": "//img.alicdn.com/tps/i2/TB1HfLzLVXXXXb_XXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/zbps?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_3_735362&pos=6",
-	            "entityType": "OTHER",
-	            "colour": "bbffe5",
-	            "industryTitle": "珠宝配饰",
-	            "_pos_": 6,
-	            "industryBenefit": "大牌1折秒杀",
-	            "industryId": "3",
-	            "industryImg": "//img.alicdn.com/tps/i1/TB1s5y.LVXXXXb.aXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/getbeauty?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_2_735362&pos=7",
-	            "entityType": "OTHER",
-	            "colour": "ffd1b6",
-	            "industryTitle": "美妆",
-	            "_pos_": 7,
-	            "industryBenefit": "即刻预约美丽",
-	            "industryId": "2",
-	            "industryImg": "//img.alicdn.com/tps/i1/TB1lNvoLVXXXXaoXFXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/guojixfs?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_1_735362&pos=8",
-	            "entityType": "OTHER",
-	            "colour": "b9eaf2",
-	            "industryTitle": "天猫国际",
-	            "_pos_": 8,
-	            "industryBenefit": "唤醒全球潮流",
-	            "industryId": "1",
-	            "industryImg": "//img.alicdn.com/tps/i4/TB1JHbkLVXXXXblXFXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/newnv?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_10_735362&pos=9",
-	            "entityType": "OTHER",
-	            "colour": "fff8ee",
-	            "industryTitle": "鞋履",
-	            "_pos_": 9,
-	            "industryBenefit": "潮品精选鞋履",
-	            "industryId": "10",
-	            "industryImg": "//img.alicdn.com/tps/i2/TB1RovwLVXXXXXnXpXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/nvzhuang?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_7_735362&pos=10",
-	            "entityType": "OTHER",
-	            "colour": "d5cbe8",
-	            "industryTitle": "女装",
-	            "_pos_": 10,
-	            "industryBenefit": "折后用券抢新",
-	            "industryId": "7",
-	            "industryImg": "//img.alicdn.com/tps/i1/TB1BOncLVXXXXXSaXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/man?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_6_735362&pos=11",
-	            "entityType": "OTHER",
-	            "colour": "cbe9a9",
-	            "industryTitle": "男装",
-	            "_pos_": 11,
-	            "industryBenefit": "新品低至9.9元",
-	            "industryId": "6",
-	            "industryImg": "//img.alicdn.com/tps/i4/TB1t9TmLVXXXXbkXFXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/myxfs?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_5_735362&pos=12",
-	            "entityType": "OTHER",
-	            "colour": "f8e1ff",
-	            "industryTitle": "母婴童装",
-	            "_pos_": 12,
-	            "industryBenefit": "跨店满299减40",
-	            "industryId": "5",
-	            "industryImg": "//img.alicdn.com/tps/i3/TB1kpziLVXXXXabXVXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/jfjs?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_4_735362&pos=13",
-	            "entityType": "OTHER",
-	            "colour": "bbffe5",
-	            "industryTitle": "家纺家饰",
-	            "_pos_": 13,
-	            "industryBenefit": "全场低至9.9元",
-	            "industryId": "4",
-	            "industryImg": "//img.alicdn.com/tps/i1/TB1lUjzLVXXXXbAXXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/neiyi328?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_9_735362&pos=14",
-	            "entityType": "OTHER",
-	            "colour": "ffc7c9",
-	            "industryTitle": "内衣",
-	            "_pos_": 14,
-	            "industryBenefit": "新品3折起",
-	            "industryId": "9",
-	            "industryImg": "//img.alicdn.com/tps/i1/TB1S7PuLVXXXXcVXXXXrdvGIFXX-248-155.jpg"
-	          }, {
-	            "finalScore": 0,
-	            "industryUrl": "//pages.tmall.com/wow/act/15617/ydhw?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_8_735362&pos=15",
-	            "entityType": "OTHER",
-	            "colour": "cbdbfe",
-	            "industryTitle": "运动户外",
-	            "_pos_": 15,
-	            "industryBenefit": "大牌新品抢券",
-	            "industryId": "8",
-	            "industryImg": "//img.alicdn.com/tps/i2/TB1mQDALVXXXXbdXXXXrdvGIFXX-248-155.jpg"
-	          }],
-	          "isFormal": false,
-	          "exposureParam": "//ac.mmstat.com/1.gif?apply=vote&abbucket=_AB-M1011_B5&com=02&acm=03654.1003.1.735362&cod=03654&cache=CG5ZB02B&aldid=e5zPEI6R&logtype=4&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.735362&ip=42.120.74.159",
-	          "id": "03654"
-	        }
-	      },
-	      "brand": {
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "bannerItems": [{
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }]
-	      },
-	      "match": {
-	        "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-	        "isShowTmSpecBanner": true,
-	        "tmSpecBanner": {
-	          "img": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-	          "url": "https://chaoshi.m.tmall.com/"
-	        },
-	        "bannerItems": [{
-	          "leftImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }, {
-	          "leftImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-	          "leftUrl": "https://chaoshi.m.tmall.com/",
-	          "rightImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-	          "rightUrl": "https://chaoshi.m.tmall.com/"
-	        }]
-	      }
-	    };
-	    this.simLoadingData(this.cnt++);
-	  },
-	  methods: {
-	    handleRefresh: function handleRefresh(e) {
-	      var vm = this;
-	      vm.displayRefresh = 'show';
-	      if (timer) {
-	        timer.setTimeout(function () {
-	          vm.displayRefresh = 'hide';
-	        }, 2000);
-	      } else {
-	        modal.alert({
-	          message: 'refreshing.'
-	        }, function () {
-	          vm.displayRefresh = 'hide';
-	        });
-	      }
-	    },
-	    handleLoading: function handleLoading(e) {
-	      var vm = this;
-	      vm.displayLoading = 'show';
-	      modal.toast({
-	        message: 'loading.'
-	      });
-	      if (timer) {
-	        timer.setTimeout(function () {
-	          vm.simLoadingData(vm.cnt++);
-	          vm.displayLoading = 'hide';
-	        }, 2000);
-	      } else {
-	        vm.simLoadingData(vm.cnt++);
-	        vm.displayLoading = 'hide';
-	      }
-	    },
-	    simLoadingData: function simLoadingData(num) {
-	      if (num >= 3) {
-	        modal.toast({
-	          message: '已到底部'
-	        });
-	        return;
-	      }
-	      this['show' + num] = true;
-	    }
-	  }
-	};
-
-/***/ }),
-/* 156 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(157)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(158)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(168)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/headlines.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-bf444bc4"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 157 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "banner": {
-	    "width": 750,
-	    "height": 782
-	  },
-	  "share-container": {
-	    "position": "absolute",
-	    "right": 100,
-	    "top": 15,
-	    "zIndex": 100,
-	    "fontSize": 20,
-	    "color": "#ffffff",
-	    "backgroundColor": "#000000",
-	    "borderRadius": 17,
-	    "width": 110,
-	    "height": 35,
-	    "justifyContent": "center",
-	    "alignItems": "center"
-	  },
-	  "rule-container": {
-	    "position": "absolute",
-	    "right": 22,
-	    "top": 15,
-	    "zIndex": 100,
-	    "fontSize": 20,
-	    "color": "#ffffff",
-	    "backgroundColor": "#000000",
-	    "borderRadius": 17,
-	    "width": 70,
-	    "height": 35,
-	    "justifyContent": "center"
-	  },
-	  "announce": {
-	    "backgroundColor": "#f5f3f4",
-	    "width": 716,
-	    "height": 286,
-	    "position": "absolute",
-	    "bottom": 17,
-	    "left": 17,
-	    "borderRadius": 5
-	  },
-	  "announce-hd": {
-	    "width": 700,
-	    "height": 90,
-	    "marginTop": 8,
-	    "marginBottom": 8,
-	    "marginLeft": 5,
-	    "marginRight": 5
-	  }
-	}
-
-/***/ }),
-/* 158 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    link: __webpack_require__(159),
-	    banners: __webpack_require__(162)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_233: 233,
-	      NUMBER_172: 172,
-	      NUMBER_3: 3
-	    };
-	  }
-	};
-
-/***/ }),
-/* 159 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(160)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(161)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/link.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 160 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  props: ['text', 'href'],
-	  methods: {
-	    clickHandler: function clickHandler() {
-	      modal.toast({
-	        message: 'click',
-	        duration: 1
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-/* 161 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    on: {
-	      "click": _vm.clickHandler
-	    }
-	  }, [_vm._v(_vm._s(_vm.text))])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 162 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(163)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(167)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/banners.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 163 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    banner: __webpack_require__(164)
-	  },
-	  props: ['ds', 'width', 'height', 'space', 'direction']
-	};
-
-/***/ }),
-/* 164 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(165)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(166)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/banner.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 165 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  props: ['width', 'height', 'src', 'href'],
-	  data: function data() {
-	    return {
-	      quality: 'normal'
-	    };
-	  },
-	  methods: {
-	    clickHandler: function clickHandler() {
-	      modal.toast({
-	        message: 'click',
-	        duration: 1
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-/* 166 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('image', {
-	    style: {
-	      width: _vm.width,
-	      height: _vm.height
-	    },
-	    attrs: {
-	      "src": _vm.src,
-	      "imageQuality": _vm.quality
-	    },
-	    on: {
-	      "click": _vm.clickHandler
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 167 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [(_vm.direction === 'row') ? _c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, _vm._l((_vm.ds), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      style: {
-	        width: _vm.width,
-	        height: _vm.height,
-	        marginLeft: (i % _vm.ds.length ? _vm.space : 0)
-	      }
-	    }, [_c('banner', {
-	      attrs: {
-	        "width": _vm.width,
-	        "height": _vm.height,
-	        "src": item.img,
-	        "href": item.url
-	      }
-	    })], 1)
-	  })) : _vm._e(), (_vm.direction === 'column') ? _c('div', _vm._l((_vm.ds), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      style: {
-	        width: _vm.width,
-	        height: _vm.height,
-	        marginTop: (i % _vm.ds.length ? _vm.space : 0)
-	      }
-	    }, [_c('banner', {
-	      attrs: {
-	        "width": _vm.width,
-	        "height": _vm.height,
-	        "src": item.img,
-	        "href": item.url
-	      }
-	    })], 1)
-	  })) : _vm._e()])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 168 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["container"]
-	  }, [_c('image', {
-	    staticClass: ["banner"],
-	    attrs: {
-	      "src": _vm.ds.topBanner
-	    }
-	  }), _c('div', {
-	    staticClass: ["rule-container"]
-	  }, [_c('link', {
-	    staticStyle: {
-	      fontSize: "22px",
-	      color: "#ffffff",
-	      textAlign: "center"
-	    },
-	    attrs: {
-	      "text": "帮助",
-	      "href": _vm.ds.ruleLink
-	    }
-	  })]), _c('div', {
-	    staticClass: ["announce"]
-	  }, [_c('image', {
-	    staticClass: ["announce-hd"],
-	    attrs: {
-	      "src": _vm.ds.announceHdBanner
-	    }
-	  }), _c('banners', {
-	    staticStyle: {
-	      marginLeft: "6",
-	      marginRight: "6"
-	    },
-	    attrs: {
-	      "ds": _vm.ds.bannerItems,
-	      "direction": "row",
-	      "width": _vm.NUMBER_233,
-	      "height": _vm.NUMBER_172,
-	      "space": _vm.NUMBER_3
-	    }
-	  })], 1)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 169 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(170)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(171)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(172)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/category.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-1b8ec5cf"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 170 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "width": 750,
-	    "height": 100
-	  },
-	  "shop-list": {
-	    "flexDirection": "row"
-	  },
-	  "shop-img-container": {
-	    "marginRight": 2
-	  },
-	  "sub-item": {
-	    "position": "absolute",
-	    "width": 248,
-	    "height": 241,
-	    "alignItems": "center",
-	    "backgroundColor": "#ffffff"
-	  },
-	  "sub-item-bg": {
-	    "width": 248,
-	    "height": 86
-	  },
-	  "sub-item-title": {
-	    "position": "absolute",
-	    "left": 0,
-	    "top": 0,
-	    "width": 248,
-	    "textAlign": "center"
-	  },
-	  "industry-title": {
-	    "fontSize": 28,
-	    "color": "#484848",
-	    "textAlign": "center",
-	    "marginTop": 10,
-	    "height": 34
-	  },
-	  "industry-benefit": {
-	    "fontSize": 24,
-	    "color": "#999999",
-	    "textAlign": "center"
-	  }
-	}
-
-/***/ }),
-/* 171 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	"use strict";
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var demoContent = {
-	  "main": [{
-	    "shopList": [{
-	      "id": "619123122",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1Cl5MLVXXXXXTaXXXSutbFXXX.jpg",
-	      "finalScore": "0.884765209440857",
-	      "shopUrl": "http://liangpinpuzi.tmall.com/campaign-3735-7.htm",
-	      "entityType": "SHOP",
-	      "brandId": "7724367"
-	    }, {
-	      "id": "880734502",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1HN2XLVXXXXbkXFXXSutbFXXX.jpg",
-	      "finalScore": "0.8822246866512714",
-	      "shopUrl": "http://sanzhisongshu.tmall.com/campaign-3735-7.htm",
-	      "entityType": "SHOP",
-	      "brandId": "147280915"
-	    }, {
-	      "id": "392147177",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1yq6dLVXXXXbXXpXXSutbFXXX.jpg",
-	      "finalScore": "0.8805854724243631",
-	      "shopUrl": "http://zhouheiya.tmall.com/campaign-3735-6.htm",
-	      "entityType": "SHOP",
-	      "brandId": "111496"
-	    }, {
-	      "id": "2081058060",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1w4jxLVXXXXaxXXXXtKXbFXXX.gif",
-	      "finalScore": "0.8640439551049249",
-	      "shopUrl": "http://rongxintang.tmall.com/campaign-3735-6.htm",
-	      "entityType": "SHOP",
-	      "brandId": "8709890"
-	    }],
-	    "finalScore": "4.657333333333334",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#fff5a3",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/newfood?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_12_735362&pos=1",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i1/TB1LHh4MXXXXXbsXpXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "1",
-	    "industryBenefit": null,
-	    "industryId": "12",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i4/TB1wshUMXXXXXXaXVXXeWjm2pXX-750-240.jpg"
-	  }, {
-	    "shopList": [{
-	      "id": "520557274",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1aMjXLVXXXXbUaXXXSutbFXXX.jpg",
-	      "finalScore": "0.8986382989845325",
-	      "shopUrl": "http://newbalance.tmall.com/campaign-3735-20.htm",
-	      "entityType": "SHOP",
-	      "brandId": "20584"
-	    }, {
-	      "id": "746866993",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1pXG9LVXXXXaLXFXXSutbFXXX.jpg",
-	      "finalScore": "0.8917855242977327",
-	      "shopUrl": "http://vans.tmall.com/campaign-3735-19.htm",
-	      "entityType": "SHOP",
-	      "brandId": "29529"
-	    }, {
-	      "id": "1612713147",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1jHfXLVXXXXXPXFXXSutbFXXX.jpg",
-	      "finalScore": "0.8895943606442631",
-	      "shopUrl": "http://dcshoecousa.tmall.com/campaign-3735-8.htm",
-	      "entityType": "SHOP",
-	      "brandId": "3851662"
-	    }, {
-	      "id": "2379251418",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1sbLlLVXXXXbeXXXXSutbFXXX.jpg",
-	      "finalScore": "0.8881539668874383",
-	      "shopUrl": "http://baijinydhw.tmall.com/campaign-3735-2.htm",
-	      "entityType": "SHOP",
-	      "brandId": "20579"
-	    }],
-	    "finalScore": "4.545333333333334",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#cbdbfe",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/ydhw?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_8_735362&pos=2",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i3/TB1h4kzLVXXXXawXpXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "2",
-	    "industryBenefit": null,
-	    "industryId": "8",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i4/TB19VMjLVXXXXaeaXXXeWjm2pXX-750-240.jpg"
-	  }, {
-	    "shopList": [{
-	      "id": "811383091",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1q49ZLVXXXXaJXVXXSutbFXXX.jpg",
-	      "finalScore": "0.8723682716749482",
-	      "shopUrl": "http://tongrentangbj.tmall.com/campaign-3735-9.htm",
-	      "entityType": "SHOP",
-	      "brandId": "44652"
-	    }, {
-	      "id": "838914626",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1GQYbLVXXXXaXXVXXSutbFXXX.jpg",
-	      "finalScore": "0.5027131908086584",
-	      "shopUrl": "http://jouo.tmall.com/campaign-3735-3.htm",
-	      "entityType": "SHOP",
-	      "brandId": "14170081"
-	    }, {
-	      "id": "1077716829",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1rdW2LVXXXXagapXXSutbFXXX.jpg",
-	      "finalScore": "0.5015387557024262",
-	      "shopUrl": "http://wetcode.tmall.com/campaign-3735-14.htm",
-	      "entityType": "SHOP",
-	      "brandId": "3675642"
-	    }, {
-	      "id": "1664976033",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1Q.rpLVXXXXXiXpXXSutbFXXX.jpg",
-	      "finalScore": "0.5014897109669442",
-	      "shopUrl": "http://hanhoohzp.tmall.com/campaign-3735-17.htm",
-	      "entityType": "SHOP",
-	      "brandId": "78888695"
-	    }],
-	    "finalScore": "4.526666666666666",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#ffd1b6",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/getbeauty?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_2_735362&pos=3",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i4/TB1Djt9MXXXXXanXXXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "3",
-	    "industryBenefit": null,
-	    "industryId": "2",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i3/TB1_gVQMXXXXXX9XVXXeWjm2pXX-750-240.jpg"
-	  }, {
-	    "shopList": [{
-	      "id": "2153169655",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1nlK7LVXXXXaRXFXXSutbFXXX.jpg",
-	      "finalScore": "0.8820210808835905",
-	      "shopUrl": "http://ctkicks.tmall.com/campaign-3735-15.htm",
-	      "entityType": "SHOP",
-	      "brandId": "20584"
-	    }, {
-	      "id": "2784101115",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1RrS.LVXXXXcrXpXXSutbFXXX.jpg",
-	      "finalScore": "0.5930383227012586",
-	      "shopUrl": "http://tomtailor.tmall.com/campaign-3735-0.htm",
-	      "entityType": "SHOP",
-	      "brandId": "213474060"
-	    }, {
-	      "id": "2183813726",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1kmS_LVXXXXaBaXXXSutbFXXX.jpg",
-	      "finalScore": "0.5882558957771681",
-	      "shopUrl": "http://huaiyuan.tmall.com/campaign-3735-5.htm",
-	      "entityType": "SHOP",
-	      "brandId": "29465"
-	    }, {
-	      "id": "1785908005",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1dB6zLVXXXXcJXXXXSutbFXXX.jpg",
-	      "finalScore": "0.5694211862124341",
-	      "shopUrl": "http://axonus.tmall.com/campaign-3735-1.htm",
-	      "entityType": "SHOP",
-	      "brandId": "115035841"
-	    }],
-	    "finalScore": "4.413955555555555",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#b9eaf2",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/guojixfs?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_1_735362&pos=4",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i3/TB1_T7ALVXXXXXOXXXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "4",
-	    "industryBenefit": null,
-	    "industryId": "1",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i2/TB1s7koLVXXXXafXFXXeWjm2pXX-750-240.jpg"
-	  }, {
-	    "shopList": [{
-	      "id": "2453054335",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1RX_vLVXXXXchXpXXSutbFXXX.jpg",
-	      "finalScore": "0.8463447899590267",
-	      "shopUrl": "http://nanshizixing.tmall.com/campaign-3735-2.htm",
-	      "entityType": "SHOP",
-	      "brandId": "844502560"
-	    }, {
-	      "id": "1041773234",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1Q7jpLVXXXXX8XpXXSutbFXXX.jpg",
-	      "finalScore": "0.560952734503075",
-	      "shopUrl": "http://dapu.tmall.com/campaign-3735-8.htm",
-	      "entityType": "SHOP",
-	      "brandId": "14493763"
-	    }, {
-	      "id": "300031438",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB13VC4LVXXXXarXVXXSutbFXXX.jpg",
-	      "finalScore": "0.5450674634839442",
-	      "shopUrl": "http://kangerxin.tmall.com/campaign-3735-10.htm",
-	      "entityType": "SHOP",
-	      "brandId": "3781905"
-	    }, {
-	      "id": "92042735",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1PxYcLVXXXXasaXXXSutbFXXX.jpg",
-	      "finalScore": "0.5448023228053981",
-	      "shopUrl": "http://shuixing.tmall.com/campaign-3735-10.htm",
-	      "entityType": "SHOP",
-	      "brandId": "3685660"
-	    }],
-	    "finalScore": "4.13",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#bbffe5",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/jfjs?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_4_735362&pos=5",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i3/TB1jeoCLVXXXXcoXXXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "5",
-	    "industryBenefit": null,
-	    "industryId": "4",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i4/TB1C5.fLVXXXXb3aXXXeWjm2pXX-750-240.jpg"
-	  }, {
-	    "shopList": [{
-	      "id": "822428555",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1g46aLVXXXXcUXVXXSutbFXXX.jpg",
-	      "finalScore": "0.9183458776971917",
-	      "shopUrl": "http://playboyyd.tmall.com/campaign-3735-11.htm",
-	      "entityType": "SHOP",
-	      "brandId": "29510"
-	    }, {
-	      "id": "196993935",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1pHG8LVXXXXbraXXXSutbFXXX.jpg",
-	      "finalScore": "0.9105525246667775",
-	      "shopUrl": "https://uniqlo.tmall.com/campaign-3735-56.htm",
-	      "entityType": "SHOP",
-	      "brandId": "29527"
-	    }, {
-	      "id": "505753958",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1WKYyLVXXXXXHXXXXSutbFXXX.jpg",
-	      "finalScore": "0.90750966370726",
-	      "shopUrl": "http://bonas.tmall.com/campaign-3735-11.htm",
-	      "entityType": "SHOP",
-	      "brandId": "3486580"
-	    }, {
-	      "id": "2113823580",
-	      "picUrl": "//img.alicdn.com/tps/i1/TB1itHkLVXXXXX9XFXXSutbFXXX.jpg",
-	      "finalScore": "0.5900977955635289",
-	      "shopUrl": "http://kafanya.tmall.com/campaign-3735-7.htm",
-	      "entityType": "SHOP",
-	      "brandId": "110684218"
-	    }],
-	    "finalScore": "4.088",
-	    "industryUrl": null,
-	    "entityType": "OTHER",
-	    "colour": "#ffc7c9",
-	    "industryTitle": null,
-	    "bannerUrl": "//pages.tmall.com/wow/act/15617/neiyi328?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_9_735362&pos=6",
-	    "leftBannerImg": "http://img.alicdn.com/tps/i1/TB1tl3tLVXXXXbbXFXXeWjm2pXX-750-240.jpg",
-	    "_pos_": "6",
-	    "industryBenefit": null,
-	    "industryId": "9",
-	    "industryImg": null,
-	    "rightBannerImg": "//img.alicdn.com/tps/i2/TB1AkIyLVXXXXbjXpXXeWjm2pXX-750-240.jpg"
-	  }],
-	  "sub": [{
-	    "shopList": null,
-	    "finalScore": "4.033333333333333",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/zbps?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_3_735362&pos=7",
-	    "entityType": "OTHER",
-	    "colour": "#bbffe5",
-	    "industryTitle": "珠宝配饰",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "7",
-	    "industryBenefit": "大牌1折秒杀",
-	    "industryId": "3",
-	    "industryImg": "//img.alicdn.com/tps/i1/TB1s5y.LVXXXXb.aXXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "3.8773333333333335",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/dqc?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_15_735362&pos=8",
-	    "entityType": "OTHER",
-	    "colour": "#b4ebff",
-	    "industryTitle": "数码",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "8",
-	    "industryBenefit": "疯抢大牌新品",
-	    "industryId": "15",
-	    "industryImg": "//img.alicdn.com/tps/i4/TB1_xG.LVXXXXbWaXXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "3.8359999999999994",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/man?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_6_735362&pos=9",
-	    "entityType": "OTHER",
-	    "colour": "#cbe9a9",
-	    "industryTitle": "男装",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "9",
-	    "industryBenefit": "新品低至9.9元",
-	    "industryId": "6",
-	    "industryImg": "//img.alicdn.com/tps/i1/TB1mO2qLVXXXXXiXFXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "3.243333333333333",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/xihu?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_13_735362&pos=10",
-	    "entityType": "OTHER",
-	    "colour": "#cdffa4",
-	    "industryTitle": "洗护",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "10",
-	    "industryBenefit": "爆款1分钱抢",
-	    "industryId": "13",
-	    "industryImg": "//img.alicdn.com/tps/i3/TB1Ft_CLVXXXXX2XXXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "3.1553333333333335",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/myxfs?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_5_735362&pos=11",
-	    "entityType": "OTHER",
-	    "colour": "#f8e1ff",
-	    "industryTitle": "母婴童装",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "11",
-	    "industryBenefit": "跨店满299减40",
-	    "industryId": "5",
-	    "industryImg": "//img.alicdn.com/tps/i4/TB1c.HvLVXXXXXPXpXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "2.6739999999999995",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/nvzhuang?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_7_735362&pos=12",
-	    "entityType": "OTHER",
-	    "colour": "#d5cbe8",
-	    "industryTitle": "女装",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "12",
-	    "industryBenefit": "折后用券抢新",
-	    "industryId": "7",
-	    "industryImg": "//img.alicdn.com/tps/i3/TB1JdfsLVXXXXbRXpXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "0.0",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/mobilephone?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_14_735362&pos=13",
-	    "entityType": "OTHER",
-	    "colour": "#c5ffdf",
-	    "industryTitle": "手机",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "13",
-	    "industryBenefit": "1元抢优惠券",
-	    "industryId": "14",
-	    "industryImg": "//img.alicdn.com/tps/i4/TB1M3zhLVXXXXX4XVXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "0.0",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/xiangbaohuanxin?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_11_735362&pos=14",
-	    "entityType": "OTHER",
-	    "colour": "#ffccdc",
-	    "industryTitle": "箱包",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "14",
-	    "industryBenefit": "极致焕新尖货",
-	    "industryId": "11",
-	    "industryImg": "//img.alicdn.com/tps/i3/TB1gE6kLVXXXXcrXFXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }, {
-	    "shopList": null,
-	    "finalScore": "0.0",
-	    "industryUrl": "//pages.tmall.com/wow/act/15617/newnv?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_10_735362&pos=15",
-	    "entityType": "OTHER",
-	    "colour": "#fff8ee",
-	    "industryTitle": "鞋履",
-	    "bannerUrl": null,
-	    "leftBannerImg": null,
-	    "_pos_": "15",
-	    "industryBenefit": "潮品精选鞋履",
-	    "industryId": "10",
-	    "industryImg": "//img.alicdn.com/tps/i3/TB1.qzpLVXXXXX.XFXXrdvGIFXX-248-155.jpg",
-	    "rightBannerImg": null
-	  }],
-	  "isFormal": "false",
-	  "exposureParam": "//ac.mmstat.com/1.gif?apply=vote&abbucket=_AB-M1011_B14&com=02&acm=03654.1003.1.735362&cod=03654&cache=U5revsTn&aldid=KXPpnvEH&logtype=4&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.735362&ip=",
-	  "id": "03654"
-	};
-
-	module.exports = {
-	  components: {
-	    banner: __webpack_require__(164)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_248: 248,
-	      NUMBER_155: 155,
-	      NUMBER_373: 373,
-	      NUMBER_237: 237,
-	      NUMBER_186: 186,
-	      NUMBER_208: 208,
-	      NUMBER_750: 750,
-	      subItemBg: '//gw.alicdn.com/tps/TB1QzUfLVXXXXaOXVXXXXXXXXXX-248-86.jpg',
-	      items: [],
-	      subItems: []
-	    };
-	  },
-	  created: function created() {
-	    this.initData(demoContent);
-	  },
-	  methods: {
-	    getSubItemTop: function getSubItemTop(i) {
-	      return (i - i % 3) / 3 * (241 + 3);
-	    },
-	    getSubItemLeft: function getSubItemLeft(i) {
-	      return i % 3 * (248 + 3);
-	    },
-	    initData: function initData(content) {
-	      this.items = content.main;
-	      this.subItems = content.sub;
-	    }
-	  }
-	};
-
-/***/ }),
-/* 172 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: ["title"],
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), _c('div', {
-	    staticClass: ["item-container"]
-	  }, _vm._l((_vm.items), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      style: {
-	        width: 750,
-	        paddingBottom: 14,
-	        backgroundColor: item.colour
-	      }
-	    }, [_c('div', [_c('banner', {
-	      attrs: {
-	        "width": _vm.NUMBER_750,
-	        "height": _vm.NUMBER_237,
-	        "src": i % 2 === 0 ? item.leftBannerImg : item.rightBannerImg,
-	        "href": item.bannerUrl
-	      }
-	    })], 1), _c('div', {
-	      staticClass: ["shop-list"]
-	    }, _vm._l((item.shopList), function(i, shop) {
-	      return _c('div', {
-	        key: i,
-	        staticClass: ["shop-img-container"]
-	      }, [_c('banner', {
-	        attrs: {
-	          "width": _vm.NUMBER_186,
-	          "height": _vm.NUMBER_208,
-	          "src": shop.picUrl,
-	          "href": shop.shopUrl
-	        }
-	      })], 1)
-	    }))])
-	  })), _c('div', {
-	    staticClass: ["sub-item-container"],
-	    style: {
-	      height: Math.round(_vm.subItems.length / 3) * (241 + 3)
-	    }
-	  }, _vm._l((_vm.subItems), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      staticClass: ["sub-item"],
-	      style: {
-	        top: _vm.getSubItemTop(i),
-	        left: _vm.getSubItemLeft(i)
-	      }
-	    }, [_c('image', {
-	      staticClass: ["sub-item-bg"],
-	      attrs: {
-	        "src": _vm.subItemBg
-	      }
-	    }), _c('div', {
-	      staticClass: ["sub-item-img"]
-	    }, [_c('banner', {
-	      attrs: {
-	        "width": _vm.NUMBER_248,
-	        "height": _vm.NUMBER_155,
-	        "src": item.industryImg,
-	        "href": item.industryUrl
-	      }
-	    })], 1), _c('div', {
-	      staticClass: ["sub-item-title"]
-	    }, [_c('text', {
-	      staticClass: ["industry-title"],
-	      attrs: {
-	        "href": item.industryUrl
-	      }
-	    }, [_vm._v(_vm._s(item.industryTitle))]), _c('text', {
-	      staticClass: ["industry-benefit"],
-	      attrs: {
-	        "href": item.industryUrl
-	      }
-	    }, [_vm._v(_vm._s(item.industryBenefit))])])])
-	  }))])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 173 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(174)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(175)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(176)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/coupon.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-6cff0737"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 174 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "width": 750,
-	    "height": 100
-	  },
-	  "wrapper": {
-	    "color": "#FF4550",
-	    "width": 750,
-	    "height": 230
-	  },
-	  "my-coupon": {
-	    "width": 180,
-	    "height": 39,
-	    "position": "absolute",
-	    "top": 15,
-	    "right": 149
-	  },
-	  "guides": {
-	    "height": 39,
-	    "width": 110,
-	    "position": "absolute",
-	    "top": 15,
-	    "right": 32
-	  },
-	  "lottery": {
-	    "width": 348,
-	    "height": 76,
-	    "position": "absolute",
-	    "top": 132,
-	    "right": 70
-	  },
-	  "info": {
-	    "fontSize": 18,
-	    "position": "absolute",
-	    "top": 84,
-	    "right": 70
-	  },
-	  "img": {
-	    "width": 750,
-	    "height": 230
-	  }
-	}
-
-/***/ }),
-/* 175 */
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      currentStatus: '//img.alicdn.com/tps/i4/TB1cYBKMXXXXXayaXXXkxHk2pXX-750-228.jpg_q75.jpg'
-	    };
-	  },
-	  methods: {
-	    handleClick: function handleClick(e) {
-	      modal.toast({
-	        message: 'click',
-	        duration: 1
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-/* 176 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: ["title"],
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), _c('div', {
-	    staticClass: ["wrapper"]
-	  }, [_c('image', {
-	    staticClass: ["img"],
-	    attrs: {
-	      "src": _vm.currentStatus
-	    }
-	  }), _c('div', {
-	    staticClass: ["my-coupon"],
-	    on: {
-	      "click": _vm.handleClick
-	    }
-	  }), _c('div', {
-	    staticClass: ["guides"],
-	    on: {
-	      "click": _vm.handleClick
-	    }
-	  }), _c('div', {
-	    staticClass: ["lottery"],
-	    on: {
-	      "click": _vm.handleClick
-	    }
-	  })])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 177 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(178)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(179)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(180)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/goods.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-3c6b4756"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 178 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "width": 750,
-	    "height": 100
-	  },
-	  "slider": {
-	    "height": 652
-	  },
-	  "pannel": {
-	    "width": 750,
-	    "height": 592,
-	    "flexDirection": "row"
-	  },
-	  "middle-col": {
-	    "marginLeft": 4,
-	    "marginRight": 4,
-	    "width": 240,
-	    "height": 588
-	  }
-	}
-
-/***/ }),
-/* 179 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    banner: __webpack_require__(164)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_251: 251,
-	      NUMBER_240: 240,
-	      NUMBER_292: 292,
-	      NUMBER_588: 588
-	    };
-	  }
-	};
-
-/***/ }),
-/* 180 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return (!_vm.ds.isHide) ? _c('div', [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: ["title"],
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), _c('slider', {
-	    staticClass: ["slider"],
-	    attrs: {
-	      "showIndicators": "true",
-	      "autoPlay": "true",
-	      "interval": "3000"
-	    }
-	  }, [_vm._l((_vm.ds.bannerItems), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      staticClass: ["pannel"]
-	    }, [_c('div', [_c('banner', {
-	      staticStyle: {
-	        marginBottom: "4"
-	      },
-	      attrs: {
-	        "width": _vm.NUMBER_251,
-	        "height": _vm.NUMBER_292,
-	        "src": item.img1,
-	        "href": item.url1
-	      }
-	    }), _c('banner', {
-	      attrs: {
-	        "width": _vm.NUMBER_251,
-	        "height": _vm.NUMBER_292,
-	        "src": item.img2,
-	        "href": item.url2
-	      }
-	    })], 1), _c('div', {
-	      staticClass: ["middle-col"]
-	    }, [_c('banner', {
-	      attrs: {
-	        "width": _vm.NUMBER_240,
-	        "height": _vm.NUMBER_588,
-	        "src": item.img3,
-	        "href": item.url3
-	      }
-	    })], 1), _c('div', [_c('banner', {
-	      staticStyle: {
-	        marginBottom: "4"
-	      },
-	      attrs: {
-	        "width": _vm.NUMBER_251,
-	        "height": _vm.NUMBER_292,
-	        "src": item.img4,
-	        "href": item.url4
-	      }
-	    }), _c('banner', {
-	      attrs: {
-	        "width": _vm.NUMBER_251,
-	        "height": _vm.NUMBER_292,
-	        "src": item.img5,
-	        "href": item.url5
-	      }
-	    })], 1)])
-	  }), _c('indicator', {
-	    staticStyle: {
-	      position: "absolute",
-	      width: "714",
-	      height: "200",
-	      left: "10",
-	      bottom: "-80",
-	      itemSize: "20",
-	      itemColor: "#999999",
-	      itemSelectedColor: "#000000"
-	    }
-	  })], 2)]) : _vm._e()
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 181 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(182)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(183)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(184)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/resource.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-29847642"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 182 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "width": 750,
-	    "height": 100
-	  },
-	  "big-banner-container": {
-	    "marginBottom": 4
-	  }
-	}
-
-/***/ }),
-/* 183 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    banners: __webpack_require__(162),
-	    banner: __webpack_require__(164)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_750: 750,
-	      NUMBER_200: 200,
-	      NUMBER_373: 373,
-	      NUMBER_224: 224,
-	      NUMBER_4: 4
-	    };
-	  }
-	};
-
-/***/ }),
-/* 184 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return (!_vm.ds.isHide) ? _c('div', [_c('div', {
-	    staticClass: ["big-banner-container"]
-	  }, [_c('banner', {
-	    attrs: {
-	      "width": _vm.NUMBER_750,
-	      "height": _vm.NUMBER_200,
-	      "src": _vm.ds.bigBannerImg,
-	      "href": _vm.ds.bigBannerUrl
-	    }
-	  })], 1), _c('banners', {
-	    attrs: {
-	      "direction": "row",
-	      "ds": _vm.ds.smallBannerItems,
-	      "width": _vm.NUMBER_373,
-	      "height": _vm.NUMBER_224,
-	      "space": _vm.NUMBER_4
-	    }
-	  })], 1) : _vm._e()
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 185 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(186)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(187)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(188)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/scene.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-14835aea"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 186 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "width": 750,
-	    "height": 100
-	  },
-	  "item": {
-	    "width": 750,
-	    "height": 340,
-	    "marginBottom": 4
-	  },
-	  "item-img": {
-	    "position": "absolute",
-	    "left": 110,
-	    "top": 20
-	  },
-	  "right-item-img": {
-	    "position": "absolute",
-	    "right": 110,
-	    "top": 20
-	  },
-	  "benifit-img": {
-	    "position": "absolute",
-	    "right": 5,
-	    "top": 160
-	  },
-	  "right-benifit-img": {
-	    "position": "absolute",
-	    "left": 40,
-	    "top": 160
-	  },
-	  "small-item-container": {
-	    "width": 750
-	  },
-	  "small-item": {
-	    "position": "absolute",
-	    "width": 373,
-	    "height": 230,
-	    "flexDirection": "row"
-	  },
-	  "small-item-bg": {
-	    "width": 373,
-	    "height": 230
-	  },
-	  "small-item-img": {
-	    "position": "absolute",
-	    "left": 12,
-	    "top": 12
-	  },
-	  "small-benifit-img": {
-	    "position": "absolute",
-	    "right": 0,
-	    "top": 65
-	  }
-	}
-
-/***/ }),
-/* 187 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	"use strict";
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var demoContent = [{
-	  "id": "1111",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1392&scm=1003.1.03653.SUB_1111_740603&pos=1",
-	  "_s_": "d",
-	  "itemImg": "https://img.alicdn.com/tps/TB1c7t.MXXXXXchXXXXXXXXXXXX-182-206.jpg",
-	  "sceneCat": "50012010,50012027,50012032,50007003,50008881,50008883,1623,162116,50010850,123216004",
-	  "finalScore": "10000.0",
-	  "_pos_": "1",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/TB1Zgl2MXXXXXaYXFXXXXXXXXXX-170-100.png"
-	}, {
-	  "id": "1396",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1396&scm=1003.1.03653.SUB_1396_740603&pos=2",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i2/TB1O1VfMXXXXXX0aXXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50010368,50011892,50011894,50013794,50010792,50010790,50010790,121434025,121396024,50010793,50010789,50010793,121386035,121392037,121458034,121392036,121482027,121392015,121368014,121418013,121392016,50011982,122690003,302910,50012010,122654005,50012019,50012825,50012027,50012042,50011744,50012906,50012907,50008881,50008883,50008882?,50012784?,50022889,50022728,50013228,50013896,50014775,50019578,50014822,50026394,50019694,50019279,50019272,50014079,50014078,50014076,50014077,50017238,121464011,121468014,50019130,50019127,50019126,50019128,50019125,50015984,50014803,50014802,50015980,50014788,50014787,50019526,50014791,50019520,50013932,50014677,50015978,50014786,50014785,50522001,50014493,50023100,121418021,121388027,121424021,121418020,121368020,50012036,50012044,50012043,50010368, 50011892, 50019274,50012044,50012048,50012043,50013228,50013238,50011726,50019279,50015984,50014803,50014802,50019526,50014791,50019520,50013932,50014677,50019526,50013314,50023341,50016752,50016749,50016747,50016744,50016741,50016740,50016739,50016738,50016737,50016769,50016763,50016750,50007003,302910,50012010,50012032,50012033,50011745,50011746,50011894,121458034,121756003,121426033,50011982,50011979,121390006,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,1512,123534001,14,50008090,50012341,50132002,50012342,50012343,50012345,50012346,50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,121450007,50013697,50010218,50005960,50005962,50012820,50012406,50023620,50023605,50008829,50024064,50023440,50008687,124392001,50023771,50006804,50012410,124482010,121398023,50023789,50011975",
-	  "finalScore": "10000.0",
-	  "_pos_": "2",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i1/TB1cp4sMXXXXXbLXFXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1616",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1616&scm=1003.1.03653.SUB_1616_740603&pos=3",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i4/TB1dlEALVXXXXbxXpXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50009032,50007003,302910,1512,124688012,124986002,124942005,50023722,50010368,50011892,50011894",
-	  "finalScore": "10000.0",
-	  "_pos_": "3",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i3/TB1fxonLVXXXXXUaXXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "16424",
-	  "sceneUrl": "https://brand.tmall.com/mobilestreet/subject.htm?id=16424&acm=03653.1003.1.740603&aldid=VyrSqx06&spm=0.0.0.0.Wv8ion&scm=1003.1.03653.SUB_16424_740603&pos=4",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i4/TB1.i2_LVXXXXbrXpXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50012043,50012036,50010850,50000671,1622,50000852,162104,50000697,162205,162116,50012027,50012032,50012028,50012033,50012042,50008882,50012772,50006846,50008881,50000436,50011123,3035,50010167,50000557,50010158,50010159,50010402,50010160,50011980,50011993,121390006,50011978,50011977,50011979,121454013,50011745",
-	  "finalScore": "6.729749999999999",
-	  "_pos_": "4",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i2/TB1bhH5LVXXXXapXFXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "16425",
-	  "sceneUrl": "https://brand.tmall.com/mobilestreet/subject.htm?id=16360&acm=03653.1003.1.740603&aldid=VyrSqx06&spm=0.0.0.0.MttFEC&scm=1003.1.03653.SUB_16425_740603&pos=5",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i3/TB15ywbLVXXXXcdXXXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50012043,50012036,50010850,50000671,1622,50000852,162104,50000697,162205,162116,50012027,50012032,50012028,50012033,50012042,50008882,50012772,50006846,50008881,50000436,50011123,3035,50010167,50000557,50010158,50010159,50010402,50010160,50011980,50011993,121390006,50011978,50011977,50011979,121454013,50011745",
-	  "finalScore": "6.729749999999999",
-	  "_pos_": "5",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i1/TB1JBLYLVXXXXXlXVXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1625",
-	  "sceneUrl": "https://pages.tmall.com/wow/fushi/act/gf-chaoliu?acm=03653.1003.1.740603&aldid=VyrSqx06&scm=1003.1.03653.SUB_1625_740603&pos=6",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/bao/uploaded/i2/TB1Gd21KVXXXXXZXVXXXXXXXXXX_!!0-item_pic.jpg",
-	  "sceneCat": "50012043,50012036,50010850,50000671,1622,50000852,162104,50000697,162205,162116,50012027,50012032,50012028,50012033,50012042,50008882,50012772,50006846,50008881,50000436,50011123,3035,50010167,50000557,50010158,50010159,50010402,50010160,50011980,50011993,121390006,50011978,50011977,50011979,121454013,50011982,50011991,50012906,50011744,50011745,50011743,50012907,50011746,50010815,121460005,50013794,122438001,121398006,121386023,50010808",
-	  "finalScore": "6.729749999999999",
-	  "_pos_": "6",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i3/TB1qxXzMXXXXXcjXFXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1392",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1392&scm=1003.1.03653.SUB_1392_740603&pos=7",
-	  "_s_": "d",
-	  "itemImg": "https://img.alicdn.com/tps/TB1c7t.MXXXXXchXXXXXXXXXXXX-182-206.jpg",
-	  "sceneCat": "50006842,50006840,50008881,50008883,50008882,50008884,50012774,50012775,50012776,50012781,5000888,50012766,50012771,50012772,50010404,50010368, 50011892, 50011894,124688012,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50008882,50008886,50008885,50012777,50012778,50011977,50011978,50011979,50011980,50011982,50011990,50011999,50012000,50011993,50011996,50011997,121366011,121484009,121368010,121390006,121398029,121404030,121404031,121408040,121410035,121412033,121414041,121418013,121454013,121410013,121422013,121484013,50010789,50010790,50010792,50010793,50010794,50010796,50010797,50010798,50010801,50010803,50010805,50010807,50010808,50010815,121410007,121426007,121452004,121460005,50012341,50132002,50012342,50012343,50012345,50012346,50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,121366037,121458036,121392038,121420035,121364028,121468026,121472031,121476036,121470042,121418032,121410036,121472032,121420032,121470040,121384032,121460028,121448028,121400030,121424024,121482025,121418031,121402028,121388035,121460029,121400028,121400029,121418030,121476034,121478031,121448029,121480030,121366035,121424025,121426030,121484030,121412031,121384033,121424023,121402027,121408039,121420033,121452028,121466040,121416029,121482028,121420034,121396046,121422052,121370037,121424031,21364043,121472040,121412045,121424032,125054002,125074007,125074008,125104003,125080003,125024006,125080004",
-	  "finalScore": "4.4951428571428576",
-	  "_pos_": "7",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/TB1Zgl2MXXXXXaYXFXXXXXXXXXX-170-100.png"
-	}, {
-	  "id": "1395",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1395&scm=1003.1.03653.SUB_1395_740603&pos=8",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i2/TB1p4NcMXXXXXbGaXXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50008881,50008883,50008882,50008884,50012774,50012775,50012776,50012781,50008886,50012766,50012771,50012772,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,16240,50012773,50006846,50010394,50008888,50008890,50008889,50012784,50012785,50012786,50012787,50008885,50012777,50012778,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124942005,50010368,50011892,50011894,50023751,121366037,121458036,121392038,121420035,121364028,121468026,121400029,121418030,121478031,121480030,121366035,121424025,121426030,121484030,121412031,125054002,125074007,125074008,125104003,125080003,125024006,125080004,121400030,121424024,121482025,121418031,121402028,121388035",
-	  "finalScore": "4.465166666666667",
-	  "_pos_": "8",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i1/TB1ySNtMXXXXXamXFXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1394",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1394&scm=1003.1.03653.SUB_1394_740603&pos=9",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i4/TB1Ns8eMXXXXXb1aXXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124986002,50010368, 50011892,50011894,121480030,121366035,121424025,121426030,121484030,121412031",
-	  "finalScore": "4.309925925925926",
-	  "_pos_": "9",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i3/TB1ZEXfMXXXXXapaXXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1610",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1610&scm=1003.1.03653.SUB_1610_740603&pos=10",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i3/TB1ONckLVXXXXbJaXXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "121484044,121452038,50012342,50012027,50012032,50006843,50010850,50000671,162104,1623,50011277,162116,123216004,50008898,121366037,121458036,121392038,121420035,121364028,121468026,121472031,121476036,121470042,121418032,121410036,121472032,121420032,121470040,121384032,121460028,121448028,121400030,121424024,121482025,121418031,121402028,121388035,121460029,121400028,121400029,121418030,121476034,121478031,121448029,121480030,121366035,121424025,121426030,121484030,121412031,121384033,121424023,121402027,121408039,121420033,121452028,121466040,121416029,121482028,121420034,121396046,121422052,121370037,121424031,21364043,121472040,121412045,121424032,125054002,125074007,125074008,125104003,125080003,125024006,125080004",
-	  "finalScore": "4.293333333333334",
-	  "_pos_": "10",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i2/TB1RzwFLVXXXXXsXpXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1619",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1619&scm=1003.1.03653.SUB_1619_740603&pos=11",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i3/TB1eagyLVXXXXaiXFXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,122654005,50011740,50009032,124688012,213202,121396029,121476023,121410029,213203,50023326,213205,50022686,50023293,50466023,50024999,50016885,50011894",
-	  "finalScore": "4.23",
-	  "_pos_": "11",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i4/TB1j0AxLVXXXXaRXFXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1613",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1613&scm=1003.1.03653.SUB_1613_740603&pos=12",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i2/TB1WssFLVXXXXXUXpXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50023108,50022893,50022892,50022890,50013228,50019520,50017120,50019560,50017129,50017128,50017127,50017126,50017125,50017124,50017123,50017122,50017121,50020039,50020038,50017119,50019559,50017110,50017108,50017107,50017097,50017096,50017095,50017094,50017093,50017092,50012036,50012041",
-	  "finalScore": "4.2186666666666675",
-	  "_pos_": "12",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i1/TB1Rg.qLVXXXXbqXVXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1614",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1614&scm=1003.1.03653.SUB_1614_740603&pos=13",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i1/TB1KzUxLVXXXXajXFXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50013238,50011726,50022893,50022892,50022890,50013228,50017129,50020038,50017119,50019559,50017102,50017110,50017097,50019707,50019555,50016677,50018317,50016675,50016673,50016672,50016671,50016670,50016732,50016669,50016668,50016667,50016666,50016665,50016683,50016682,50016608,50016607,50016637,50016638,50012036,50012043",
-	  "finalScore": "4.216",
-	  "_pos_": "13",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i2/TB1WyouLVXXXXXcXVXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1397",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1397&scm=1003.1.03653.SUB_1397_740603&pos=14",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i4/TB1dCxvMXXXXXc1XpXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "122846004,50020776,50024799,50024801,50024921,50002794,50020778,50002792,50002791,50002793,50003942,50005500,50005497,50001692,50005495,50005496,50005503,50005498,50005499,50005501,50005502,50003455,50003457,122904003,50023091,50020770,50008863,50005507,121414011,50020768,50022701,50008862,121420012,50020766,50020764,121398012,121380011,50020751,50020676,50024945,50020720,50002790,50020730,50001866,50020678,121476008,121458013,50002795,121364011,50005505,121422014,50024943,50000583,50000582,50000584,213002,50005033,50000563,50008607,50006988,50008608,50024601,50024602,50012051,50001871,122854005,121458010,121452006,121416008,50008779,50002777,121394007,121386009,50010825,50013810,121434010,50001865,50008565,50008246,50017192,121404045,121368009,121462014,50019372,50008248,121418011,50008249,50017193,50008252,50008251,50000512,121364047,122846004,50020776,50024799,50024801,50024921,50002794,50020778,50002792,50002791,50002793,50003942,50005500,50005497,50001692,50005495,50005496,50005503,50005498,50005499,50005501,50005502,50003455,50003457,122904003,50023091,50020770,50008863,50005507,121414011,50020768,50022701,50008862,121420012,50020766,50020764,121398012,121380011,50020751,50020676,50024945,50020720,50002790,50020730,50001866,50020678,121476008,121458013,50002795,121364011,50005505,121422014,50024943,50000583,50000582,50000584,213002,50005033,50000563,50008607,50006988,50008608,50024601,50024602,50012051,50020835,50021907,121472021,50021902,50005919,50002045,122724003,122652007,121408025,122688004,50021924,50021923,50000561,50011738,122676005,121396026,121388028,50003338,50021915,50011415,50011416,50003454,50021928,50021930,50021929,50021931,50024939,121384024,121472020,50020902,50020903,50020904,50020905,50021888,50021889,50021890,50023266,122960005,50012001,50011999,50012004,50012000,50012006,121394024,121412033,121394025,121450036,121472007,121480009,121388013,121466009,121484012,121366014,121434014,121422012,121476006,121396013,50011997,121434013,122646001,121458012,121468012,121368013,50011979,121366015,121406016,121456012,121366011,121414010,121460006,121368014,121388016,121396013,121400010,121470011,121474011,121478009,124760009,124768010,124822006,121482009,122430002,121454014,121392016,50001871,122854005,121458010,121452006,121416008,50008779,50002777,121394007,121386009,50010825,50013810,121434010,50001865,50008565,50008246,50017192,121404045,121368009,121462014,50019372,50008248,121418011,50008249,50017193,50008252,50008251,50000512,121364047,122846004,50020776,50024799,50024801,50024921,50002794,50020778,50002792,50002791,50002793,50003942,50005500,50005497,50001692,50005495,50005496,50005503,50005498,50005499,50005501,50005502,50003455,50003457,122904003,50023091,50020770,50008863,50005507,121414011,50020768,50022701,50008862,121420012,50020766,50020764,121398012,121380011,50020751,50020676,50024945,50020720,50002790,50020730,50001866,50020678,121476008,121458013,50002795,121364011,50005505,121422014,50024943,50000583,50000582,50000584,213002,50005033,50000563,50008607,50006988,50008608,50024601,50024602,50012051",
-	  "finalScore": "3.4206666666666665",
-	  "_pos_": "14",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i3/TB1ZARnMXXXXXaGXVXX3bpXTXXX-170-100.png"
-	}, {
-	  "id": "1608",
-	  "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1608&scm=1003.1.03653.SUB_1608_740603&pos=15",
-	  "_s_": "d",
-	  "itemImg": "//img.alicdn.com/tps/i3/TB1xA3jLVXXXXXqapXXKofZZpXX-182-206.jpg",
-	  "sceneCat": "50012010,50012027,50012032,50007003,50008881,50008883,1623,162116,50010850,123216004",
-	  "finalScore": "0.0",
-	  "_pos_": "15",
-	  "entityType": "SUB",
-	  "benefitImg": "//img.alicdn.com/tps/i2/TB1WvoALVXXXXcdXpXX3bpXTXXX-170-100.png"
-	}];
-
-	module.exports = {
-	  components: {
-	    banner: __webpack_require__(164)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_186: 186,
-	      NUMBER_206: 206,
-	      NUMBER_373: 373,
-	      NUMBER_230: 230,
-	      NUMBER_170: 170,
-	      NUMBER_100: 100,
-	      NUMBER_750: 750,
-	      NUMBER_300: 300,
-	      NUMBER_340: 340,
-	      smallItemBg: 'https://gw.alicdn.com/tps/TB1oBIeLVXXXXatXpXXXXXXXXXX-373-230.jpg',
-	      items: [],
-	      smallItems: [],
-	      sceneBgs: ['https://gw.alicdn.com/tps/TB1xBT8LVXXXXbYXVXXXXXXXXXX-750-340.jpg', 'https://gw.alicdn.com/tps/TB1RoEkLVXXXXaMXpXXXXXXXXXX-750-340.jpg', 'https://gw.alicdn.com/tps/TB1DiEpLVXXXXa7XXXXXXXXXXXX-750-340.jpg']
-	    };
-	  },
-	  created: function created() {
-	    this.items = demoContent.slice(0, 3);
-	    this.smallItems = demoContent.slice(3);
-	  },
-	  methods: {
-	    getItemTop: function getItemTop(i) {
-	      return (i - i % 2) / 2 * (230 + 4);
-	    },
-	    getItemLeft: function getItemLeft(i) {
-	      return i % 2 * (373 + 4);
-	    }
-	  }
-	};
-
-/***/ }),
-/* 188 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: ["title"],
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), _c('div', {
-	    staticClass: ["small-item-container"],
-	    style: {
-	      height: Math.round(_vm.smallItems.length / 2) * 234
-	    }
-	  }, _vm._l((_vm.smallItems), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      staticClass: ["small-item"],
-	      style: {
-	        top: _vm.getItemTop(i),
-	        left: _vm.getItemLeft(i)
-	      }
-	    }, [_c('div', [_c('image', {
-	      staticClass: ["small-item-bg"],
-	      attrs: {
-	        "src": _vm.smallItemBg
-	      }
-	    })]), _c('div', {
-	      staticClass: ["small-item-img"]
-	    }, [_c('banner', {
-	      attrs: {
-	        "width": _vm.NUMBER_186,
-	        "height": _vm.NUMBER_206,
-	        "src": item.itemImg,
-	        "href": item.sceneUrl
-	      }
-	    })], 1), _c('div', {
-	      staticClass: ["small-benifit-img"]
-	    }, [_c('banner', {
-	      attrs: {
-	        "width": _vm.NUMBER_170,
-	        "height": _vm.NUMBER_100,
-	        "src": item.benefitImg,
-	        "href": item.sceneUrl
-	      }
-	    })], 1)])
-	  }))])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 189 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(190)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(191)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(192)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/match.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-99786178"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 190 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "width": 750,
-	    "height": 100
-	  },
-	  "tm-banner": {
-	    "bottom": 4
-	  }
-	}
-
-/***/ }),
-/* 191 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    banner: __webpack_require__(164)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {};
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_750: 750,
-	      NUMBER_373: 373,
-	      NUMBER_240: 240,
-	      NUMBER_200: 200,
-	      NUMBER_4: 4
-	    };
-	  }
-	};
-
-/***/ }),
-/* 192 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: ["title"],
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), (_vm.ds.isShowTmSpecBanner && _vm.ds.tmSpecBanner) ? _c('div', {
-	    staticClass: ["tm-banner"]
-	  }, [_c('banner', {
-	    attrs: {
-	      "width": _vm.NUMBER_750,
-	      "height": _vm.NUMBER_200,
-	      "src": _vm.ds.tmSpecBanner.img,
-	      "href": _vm.ds.tmSpecBanner.url
-	    }
-	  })], 1) : _vm._e(), _vm._l((_vm.ds.bannerItems), function(item, i) {
-	    return _c('div', {
-	      key: i,
-	      style: {
-	        flexDirection: 'row',
-	        marginBottom: _vm.NUMBER_4
-	      }
-	    }, [_c('div', {
-	      style: {
-	        marginRight: _vm.NUMBER_4
-	      }
-	    }, [_c('banner', {
-	      attrs: {
-	        "width": _vm.NUMBER_373,
-	        "height": _vm.NUMBER_240,
-	        "src": item.leftImg,
-	        "href": item.leftUrl
-	      }
-	    })], 1), _c('div', [_c('banner', {
-	      attrs: {
-	        "width": _vm.NUMBER_373,
-	        "height": _vm.NUMBER_240,
-	        "src": item.rightImg,
-	        "href": item.rightUrl
-	      }
-	    })], 1)])
-	  })], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 193 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(194)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(195)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(196)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/include/brand.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-5fbd9006"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-/* 194 */
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "width": 750,
-	    "height": 100
-	  },
-	  "container": {
-	    "marginBottom": 4,
-	    "backgroundColor": "#C0BABC"
-	  }
-	}
-
-/***/ }),
-/* 195 */
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    banners: __webpack_require__(162)
-	  },
-	  props: {
-	    ds: {
-	      default: function _default() {
-	        return {
-	          bannerItems: []
-	        };
-	      }
-	    }
-	  },
-	  data: function data() {
-	    return {
-	      NUMBER_742: 742,
-	      NUMBER_230: 230,
-	      NUMBER_4: 4
-	    };
-	  },
-	  computed: {
-	    bannerItems: function bannerItems() {
-	      return this.ds.bannerItems.slice(0, 8);
-	    }
-	  },
-	  created: function created() {
-	    var bannerItems = this.ds.bannerItems;
-	    bannerItems.sort(function () {
-	      return Math.random() - 0.5;
-	    });
-	    for (var i = 0; i < bannerItems.length; i++) {
-	      var item = bannerItems[i];
-	      if (i % 2 === 0) {
-	        item.img = item.leftImg;
-	        item.url = item.rightUrl;
-	      } else {
-	        item.img = item.rightImg;
-	        item.url = item.rightUrl;
-	      }
-	    }
-	  }
-	};
-
-/***/ }),
-/* 196 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["container"]
-	  }, [(_vm.ds.floorTitle) ? _c('image', {
-	    staticClass: ["title"],
-	    attrs: {
-	      "src": _vm.ds.floorTitle
-	    }
-	  }) : _vm._e(), _c('div', {
-	    staticStyle: {
-	      marginLeft: "4",
-	      marginRight: "4"
-	    }
-	  }, [_c('banners', {
-	    attrs: {
-	      "direction": "column",
-	      "ds": _vm.bannerItems,
-	      "width": _vm.NUMBER_742,
-	      "height": _vm.NUMBER_230,
-	      "space": _vm.NUMBER_4
-	    }
-	  })], 1)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-/* 197 */
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', {
-	    staticClass: ["content"]
-	  }, [_c('refresh', {
-	    staticClass: ["refresh"],
-	    staticStyle: {
-	      flexDirection: "row"
-	    },
-	    attrs: {
-	      "display": _vm.displayRefresh
-	    },
-	    on: {
-	      "refresh": _vm.handleRefresh
-	    }
-	  }, [_c('loading-indicator'), _c('text', {
-	    staticStyle: {
-	      marginLeft: "36px",
-	      color: "#eee"
-	    }
-	  }, [_vm._v("下拉刷新...")])]), (_vm.show0) ? _c('headlines', {
-	    attrs: {
-	      "ds": _vm.showData.header
-	    }
-	  }) : _vm._e(), (_vm.show0) ? _c('category', {
-	    attrs: {
-	      "ds": _vm.showData.category
-	    }
-	  }) : _vm._e(), (_vm.show1) ? _c('coupon', {
-	    attrs: {
-	      "ds": _vm.showData.coupon
-	    }
-	  }) : _vm._e(), (_vm.show1) ? _c('goods', {
-	    attrs: {
-	      "ds": _vm.showData.goods
-	    }
-	  }) : _vm._e(), (_vm.show1) ? _c('resource', {
-	    attrs: {
-	      "ds": _vm.showData.resource
-	    }
-	  }) : _vm._e(), (_vm.show1) ? _c('scene', {
-	    attrs: {
-	      "ds": _vm.showData.scene
-	    }
-	  }) : _vm._e(), (_vm.show2) ? _c('match', {
-	    attrs: {
-	      "ds": _vm.showData.match
-	    }
-	  }) : _vm._e(), (_vm.show2) ? _c('brand', {
-	    attrs: {
-	      "ds": _vm.showData.brand
-	    }
-	  }) : _vm._e(), _c('loading', {
-	    staticClass: ["loading"],
-	    attrs: {
-	      "display": _vm.displayLoading
-	    },
-	    on: {
-	      "loading": _vm.handleLoading
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      color: "#eee"
-	    }
-	  }, [_vm._v("加载更多...")])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-/******/ ]);
\ No newline at end of file
diff --git a/src/main/assets/vue/showcase/progress.js b/src/main/assets/vue/showcase/progress.js
deleted file mode 100644
index b20566e..0000000
--- a/src/main/assets/vue/showcase/progress.js
+++ /dev/null
@@ -1,349 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(198)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(199)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/progress.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 198:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var INC = 20;
-	module.exports = {
-	  data: function data() {
-	    return {
-	      fullW: 600,
-	      w: 40
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3)
-	  },
-	  created: function created() {
-	    var me = this;
-	    setInterval(function () {
-	      if (me.w >= me.fullW) {
-	        me.w = 0;
-	      }
-	      me.w = me.w + INC >= me.fullW ? me.fullW : me.w + INC;
-	    }, 33);
-	  }
-	};
-
-/***/ }),
-
-/***/ 199:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "Basic",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    style: {
-	      width: _vm.fullW,
-	      borderColor: '#333',
-	      borderWidth: 1,
-	      borderStyle: 'solid'
-	    }
-	  }, [_c('div', {
-	    style: {
-	      width: _vm.w,
-	      height: 60,
-	      backgroundColor: '#333'
-	    }
-	  })])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/showcase/tap-penetrate.js b/src/main/assets/vue/showcase/tap-penetrate.js
deleted file mode 100644
index ab05bf6..0000000
--- a/src/main/assets/vue/showcase/tap-penetrate.js
+++ /dev/null
@@ -1,573 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(200)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(201)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(202)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/showcase/tap-penetrate.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-12117f38"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 200:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "items-box": {
-	    "flexDirection": "row",
-	    "justifyContent": "space-between",
-	    "WebkitBoxOrient": "horizontal",
-	    "WebkitBoxDirection": "normal",
-	    "WebkitBoxPack": "justify"
-	  },
-	  "items": {
-	    "flexFlow": "row nowrap",
-	    "alignItems": "center",
-	    "overflow": "hidden",
-	    "position": "relative",
-	    "top": 0,
-	    "left": 0,
-	    "boxSizing": "border-box",
-	    "width": 374,
-	    "height": 564,
-	    "flexBasis": "auto",
-	    "fontSize": 0,
-	    "borderColor": "rgb(0,0,0)",
-	    "borderStyle": "solid",
-	    "backgroundColor": "rgb(245,245,245)",
-	    "marginBottom": 2,
-	    "textAlign": "center"
-	  },
-	  "flexRow": {
-	    "flexDirection": "row"
-	  },
-	  "flexColumn": {
-	    "flexDirection": "column"
-	  },
-	  "text": {
-	    "flex": 1,
-	    "textAlign": "center"
-	  },
-	  "fixed": {
-	    "position": "fixed",
-	    "bottom": 50,
-	    "left": 50,
-	    "width": 300,
-	    "height": 50,
-	    "alignItems": "center",
-	    "justifyContent": "center"
-	  },
-	  "shopImg": {
-	    "width": 220,
-	    "height": 220
-	  },
-	  "list": {
-	    "flexDirection": "column",
-	    "overflow": "hidden",
-	    "width": 750,
-	    "height": 100,
-	    "backgroundColor": "#dddddd"
-	  },
-	  "cell": {
-	    "backgroundColor": "#dddddd",
-	    "flexDirection": "column",
-	    "width": 750
-	  },
-	  "test": {
-	    "width": 60,
-	    "height": 60
-	  },
-	  "shopDiv": {
-	    "flexDirection": "column",
-	    "backgroundColor": "#ffffff",
-	    "marginTop": 5,
-	    "marginRight": 5,
-	    "marginBottom": 5,
-	    "marginLeft": 5,
-	    "paddingTop": 10,
-	    "paddingRight": 10,
-	    "paddingBottom": 10,
-	    "paddingLeft": 10,
-	    "borderWidth": 1,
-	    "borderColor": "#cccccc"
-	  },
-	  "shopRowList": {
-	    "flexDirection": "column",
-	    "borderWidth": 1,
-	    "borderColor": "#cccccc",
-	    "marginTop": 5,
-	    "marginRight": 5,
-	    "marginBottom": 5,
-	    "marginLeft": 5,
-	    "paddingTop": 10,
-	    "paddingRight": 10,
-	    "paddingBottom": 10,
-	    "paddingLeft": 10,
-	    "backgroundColor": "#ffffff"
-	  },
-	  "shopHeader": {
-	    "flexDirection": "row",
-	    "width": 720
-	  },
-	  "shopFooter": {
-	    "flexDirection": "row",
-	    "width": 720
-	  },
-	  "smallImg": {
-	    "width": 20,
-	    "height": 20
-	  },
-	  "wrapper": {
-	    "backgroundColor": "#f8f8f8",
-	    "border": "1px solid #ddd",
-	    "position": "fixed",
-	    "bottom": 20,
-	    "right": 20,
-	    "width": 88,
-	    "height": 88,
-	    "zIndex": 10100,
-	    "flexFlow": "row nowrap",
-	    "alignItems": "center",
-	    "cursor": "pointer"
-	  },
-	  "backTop": {
-	    "width": 88,
-	    "height": 88
-	  }
-	}
-
-/***/ }),
-
-/***/ 201:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	var dom = weex.requireModule('dom');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      show: true,
-	      href: 'http://weex.apache.org/cn/references/'
-	    };
-	  },
-	  methods: {
-	    clickitem: function clickitem(e) {
-	      modal.toast({
-	        message: 'click' + e
-	      });
-	    },
-	    preventDefault: function preventDefault(e) {
-	      this.href = 'javascript:void(0)';
-	      modal.toast({
-	        message: 'click'
-	      });
-	    },
-	    backTop: function backTop() {
-	      var self = this;
-	      window.scrollTo(0, 0);
-	      this.show = false;
-	    }
-	  }
-
-	};
-
-/***/ }),
-
-/***/ 202:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('div', {
-	    staticClass: ["items-box"]
-	  }, [_c('a', {
-	    staticClass: ["items"],
-	    attrs: {
-	      "weexType": "a"
-	    },
-	    on: {
-	      "click": function($event) {
-	        _vm.clickitem('Tap1')
-	      }
-	    }
-	  }, [_c('text', {
-	    staticClass: ["text"]
-	  }, [_vm._v("Tap1")])]), _c('a', {
-	    staticClass: ["items"],
-	    attrs: {
-	      "weexType": "a"
-	    },
-	    on: {
-	      "click": function($event) {
-	        _vm.clickitem('Tap2')
-	      }
-	    }
-	  }, [_c('text', {
-	    staticClass: ["text"]
-	  }, [_vm._v("Tap2")])])]), _c('div', {
-	    staticClass: ["items-box"]
-	  }, [_c('a', {
-	    staticClass: ["items"],
-	    attrs: {
-	      "weexType": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    },
-	    on: {
-	      "click": function($event) {
-	        _vm.clickitem('Tap in the a tag')
-	      }
-	    }
-	  }, [_c('text', {
-	    staticClass: ["text"]
-	  }, [_vm._v("Tap in the A tag")])]), _c('a', {
-	    staticClass: ["items"],
-	    attrs: {
-	      "weexType": "a",
-	      "href": _vm.href,
-	      "target": "_blank"
-	    },
-	    on: {
-	      "click": _vm.preventDefault
-	    }
-	  }, [_c('text', {
-	    staticClass: ["text"]
-	  }, [_vm._v("Prevent A tag from href jumping")])])]), _vm._m(0), _vm._m(1), _vm._m(2), (_vm.show) ? _c('div', {
-	    staticClass: ["wrapper"],
-	    on: {
-	      "click": _vm.backTop
-	    }
-	  }, [_c('text', {
-	    staticClass: ["text"]
-	  }, [_vm._v("Tap")])]) : _vm._e()])
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["items-box"]
-	  }, [_c('a', {
-	    staticClass: ["items"],
-	    attrs: {
-	      "weexType": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["text"]
-	  }, [_vm._v("Url")])]), _c('a', {
-	    staticClass: ["items"],
-	    attrs: {
-	      "weexType": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["text"]
-	  }, [_vm._v("Url")])])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["items-box"]
-	  }, [_c('a', {
-	    staticClass: ["items"],
-	    attrs: {
-	      "weexType": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["text"]
-	  }, [_vm._v("Url")])]), _c('a', {
-	    staticClass: ["items"],
-	    attrs: {
-	      "weexType": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["text"]
-	  }, [_vm._v("Url")])])])
-	},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["items-box"]
-	  }, [_c('a', {
-	    staticClass: ["items"],
-	    attrs: {
-	      "weexType": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["text"]
-	  }, [_vm._v("Url")])]), _c('a', {
-	    staticClass: ["items"],
-	    attrs: {
-	      "weexType": "a",
-	      "href": "http://weex.apache.org/cn/references/",
-	      "target": "_blank"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["text"]
-	  }, [_vm._v("Url")])])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/style/index.js b/src/main/assets/vue/style/index.js
deleted file mode 100644
index cf15705..0000000
--- a/src/main/assets/vue/style/index.js
+++ /dev/null
@@ -1,1600 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(203)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(204)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(217)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/index.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-2f3b8d9c"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(14)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(15)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(16)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-36fe495c"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 14:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "tip": {
-	    "paddingLeft": 36,
-	    "paddingRight": 36,
-	    "paddingTop": 36,
-	    "paddingBottom": 36,
-	    "borderRadius": 10
-	  },
-	  "tip-txt": {
-	    "fontSize": 28
-	  },
-	  "tip-success": {
-	    "backgroundColor": "#dff0d8",
-	    "borderColor": "#d6e9c6"
-	  },
-	  "tip-txt-success": {
-	    "color": "#3c763d"
-	  },
-	  "tip-info": {
-	    "backgroundColor": "#d9edf7",
-	    "borderColor": "#bce8f1"
-	  },
-	  "tip-txt-info": {
-	    "color": "#31708f"
-	  },
-	  "tip-warning": {
-	    "backgroundColor": "#fcf8e3",
-	    "borderColor": "#faebcc"
-	  },
-	  "tip-txt-warning": {
-	    "color": "#8a6d3b"
-	  },
-	  "tip-danger": {
-	    "backgroundColor": "#f2dede",
-	    "borderColor": "#ebccd1"
-	  },
-	  "tip-txt-danger": {
-	    "color": "#a94442"
-	  }
-	}
-
-/***/ }),
-
-/***/ 15:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 16:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type]
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 203:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "bg-item": {
-	    "width": 690,
-	    "marginBottom": 10
-	  }
-	}
-
-/***/ }),
-
-/***/ 204:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(3),
-	    styleBox: __webpack_require__(205),
-	    styleFlex: __webpack_require__(213),
-	    styleItem: __webpack_require__(208)
-	  }
-	};
-
-/***/ }),
-
-/***/ 205:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(206)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(207)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(212)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-box.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-9578d60e"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 206:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "box": {
-	    "backgroundColor": "#f5f5f5",
-	    "width": 260,
-	    "height": 260,
-	    "paddingLeft": 40,
-	    "paddingTop": 40,
-	    "paddingRight": 40,
-	    "paddingBottom": 40,
-	    "marginLeft": 40,
-	    "marginTop": 40,
-	    "marginRight": 40,
-	    "marginBottom": 40,
-	    "borderWidth": 40,
-	    "borderColor": "#333333",
-	    "borderStyle": "solid"
-	  }
-	}
-
-/***/ }),
-
-/***/ 207:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(3),
-	    tip: __webpack_require__(13),
-	    styleItem: __webpack_require__(208)
-	  }
-	};
-
-/***/ }),
-
-/***/ 208:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(209)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(210)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(211)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-item.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-947d2656"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 209:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "item": {
-	    "marginRight": 10,
-	    "width": 160,
-	    "height": 75,
-	    "paddingLeft": 8,
-	    "paddingRight": 8,
-	    "paddingTop": 8,
-	    "paddingBottom": 8
-	  },
-	  "txt": {
-	    "color": "#eeeeee"
-	  }
-	}
-
-/***/ }),
-
-/***/ 210:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    value: { default: '' },
-	    type: { default: '0' // 0, 1
-	    } },
-	  computed: {
-	    bgColor: function bgColor() {
-	      return this.type == '1' ? '#7BA3A8' : '#BEAD92';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 211:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    staticClass: ["item", "txt"],
-	    style: {
-	      backgroundColor: _vm.bgColor
-	    },
-	    attrs: {
-	      "value": _vm.value
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 212:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('panel', {
-	    attrs: {
-	      "title": "Box Model",
-	      "paddingBody": "0",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["box"]
-	  }, [_vm._v("Box")])]), _c('panel', {
-	    attrs: {
-	      "title": "border",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    attrs: {
-	      "title": "border-width",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "2px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "10px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderLeftWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderBottomWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "border-color",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "4px",
-	      borderColor: "#ddd"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "4px",
-	      borderColor: "red"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "border-style",
-	      "type": ""
-	    }
-	  }, [_c('tip', {
-	    staticStyle: {
-	      marginBottom: "10px"
-	    },
-	    attrs: {
-	      "type": "warning",
-	      "value": "just support four edges"
-	    }
-	  }), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "dashed",
-	      borderWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": "",
-	      "type": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "dotted",
-	      borderWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)], 1), _c('panel', {
-	    attrs: {
-	      "title": "border-radius",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      width: "75px",
-	      borderRadius: "38px"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderRadius: "20px"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderTopLeftRadius: "20px",
-	      borderTopRightRadius: "20px"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderBottomLeftRadius: "20px",
-	      borderBottomRightRadius: "20px"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 213:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(214)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(215)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(216)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-flex.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-50f1e28a"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 214:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "row": {
-	    "flexDirection": "row",
-	    "marginBottom": 10
-	  },
-	  "row-align": {
-	    "height": 160,
-	    "borderWidth": 3,
-	    "borderColor": "#dddddd",
-	    "borderStyle": "solid"
-	  }
-	}
-
-/***/ }),
-
-/***/ 215:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(3),
-	    styleItem: __webpack_require__(208)
-	  }
-	};
-
-/***/ }),
-
-/***/ 216:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('panel', {
-	    attrs: {
-	      "title": "flex-direction",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "value": "row"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "type": "1"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      flexDirection: "column"
-	    }
-	  }, [_c('style-item', {
-	    attrs: {
-	      "value": "column"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "type": "1"
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "justify-content",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      justifyContent: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      justifyContent: "flex-end"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      justifyContent: "center"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      justifyContent: "space-between"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "align-items",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["row", "row-align"],
-	    staticStyle: {
-	      alignItems: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row", "row-align"],
-	    staticStyle: {
-	      alignItems: "flex-end"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row", "row-align"],
-	    staticStyle: {
-	      alignItems: "center"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row", "row-align"],
-	    staticStyle: {
-	      alignItems: "stretch"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "flex",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      alignItems: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "value": "no flex",
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      alignItems: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "1"
-	    },
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "2"
-	    },
-	    attrs: {
-	      "value": "flex:2"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      alignItems: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "1"
-	    },
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "1"
-	    },
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "1"
-	    },
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      alignItems: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "1"
-	    },
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "2"
-	    },
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:2"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "3"
-	    },
-	    attrs: {
-	      "value": "flex:3"
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "flex-wrap",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      flexWrap: "wrap",
-	      backgroundColor: "grey",
-	      padding: "10"
-	    }
-	  }, [_c('style-item', {
-	    attrs: {
-	      "value": "1:wrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "2:wrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "3:wrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "4:wrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "5:wrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "6:wrap"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      flexWrap: "nowrap",
-	      backgroundColor: "grey",
-	      padding: "10"
-	    }
-	  }, [_c('style-item', {
-	    attrs: {
-	      "value": "1:nowrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "2:nowrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "3:nowrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "4:nowrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "5:nowrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "6:nowrap"
-	    }
-	  })], 1)])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 217:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', {
-	    staticStyle: {
-	      overflowX: "hidden"
-	    }
-	  }, [_c('style-box'), _c('style-flex'), _c('panel', {
-	    attrs: {
-	      "title": "opacity",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      opacity: "1"
-	    },
-	    attrs: {
-	      "value": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      opacity: "0.9"
-	    },
-	    attrs: {
-	      "value": "0.9"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      opacity: "0.5"
-	    },
-	    attrs: {
-	      "value": "0.5"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      opacity: "0.2"
-	    },
-	    attrs: {
-	      "value": "0.2"
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "background-color",
-	      "type": "primary"
-	    }
-	  }, [_c('div', [_c('style-item', {
-	    staticClass: ["bg-item"],
-	    staticStyle: {
-	      backgroundColor: "#333"
-	    },
-	    attrs: {
-	      "value": "#333"
-	    }
-	  }), _c('style-item', {
-	    staticClass: ["bg-item"],
-	    staticStyle: {
-	      backgroundColor: "#333333"
-	    },
-	    attrs: {
-	      "value": "#333333"
-	    }
-	  }), _c('style-item', {
-	    staticClass: ["bg-item"],
-	    staticStyle: {
-	      backgroundColor: "rgb(238, 162, 54)"
-	    },
-	    attrs: {
-	      "value": "rgb()"
-	    }
-	  }), _c('style-item', {
-	    staticClass: ["bg-item"],
-	    staticStyle: {
-	      backgroundColor: "rgba(238, 162, 54, 0.5)"
-	    },
-	    attrs: {
-	      "value": "rgba()"
-	    }
-	  }), _c('style-item', {
-	    staticClass: ["bg-item"],
-	    staticStyle: {
-	      backgroundColor: "red"
-	    },
-	    attrs: {
-	      "value": "red"
-	    }
-	  })], 1)])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/style/style-box.js b/src/main/assets/vue/style/style-box.js
deleted file mode 100644
index 7097c2a..0000000
--- a/src/main/assets/vue/style/style-box.js
+++ /dev/null
@@ -1,802 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(206)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(207)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(212)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-box.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-9578d60e"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(14)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(15)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(16)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-36fe495c"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 14:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "tip": {
-	    "paddingLeft": 36,
-	    "paddingRight": 36,
-	    "paddingTop": 36,
-	    "paddingBottom": 36,
-	    "borderRadius": 10
-	  },
-	  "tip-txt": {
-	    "fontSize": 28
-	  },
-	  "tip-success": {
-	    "backgroundColor": "#dff0d8",
-	    "borderColor": "#d6e9c6"
-	  },
-	  "tip-txt-success": {
-	    "color": "#3c763d"
-	  },
-	  "tip-info": {
-	    "backgroundColor": "#d9edf7",
-	    "borderColor": "#bce8f1"
-	  },
-	  "tip-txt-info": {
-	    "color": "#31708f"
-	  },
-	  "tip-warning": {
-	    "backgroundColor": "#fcf8e3",
-	    "borderColor": "#faebcc"
-	  },
-	  "tip-txt-warning": {
-	    "color": "#8a6d3b"
-	  },
-	  "tip-danger": {
-	    "backgroundColor": "#f2dede",
-	    "borderColor": "#ebccd1"
-	  },
-	  "tip-txt-danger": {
-	    "color": "#a94442"
-	  }
-	}
-
-/***/ }),
-
-/***/ 15:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 16:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type]
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 206:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "box": {
-	    "backgroundColor": "#f5f5f5",
-	    "width": 260,
-	    "height": 260,
-	    "paddingLeft": 40,
-	    "paddingTop": 40,
-	    "paddingRight": 40,
-	    "paddingBottom": 40,
-	    "marginLeft": 40,
-	    "marginTop": 40,
-	    "marginRight": 40,
-	    "marginBottom": 40,
-	    "borderWidth": 40,
-	    "borderColor": "#333333",
-	    "borderStyle": "solid"
-	  }
-	}
-
-/***/ }),
-
-/***/ 207:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(3),
-	    tip: __webpack_require__(13),
-	    styleItem: __webpack_require__(208)
-	  }
-	};
-
-/***/ }),
-
-/***/ 208:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(209)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(210)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(211)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-item.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-947d2656"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 209:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "item": {
-	    "marginRight": 10,
-	    "width": 160,
-	    "height": 75,
-	    "paddingLeft": 8,
-	    "paddingRight": 8,
-	    "paddingTop": 8,
-	    "paddingBottom": 8
-	  },
-	  "txt": {
-	    "color": "#eeeeee"
-	  }
-	}
-
-/***/ }),
-
-/***/ 210:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    value: { default: '' },
-	    type: { default: '0' // 0, 1
-	    } },
-	  computed: {
-	    bgColor: function bgColor() {
-	      return this.type == '1' ? '#7BA3A8' : '#BEAD92';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 211:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    staticClass: ["item", "txt"],
-	    style: {
-	      backgroundColor: _vm.bgColor
-	    },
-	    attrs: {
-	      "value": _vm.value
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 212:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('panel', {
-	    attrs: {
-	      "title": "Box Model",
-	      "paddingBody": "0",
-	      "type": "primary"
-	    }
-	  }, [_c('text', {
-	    staticClass: ["box"]
-	  }, [_vm._v("Box")])]), _c('panel', {
-	    attrs: {
-	      "title": "border",
-	      "type": "primary"
-	    }
-	  }, [_c('panel', {
-	    attrs: {
-	      "title": "border-width",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "2px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "10px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderLeftWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderBottomWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "border-color",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "4px",
-	      borderColor: "#ddd"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "4px",
-	      borderColor: "red"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "border-style",
-	      "type": ""
-	    }
-	  }, [_c('tip', {
-	    staticStyle: {
-	      marginBottom: "10px"
-	    },
-	    attrs: {
-	      "type": "warning",
-	      "value": "just support four edges"
-	    }
-	  }), _c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      borderStyle: "solid",
-	      borderWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "dashed",
-	      borderWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": "",
-	      "type": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderStyle: "dotted",
-	      borderWidth: "4px",
-	      borderColor: "#333"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)], 1), _c('panel', {
-	    attrs: {
-	      "title": "border-radius",
-	      "type": ""
-	    }
-	  }, [_c('div', {
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      width: "75px",
-	      borderRadius: "38px"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderRadius: "20px"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderTopLeftRadius: "20px",
-	      borderTopRightRadius: "20px"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      borderBottomLeftRadius: "20px",
-	      borderBottomRightRadius: "20px"
-	    },
-	    attrs: {
-	      "value": ""
-	    }
-	  })], 1)])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/style/style-flex.js b/src/main/assets/vue/style/style-flex.js
deleted file mode 100644
index 580fafb..0000000
--- a/src/main/assets/vue/style/style-flex.js
+++ /dev/null
@@ -1,937 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(214)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(215)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(216)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-flex.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-50f1e28a"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 208:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(209)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(210)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(211)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-item.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-947d2656"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 209:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "item": {
-	    "marginRight": 10,
-	    "width": 160,
-	    "height": 75,
-	    "paddingLeft": 8,
-	    "paddingRight": 8,
-	    "paddingTop": 8,
-	    "paddingBottom": 8
-	  },
-	  "txt": {
-	    "color": "#eeeeee"
-	  }
-	}
-
-/***/ }),
-
-/***/ 210:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    value: { default: '' },
-	    type: { default: '0' // 0, 1
-	    } },
-	  computed: {
-	    bgColor: function bgColor() {
-	      return this.type == '1' ? '#7BA3A8' : '#BEAD92';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 211:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    staticClass: ["item", "txt"],
-	    style: {
-	      backgroundColor: _vm.bgColor
-	    },
-	    attrs: {
-	      "value": _vm.value
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 214:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "row": {
-	    "flexDirection": "row",
-	    "marginBottom": 10
-	  },
-	  "row-align": {
-	    "height": 160,
-	    "borderWidth": 3,
-	    "borderColor": "#dddddd",
-	    "borderStyle": "solid"
-	  }
-	}
-
-/***/ }),
-
-/***/ 215:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    panel: __webpack_require__(3),
-	    styleItem: __webpack_require__(208)
-	  }
-	};
-
-/***/ }),
-
-/***/ 216:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('panel', {
-	    attrs: {
-	      "title": "flex-direction",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      flexDirection: "row"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "value": "row"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "type": "1"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      flexDirection: "column"
-	    }
-	  }, [_c('style-item', {
-	    attrs: {
-	      "value": "column"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "type": "1"
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "justify-content",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      justifyContent: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      justifyContent: "flex-end"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      justifyContent: "center"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      justifyContent: "space-between"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "align-items",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["row", "row-align"],
-	    staticStyle: {
-	      alignItems: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row", "row-align"],
-	    staticStyle: {
-	      alignItems: "flex-end"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row", "row-align"],
-	    staticStyle: {
-	      alignItems: "center"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row", "row-align"],
-	    staticStyle: {
-	      alignItems: "stretch"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "flex",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      alignItems: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "value": "no flex",
-	      "type": "1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      alignItems: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0"
-	    },
-	    attrs: {
-	      "value": "no flex"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "1"
-	    },
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "2"
-	    },
-	    attrs: {
-	      "value": "flex:2"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      alignItems: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "1"
-	    },
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "1"
-	    },
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "1"
-	    },
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      alignItems: "flex-start"
-	    }
-	  }, [_c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "1"
-	    },
-	    attrs: {
-	      "value": "flex:1"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "2"
-	    },
-	    attrs: {
-	      "type": "1",
-	      "value": "flex:2"
-	    }
-	  }), _c('style-item', {
-	    staticStyle: {
-	      marginRight: "0",
-	      flex: "3"
-	    },
-	    attrs: {
-	      "value": "flex:3"
-	    }
-	  })], 1)]), _c('panel', {
-	    attrs: {
-	      "title": "flex-wrap",
-	      "type": "primary"
-	    }
-	  }, [_c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      flexWrap: "wrap",
-	      backgroundColor: "grey",
-	      padding: "10"
-	    }
-	  }, [_c('style-item', {
-	    attrs: {
-	      "value": "1:wrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "2:wrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "3:wrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "4:wrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "5:wrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "6:wrap"
-	    }
-	  })], 1), _c('div', {
-	    staticClass: ["row"],
-	    staticStyle: {
-	      flexWrap: "nowrap",
-	      backgroundColor: "grey",
-	      padding: "10"
-	    }
-	  }, [_c('style-item', {
-	    attrs: {
-	      "value": "1:nowrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "2:nowrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "3:nowrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "4:nowrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "5:nowrap"
-	    }
-	  }), _c('style-item', {
-	    attrs: {
-	      "value": "6:nowrap"
-	    }
-	  })], 1)])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/style/style-item.js b/src/main/assets/vue/style/style-item.js
deleted file mode 100644
index c47f5ea..0000000
--- a/src/main/assets/vue/style/style-item.js
+++ /dev/null
@@ -1,159 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(209)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(210)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(211)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/style/style-item.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-947d2656"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 209:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "item": {
-	    "marginRight": 10,
-	    "width": 160,
-	    "height": 75,
-	    "paddingLeft": 8,
-	    "paddingRight": 8,
-	    "paddingTop": 8,
-	    "paddingBottom": 8
-	  },
-	  "txt": {
-	    "color": "#eeeeee"
-	  }
-	}
-
-/***/ }),
-
-/***/ 210:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    value: { default: '' },
-	    type: { default: '0' // 0, 1
-	    } },
-	  computed: {
-	    bgColor: function bgColor() {
-	      return this.type == '1' ? '#7BA3A8' : '#BEAD92';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 211:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    staticClass: ["item", "txt"],
-	    style: {
-	      backgroundColor: _vm.bgColor
-	    },
-	    attrs: {
-	      "value": _vm.value
-	    }
-	  })
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/hello-world-1.js b/src/main/assets/vue/syntax/hello-world-1.js
deleted file mode 100644
index f6b9bf1..0000000
--- a/src/main/assets/vue/syntax/hello-world-1.js
+++ /dev/null
@@ -1,98 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* template */
-	var __vue_template__ = __webpack_require__(221)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world-1.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 221:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _vm._m(0)
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', [_vm._v("Hello World")])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/hello-world-2.js b/src/main/assets/vue/syntax/hello-world-2.js
deleted file mode 100644
index 10b3cc5..0000000
--- a/src/main/assets/vue/syntax/hello-world-2.js
+++ /dev/null
@@ -1,115 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* template */
-	var __vue_template__ = __webpack_require__(222)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world-2.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 222:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _vm._m(0)
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticStyle: {
-	      alignItems: "center",
-	      marginTop: "120px"
-	    }
-	  }, [_c('image', {
-	    staticStyle: {
-	      width: "360px",
-	      height: "82px"
-	    },
-	    attrs: {
-	      "src": "https://alibaba.github.io/weex/img/weex_logo_blue@3x.png"
-	    }
-	  }), _c('text', {
-	    staticStyle: {
-	      fontSize: "48px"
-	    }
-	  }, [_vm._v("Hello World")])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/hello-world-3.js b/src/main/assets/vue/syntax/hello-world-3.js
deleted file mode 100644
index dec78f5..0000000
--- a/src/main/assets/vue/syntax/hello-world-3.js
+++ /dev/null
@@ -1,131 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(223)
-	)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(224)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world-3.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-62c25799"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 223:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "wrapper": {
-	    "alignItems": "center",
-	    "marginTop": 120
-	  },
-	  "title": {
-	    "fontSize": 48
-	  },
-	  "logo": {
-	    "width": 360,
-	    "height": 82
-	  }
-	}
-
-/***/ }),
-
-/***/ 224:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _vm._m(0)
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["wrapper"]
-	  }, [_c('image', {
-	    staticClass: ["logo"],
-	    attrs: {
-	      "src": "https://alibaba.github.io/weex/img/weex_logo_blue@3x.png"
-	    }
-	  }), _c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("Hello World")])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/hello-world-4.js b/src/main/assets/vue/syntax/hello-world-4.js
deleted file mode 100644
index 67f5ec7..0000000
--- a/src/main/assets/vue/syntax/hello-world-4.js
+++ /dev/null
@@ -1,171 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(225)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(226)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(227)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world-4.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-62d06f1a"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 225:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "wrapper": {
-	    "alignItems": "center",
-	    "marginTop": 120
-	  },
-	  "title": {
-	    "fontSize": 48
-	  },
-	  "logo": {
-	    "width": 360,
-	    "height": 82
-	  }
-	}
-
-/***/ }),
-
-/***/ 226:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {
-	    logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-	    target: 'World'
-	  }
-	};
-
-/***/ }),
-
-/***/ 227:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["wrapper"]
-	  }, [_c('image', {
-	    staticClass: ["logo"],
-	    attrs: {
-	      "src": _vm.logoUrl
-	    }
-	  }), _c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/hello-world-5.js b/src/main/assets/vue/syntax/hello-world-5.js
deleted file mode 100644
index 89d9099..0000000
--- a/src/main/assets/vue/syntax/hello-world-5.js
+++ /dev/null
@@ -1,177 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(228)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(229)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(230)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world-5.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-62de869b"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 228:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "wrapper": {
-	    "alignItems": "center",
-	    "marginTop": 120
-	  },
-	  "title": {
-	    "fontSize": 48
-	  },
-	  "logo": {
-	    "width": 360,
-	    "height": 82
-	  }
-	}
-
-/***/ }),
-
-/***/ 229:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {
-	    logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-	    target: 'World'
-	  },
-	  methods: {
-	    update: function update(e) {
-	      this.target = 'Weex';
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 230:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["wrapper"],
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_c('image', {
-	    staticClass: ["logo"],
-	    attrs: {
-	      "src": _vm.logoUrl
-	    }
-	  }), _c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/hello-world.js b/src/main/assets/vue/syntax/hello-world.js
deleted file mode 100644
index f99c126..0000000
--- a/src/main/assets/vue/syntax/hello-world.js
+++ /dev/null
@@ -1,187 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(218)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(219)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(220)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/hello-world.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-80b7209a"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 218:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "wrapper": {
-	    "alignItems": "center",
-	    "marginTop": 120
-	  },
-	  "title": {
-	    "fontSize": 48
-	  },
-	  "logo": {
-	    "width": 360,
-	    "height": 82
-	  }
-	}
-
-/***/ }),
-
-/***/ 219:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {
-	    logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-	    target: 'World'
-	  },
-	  methods: {
-	    update: function update(e) {
-	      this.target = 'Weex';
-	      console.log('target:', this.target);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 220:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["wrapper"],
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_c('image', {
-	    staticClass: ["logo"],
-	    attrs: {
-	      "src": _vm.logoUrl
-	    }
-	  }), _c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("Hello " + _vm._s(_vm.target))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/script-component.js b/src/main/assets/vue/syntax/script-component.js
deleted file mode 100644
index 62a2f27..0000000
--- a/src/main/assets/vue/syntax/script-component.js
+++ /dev/null
@@ -1,237 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(231)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(236)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-component.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 231:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      items: [{ title: 'A', url: 'a' }, { title: 'B', url: 'b' }, { title: 'C', url: 'c' }]
-	    };
-	  },
-	  components: {
-	    item: __webpack_require__(232)
-	  }
-	};
-
-/***/ }),
-
-/***/ 232:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(233)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(234)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(235)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/include/sub.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-7fded835"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 233:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "item-txt": {
-	    "fontSize": 48,
-	    "color": "#555555"
-	  }
-	}
-
-/***/ }),
-
-/***/ 234:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: ['url', 'title']
-	};
-
-/***/ }),
-
-/***/ 235:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('text', {
-	    staticClass: ["item-txt"]
-	  }, [_vm._v(_vm._s(_vm.title))])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 236:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list', _vm._l((_vm.items), function(item, i) {
-	    return _c('cell', {
-	      key: i,
-	      appendAsTree: true,
-	      attrs: {
-	        "append": "tree"
-	      }
-	    }, [_c('text', [_vm._v(_vm._s(item.title))]), _c('item', {
-	      attrs: {
-	        "title": 'a'
-	      }
-	    })], 1)
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/script-data.js b/src/main/assets/vue/syntax/script-data.js
deleted file mode 100644
index 51010b5..0000000
--- a/src/main/assets/vue/syntax/script-data.js
+++ /dev/null
@@ -1,218 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(237)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(238)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(239)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-data.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-35577c70"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 237:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "fontSize": 48
-	  }
-	}
-
-/***/ }),
-
-/***/ 238:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	// // if this is a sub component and the parent component could set `firstName` and `lastName` by:
-	// // `<subcomponent first-name="John" last-name="Smith"></subcomponent>`
-	// // but the `date` won't be changed from parent component
-	// module.exports = {
-	//   props: ['firstName', 'lastName'],
-	//   data: function () {
-	//     return {
-	//       date: Date.now()
-	//     }
-	//   }
-	// }
-
-	// // more `props` formats like
-	// module.exports = {
-	//   props: {
-	//     firstName: {
-	//       default: 'John'
-	//     },
-	//     lastName: {
-	//       type: String,
-	//       default: 'Smith'
-	//     }
-	//   },
-	//   data: function () {
-	//     return {
-	//       date: Date.now()
-	//     }
-	//   }
-	// }
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      firstName: 'John',
-	      lastName: 'Smith',
-	      date: Date.now()
-	    };
-	  },
-	  methods: {
-	    update: function update() {
-	      this.today = '2016-01-01';
-	      console.log('today:', this.today);
-	    }
-	  },
-	  computed: {
-	    fullName: function fullName() {
-	      return this.firstName + ' ' + this.lastName;
-	    },
-	    today: {
-	      get: function get() {
-	        return new Date(this.date).toDateString();
-	      },
-	      set: function set(v) {
-	        this.date = Date.parse(v);
-	      }
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 239:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v(_vm._s(_vm.firstName))]), _c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v(_vm._s(_vm.lastName))]), _c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v(_vm._s(_vm.fullName))]), _c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v(_vm._s(_vm.today))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/script-events.js b/src/main/assets/vue/syntax/script-events.js
deleted file mode 100644
index 4984609..0000000
--- a/src/main/assets/vue/syntax/script-events.js
+++ /dev/null
@@ -1,166 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(240)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(241)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(242)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-events.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-0fd9da37"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 240:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "fontSize": 48
-	  }
-	}
-
-/***/ }),
-
-/***/ 241:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      list: []
-	    };
-	  },
-	  mounted: function mounted() {
-	    function custom(e) {
-	      this.list.push('custom: ' + JSON.stringify(e));
-	      console.log(this.list);
-	    }
-
-	    this.$emit('custom', { x: 1 });
-
-	    this.$on('custom', custom);
-	    this.$emit('custom', { x: 2 });
-
-	    this.$off('custom', custom);
-	    this.$emit('custom', { x: 3 });
-	  }
-	};
-
-/***/ }),
-
-/***/ 242:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', _vm._l((_vm.list), function(value, i) {
-	    return _c('text', {
-	      key: i,
-	      staticClass: ["title"]
-	    }, [_vm._v(_vm._s(value))])
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/script-instance.js b/src/main/assets/vue/syntax/script-instance.js
deleted file mode 100644
index 20d7564..0000000
--- a/src/main/assets/vue/syntax/script-instance.js
+++ /dev/null
@@ -1,200 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(243)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(244)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(245)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-instance.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-6937c633"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 243:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "fontSize": 48
-	  }
-	}
-
-/***/ }),
-
-/***/ 244:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      x: 1,
-	      y: 2
-	    };
-	  },
-	  methods: {
-	    foo: function foo() {
-	      console.log('foo');
-	    },
-	    test: function test() {
-
-	      // access data/props
-	      console.log(this.x);
-
-	      // access computed
-	      console.log(this.z);
-
-	      // call methods
-	      this.foo();
-
-	      // get config
-	      console.log(this.$getConfig());
-
-	      // listen and fire component events
-	      this.$emit('custom');
-	      this.$on('custom', this.foo);
-	      this.$off('custom', this.foo);
-
-	      // // parent component and sub components
-	      // this.$parent.$emit('custom')
-	      // this.$refs['sub'].$emit('custom')
-
-	      // // find element
-	      // var dom = weex.requireModule('dom')
-	      // dom.scrollToElement(this.$el('title'), {offset: 0})
-	    }
-	  },
-	  computed: {
-	    z: function z() {
-	      return this.x + this.y;
-	    }
-	  },
-	  mounted: function mounted() {
-	    this.test();
-	  }
-	};
-
-/***/ }),
-
-/***/ 245:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _vm._m(0)
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: ["title"],
-	    attrs: {
-	      "id": "title"
-	    }
-	  }, [_vm._v("Please check out the source code.")])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/script-lifecycle.js b/src/main/assets/vue/syntax/script-lifecycle.js
deleted file mode 100644
index 7f6e510..0000000
--- a/src/main/assets/vue/syntax/script-lifecycle.js
+++ /dev/null
@@ -1,160 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(246)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(247)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(248)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-lifecycle.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-30f5343c"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 246:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "fontSize": 48
-	  }
-	}
-
-/***/ }),
-
-/***/ 247:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var initMessage;
-	module.exports = {
-	  data: function data() {
-	    return {
-	      list: ['Lifecycle List']
-	    };
-	  },
-	  init: function init() {
-	    initMessage = 'component init: nothing more happen even the data initialization';
-	    console.log('init:', this.list);
-	  },
-	  created: function created() {
-	    this.list.push(initMessage);
-	    this.list.push('component created: data observed');
-	    console.log('created:', this.list);
-	  },
-	  mounted: function mounted() {
-	    this.list.push('component mounted: virtual dom generated');
-	    console.log('mounted:', this.list);
-	  }
-	};
-
-/***/ }),
-
-/***/ 248:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', _vm._l((_vm.list), function(value, i) {
-	    return _c('text', {
-	      key: i,
-	      staticClass: ["title"]
-	    }, [_vm._v(_vm._s(value))])
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/script-module.js b/src/main/assets/vue/syntax/script-module.js
deleted file mode 100644
index 86a9d0f..0000000
--- a/src/main/assets/vue/syntax/script-module.js
+++ /dev/null
@@ -1,163 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(249)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(250)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(251)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-module.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-bf7683ec"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 249:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "btn": {
-	    "fontSize": 36,
-	    "textAlign": "center",
-	    "color": "#FFFFFF",
-	    "backgroundColor": "#808080",
-	    "paddingTop": 20,
-	    "paddingRight": 20,
-	    "paddingBottom": 20,
-	    "paddingLeft": 20,
-	    "borderRadius": 5
-	  }
-	}
-
-/***/ }),
-
-/***/ 250:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  methods: {
-	    test: function test() {
-	      modal.toast({
-	        message: 'Toast!',
-	        duration: 3
-	      });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 251:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.test
-	    }
-	  }, [_vm._v("Toast!")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/script-options.js b/src/main/assets/vue/syntax/script-options.js
deleted file mode 100644
index 01b7391..0000000
--- a/src/main/assets/vue/syntax/script-options.js
+++ /dev/null
@@ -1,186 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(252)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(253)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(254)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/script-options.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-c44ec020"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 252:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "fontSize": 48
-	  }
-	}
-
-/***/ }),
-
-/***/ 253:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  // // import sub components
-	  // components: {
-	  //   item: require('./components/sub.vue')
-	  // },
-
-	  // // for sub component only
-	  // props: ['a', 'b'],
-
-	  // for root component only
-	  data: {
-	    x: 1,
-	    y: 2
-	  },
-	  // // for sub component only
-	  // data: function () {
-	  //   return {
-	  //     x: 1,
-	  //     y: 2
-	  //   }
-	  // }
-
-	  methods: {
-	    foo: function foo() {
-	      console.log('foo');
-	    }
-	  },
-
-	  computed: {
-	    z: function z() {
-	      return this.x + this.y;
-	    }
-	  },
-
-	  init: function init() {},
-	  created: function created() {},
-	  mounted: function mounted() {}
-	};
-
-/***/ }),
-
-/***/ 254:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _vm._m(0)
-	},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("Please check out the source code.")])])
-	}]}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/template-class.js b/src/main/assets/vue/syntax/template-class.js
deleted file mode 100644
index c6969d9..0000000
--- a/src/main/assets/vue/syntax/template-class.js
+++ /dev/null
@@ -1,165 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(255)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(256)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(257)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-class.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-8a4acb8e"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 255:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "a": {
-	    "fontSize": 48
-	  },
-	  "b": {
-	    "color": "#ff0000"
-	  }
-	}
-
-/***/ }),
-
-/***/ 256:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {
-	    x: ''
-	  },
-	  methods: {
-	    update: function update(e) {
-	      this.x = 'b';
-	      console.log('x', this.x);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 257:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_c('text', {
-	    staticClass: ["a"]
-	  }, [_vm._v("Hello")]), _c('text', {
-	    staticClass: ["b"]
-	  }, [_vm._v("Hello")]), _c('text', {
-	    class: ['a', _vm.x]
-	  }, [_vm._v("Hello")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/template-content.js b/src/main/assets/vue/syntax/template-content.js
deleted file mode 100644
index d03f1a9..0000000
--- a/src/main/assets/vue/syntax/template-content.js
+++ /dev/null
@@ -1,199 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(258)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(262)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-content.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 258:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  components: {
-	    btn: __webpack_require__(259)
-	  }
-	};
-
-/***/ }),
-
-/***/ 259:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(260)
-	)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(261)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/include/btn.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-08edab5e"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 260:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "btn": {
-	    "fontSize": 36,
-	    "textAlign": "center",
-	    "color": "#FFFFFF",
-	    "backgroundColor": "#808080",
-	    "paddingTop": 20,
-	    "paddingRight": 20,
-	    "paddingBottom": 20,
-	    "paddingLeft": 20,
-	    "borderRadius": 5
-	  }
-	}
-
-/***/ }),
-
-/***/ 261:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    staticClass: ["btn"]
-	  }, [_vm._t("default")], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 262:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('btn', [_c('text', [_vm._v("Click!")])])], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/template-event.js b/src/main/assets/vue/syntax/template-event.js
deleted file mode 100644
index dd74769..0000000
--- a/src/main/assets/vue/syntax/template-event.js
+++ /dev/null
@@ -1,204 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(263)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(264)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(265)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-event.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-8563fb4a"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 263:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "fontSize": 48
-	  },
-	  "subtitle": {
-	    "fontSize": 36
-	  },
-	  "btn": {
-	    "fontSize": 36,
-	    "textAlign": "center",
-	    "color": "#FFFFFF",
-	    "backgroundColor": "#808080",
-	    "paddingTop": 20,
-	    "paddingRight": 20,
-	    "paddingBottom": 20,
-	    "paddingLeft": 20,
-	    "borderRadius": 5
-	  }
-	}
-
-/***/ }),
-
-/***/ 264:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      name: 'Steve',
-	      temp: 'Mike'
-	    };
-	  },
-	  methods: {
-	    update: function update(e) {
-	      this.setName('David');
-	      console.log('setName', this.name);
-	    },
-	    setName: function setName(value) {
-	      this.name = value;
-	      console.log('name', this.name);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 265:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("Hello " + _vm._s(_vm.name))]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_vm._v("Update 1")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": function($event) {
-	        _vm.update($event)
-	      }
-	    }
-	  }, [_vm._v("Update 1")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": function($event) {
-	        _vm.setName(_vm.temp, $event)
-	      }
-	    }
-	  }, [_vm._v("Update 2")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": function($event) {
-	        _vm.setName('John')
-	      }
-	    }
-	  }, [_vm._v("Update 3")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/template-if.js b/src/main/assets/vue/syntax/template-if.js
deleted file mode 100644
index 8fb9aa6..0000000
--- a/src/main/assets/vue/syntax/template-if.js
+++ /dev/null
@@ -1,172 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(266)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(267)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(268)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-if.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-5e6af0a8"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 266:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "fontSize": 48
-	  },
-	  "btn": {
-	    "fontSize": 36,
-	    "textAlign": "center",
-	    "color": "#FFFFFF",
-	    "backgroundColor": "#808080",
-	    "paddingTop": 20,
-	    "paddingRight": 20,
-	    "paddingBottom": 20,
-	    "paddingLeft": 20,
-	    "borderRadius": 5
-	  }
-	}
-
-/***/ }),
-
-/***/ 267:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: {
-	    flag: true
-	  },
-	  methods: {
-	    toggle: function toggle(e) {
-	      this.flag = !this.flag;
-	      console.log('this.flag:', this.flag);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 268:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.toggle
-	    }
-	  }, [_vm._v("Toggle")]), (_vm.flag) ? _c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("I'm ON")]) : _vm._e(), (!_vm.flag) ? _c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("I'm Off")]) : _vm._e()])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/template-repeat-update.js b/src/main/assets/vue/syntax/template-repeat-update.js
deleted file mode 100644
index af0fd09..0000000
--- a/src/main/assets/vue/syntax/template-repeat-update.js
+++ /dev/null
@@ -1,202 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(272)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(273)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(274)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-repeat-update.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-dd21c108"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 272:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "fontSize": 48
-	  },
-	  "subtitle": {
-	    "fontSize": 36
-	  },
-	  "btn": {
-	    "fontSize": 36,
-	    "textAlign": "center",
-	    "color": "#FFFFFF",
-	    "backgroundColor": "#808080",
-	    "paddingTop": 20,
-	    "paddingRight": 20,
-	    "paddingBottom": 20,
-	    "paddingLeft": 20,
-	    "borderRadius": 5
-	  }
-	}
-
-/***/ }),
-
-/***/ 273:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      list: [{ key: 1, text: 'a' }, { key: 2, text: 'a' }, { key: 3, text: 'b' }, { key: 4, text: 'c' }, { key: 5, text: 'a' }],
-	      flag: true
-	    };
-	  },
-	  methods: {
-	    update: function update(e) {
-	      // equals to `this.list.text = 'foo'`
-	      // DO NOT USE: `this.list[2] = {key: 3, text: 'foo'}}`
-	      Vue.set(this.list, 2, { key: 3, text: 'foo' });
-	      console.log('this.list', this.list);
-	    },
-	    mutate: function mutate(e) {
-	      if (this.list.length % 2) {
-	        this.list.push({ key: 'x', text: 'bar' });
-	      } else {
-	        this.list.pop();
-	      }
-	      console.log('this.list', this.list);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 274:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("Track by")]), _vm._l((_vm.list), function(item, k, $index) {
-	    return _c('text', {
-	      staticClass: ["subtitle"],
-	      attrs: {
-	        "trackBy": "item.key"
-	      }
-	    }, [_vm._v(_vm._s($index) + "-" + _vm._s(item.text))])
-	  }), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_vm._v("Update")]), _c('text', {
-	    staticClass: ["btn"],
-	    on: {
-	      "click": _vm.mutate
-	    }
-	  }, [_vm._v("Mutate")])], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/template-repeat.js b/src/main/assets/vue/syntax/template-repeat.js
deleted file mode 100644
index 4344d6f..0000000
--- a/src/main/assets/vue/syntax/template-repeat.js
+++ /dev/null
@@ -1,177 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(269)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(270)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(271)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-repeat.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-0cf7b4ac"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 269:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "title": {
-	    "fontSize": 48
-	  },
-	  "subtitle": {
-	    "fontSize": 36
-	  }
-	}
-
-/***/ }),
-
-/***/ 270:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      list: ['a', 'b', 'c', 'd', 'e'],
-	      list2: [{ text: 'a' }, { text: 'b' }, { text: 'c' }, { text: 'd' }, { text: 'e' }]
-	    };
-	  }
-	};
-
-/***/ }),
-
-/***/ 271:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', [_c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("Custom item")]), _vm._l((_vm.list), function(item) {
-	    return _c('text', {
-	      key: item.index,
-	      staticClass: ["subtitle"]
-	    }, [_vm._v(_vm._s(item))])
-	  }), _c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("Custom key and item")]), _vm._l((_vm.list), function(v, i) {
-	    return _c('text', {
-	      key: i,
-	      staticClass: ["subtitle"]
-	    }, [_vm._v(_vm._s(i) + "-" + _vm._s(v))])
-	  }), _c('text', {
-	    staticClass: ["title"]
-	  }, [_vm._v("Array of Object")]), _vm._l((_vm.list2), function(item, k, index) {
-	    return _c('text', {
-	      key: index,
-	      staticClass: ["subtitle"]
-	    }, [_vm._v("> " + _vm._s(index) + "-" + _vm._s(item.text))])
-	  })], 2)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/syntax/template-style.js b/src/main/assets/vue/syntax/template-style.js
deleted file mode 100644
index 4a6a043..0000000
--- a/src/main/assets/vue/syntax/template-style.js
+++ /dev/null
@@ -1,147 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(275)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(276)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/syntax/template-style.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 275:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  data: function data() {
-	    return {
-	      size: 32,
-	      color: '#ff0000'
-	    };
-	  },
-	  methods: {
-	    update: function update(e) {
-	      this.size = 48;
-	      console.log('this.size', this.size);
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 276:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    on: {
-	      "click": _vm.update
-	    }
-	  }, [_c('text', {
-	    staticStyle: {
-	      fontSize: "48px",
-	      color: "#0000ff"
-	    }
-	  }, [_vm._v("Hello")]), _c('text', {
-	    style: {
-	      fontSize: _vm.size,
-	      color: _vm.color
-	    }
-	  }, [_vm._v("Hello")])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/template.js b/src/main/assets/vue/template.js
deleted file mode 100644
index bfb172d..0000000
--- a/src/main/assets/vue/template.js
+++ /dev/null
@@ -1,821 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* script */
-	__vue_exports__ = __webpack_require__(277)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(282)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/template.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(4)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(5)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(6)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/panel.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-58511ff6"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginBottom": 20,
-	    "backgroundColor": "#ffffff",
-	    "borderColor": "#dddddd",
-	    "borderWidth": 1
-	  },
-	  "panel-primary": {
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "panel-success": {
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "panel-info": {
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "panel-warning": {
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "panel-danger": {
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "panel-header": {
-	    "backgroundColor": "#f5f5f5",
-	    "fontSize": 40,
-	    "color": "#333333"
-	  },
-	  "panel-header-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "color": "#ffffff"
-	  },
-	  "panel-header-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "color": "#ffffff"
-	  },
-	  "panel-body": {
-	    "paddingLeft": 12,
-	    "paddingRight": 12,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  }
-	}
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    title: { default: '' },
-	    paddingBody: { default: 20 },
-	    paddingHead: { default: 20 },
-	    dataClass: { default: '' }, // FIXME transfer class
-	    border: { default: 0 }
-	  }
-	};
-
-/***/ }),
-
-/***/ 6:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['panel', 'panel-' + _vm.type],
-	    style: {
-	      borderWidth: _vm.border
-	    }
-	  }, [_c('text', {
-	    class: ['panel-header', 'panel-header-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingHead,
-	      paddingBottom: _vm.paddingHead,
-	      paddingLeft: _vm.paddingHead * 1.5,
-	      paddingRight: _vm.paddingHead * 1.5
-	    }
-	  }, [_vm._v(_vm._s(_vm.title))]), _c('div', {
-	    class: ['panel-body', 'panel-body-' + _vm.type],
-	    style: {
-	      paddingTop: _vm.paddingBody,
-	      paddingBottom: _vm.paddingBody,
-	      paddingLeft: _vm.paddingBody * 1.5,
-	      paddingRight: _vm.paddingBody * 1.5
-	    }
-	  }, [_vm._t("default")], 2)])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(8)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(9)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(10)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/button.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-71b34881"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 8:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "btn": {
-	    "marginBottom": 0,
-	    "alignItems": "center",
-	    "justifyContent": "center",
-	    "borderWidth": 1,
-	    "borderStyle": "solid",
-	    "borderColor": "#333333"
-	  },
-	  "btn-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-primary": {
-	    "backgroundColor": "rgb(40,96,144)",
-	    "borderColor": "rgb(40,96,144)"
-	  },
-	  "btn-success": {
-	    "backgroundColor": "rgb(92,184,92)",
-	    "borderColor": "rgb(76,174,76)"
-	  },
-	  "btn-info": {
-	    "backgroundColor": "rgb(91,192,222)",
-	    "borderColor": "rgb(70,184,218)"
-	  },
-	  "btn-warning": {
-	    "backgroundColor": "rgb(240,173,78)",
-	    "borderColor": "rgb(238,162,54)"
-	  },
-	  "btn-danger": {
-	    "backgroundColor": "rgb(217,83,79)",
-	    "borderColor": "rgb(212,63,58)"
-	  },
-	  "btn-link": {
-	    "borderColor": "rgba(0,0,0,0)",
-	    "borderRadius": 0
-	  },
-	  "btn-txt-default": {
-	    "color": "rgb(51,51,51)"
-	  },
-	  "btn-txt-primary": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-success": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-info": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-warning": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-danger": {
-	    "color": "rgb(255,255,255)"
-	  },
-	  "btn-txt-link": {
-	    "color": "rgb(51,122,183)"
-	  },
-	  "btn-sz-large": {
-	    "width": 300,
-	    "height": 100,
-	    "paddingTop": 25,
-	    "paddingBottom": 25,
-	    "paddingLeft": 40,
-	    "paddingRight": 40,
-	    "borderRadius": 15
-	  },
-	  "btn-sz-middle": {
-	    "width": 240,
-	    "height": 80,
-	    "paddingTop": 15,
-	    "paddingBottom": 15,
-	    "paddingLeft": 30,
-	    "paddingRight": 30,
-	    "borderRadius": 10
-	  },
-	  "btn-sz-small": {
-	    "width": 170,
-	    "height": 60,
-	    "paddingTop": 12,
-	    "paddingBottom": 12,
-	    "paddingLeft": 25,
-	    "paddingRight": 25,
-	    "borderRadius": 7
-	  },
-	  "btn-txt-sz-large": {
-	    "fontSize": 45
-	  },
-	  "btn-txt-sz-middle": {
-	    "fontSize": 35
-	  },
-	  "btn-txt-sz-small": {
-	    "fontSize": 30
-	  }
-	}
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'default' },
-	    size: { default: 'large' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size]
-	  }, [_c('text', {
-	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 13:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(14)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(15)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(16)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/tip.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-36fe495c"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 14:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "tip": {
-	    "paddingLeft": 36,
-	    "paddingRight": 36,
-	    "paddingTop": 36,
-	    "paddingBottom": 36,
-	    "borderRadius": 10
-	  },
-	  "tip-txt": {
-	    "fontSize": 28
-	  },
-	  "tip-success": {
-	    "backgroundColor": "#dff0d8",
-	    "borderColor": "#d6e9c6"
-	  },
-	  "tip-txt-success": {
-	    "color": "#3c763d"
-	  },
-	  "tip-info": {
-	    "backgroundColor": "#d9edf7",
-	    "borderColor": "#bce8f1"
-	  },
-	  "tip-txt-info": {
-	    "color": "#31708f"
-	  },
-	  "tip-warning": {
-	    "backgroundColor": "#fcf8e3",
-	    "borderColor": "#faebcc"
-	  },
-	  "tip-txt-warning": {
-	    "color": "#8a6d3b"
-	  },
-	  "tip-danger": {
-	    "backgroundColor": "#f2dede",
-	    "borderColor": "#ebccd1"
-	  },
-	  "tip-txt-danger": {
-	    "color": "#a94442"
-	  }
-	}
-
-/***/ }),
-
-/***/ 15:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    type: { default: 'success' },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 16:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['tip', 'tip-' + _vm.type]
-	  }, [_c('text', {
-	    class: ['tip-txt', 'tip-txt-' + _vm.type]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 277:
-/***/ (function(module, exports, __webpack_require__) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	var modal = weex.requireModule('modal');
-	module.exports = {
-	  data: function data() {
-	    return {
-	      img: '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg'
-	    };
-	  },
-	  components: {
-	    panel: __webpack_require__(3),
-	    hn: __webpack_require__(278),
-	    tip: __webpack_require__(13),
-	    button: __webpack_require__(7)
-	  },
-	  methods: {
-	    toast: function toast() {
-	      modal.toast({ message: 'a toast', duration: 2 });
-	    }
-	  }
-	};
-
-/***/ }),
-
-/***/ 278:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(279)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(280)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(281)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/include/hn.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-79d897d5"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-
-
-/***/ }),
-
-/***/ 279:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "h1": {
-	    "height": 110,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  },
-	  "h2": {
-	    "height": 110,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  },
-	  "h3": {
-	    "height": 110,
-	    "paddingTop": 20,
-	    "paddingBottom": 20
-	  },
-	  "txt-h1": {
-	    "fontSize": 70
-	  },
-	  "txt-h2": {
-	    "fontSize": 52
-	  },
-	  "txt-h3": {
-	    "fontSize": 42
-	  }
-	}
-
-/***/ }),
-
-/***/ 280:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	//
-	//
-	//
-	//
-	//
-	//
-
-	module.exports = {
-	  props: {
-	    level: { default: 1 },
-	    value: { default: '' }
-	  }
-	};
-
-/***/ }),
-
-/***/ 281:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('div', {
-	    class: ['h' + _vm.level],
-	    staticStyle: {
-	      justifyContent: "center"
-	    }
-	  }, [_c('text', {
-	    class: ['txt-h' + _vm.level]
-	  }, [_vm._v(_vm._s(_vm.value))])])
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ }),
-
-/***/ 282:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('scroller', [_c('panel', {
-	    attrs: {
-	      "title": "Dialog",
-	      "type": "primary"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: {
-	      marginBottom: "20px"
-	    },
-	    attrs: {
-	      "type": "success",
-	      "value": "It's a weex example template."
-	    }
-	  }), _c('hn', {
-	    attrs: {
-	      "level": "1",
-	      "value": "H1"
-	    }
-	  }), _c('button', {
-	    attrs: {
-	      "type": "primary",
-	      "value": "Toast"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.toast($event)
-	      }
-	    }
-	  }), _c('hn', {
-	    attrs: {
-	      "level": "2",
-	      "value": "H3"
-	    }
-	  }), _c('button', {
-	    attrs: {
-	      "type": "warning",
-	      "value": "Toast"
-	    },
-	    nativeOn: {
-	      "click": function($event) {
-	        _vm.toast($event)
-	      }
-	    }
-	  })], 1), _c('panel', {
-	    attrs: {
-	      "title": "Image",
-	      "type": "primary"
-	    }
-	  }, [_c('tip', {
-	    staticStyle: {
-	      marginBottom: "20px"
-	    },
-	    attrs: {
-	      "type": "warning",
-	      "value": "Weex screen width is 750"
-	    }
-	  }), _c('image', {
-	    staticClass: ["img"],
-	    staticStyle: {
-	      width: "400px",
-	      height: "400px"
-	    },
-	    attrs: {
-	      "src": _vm.img
-	    }
-	  }), _c('panel', {
-	    attrs: {
-	      "title": "Image",
-	      "type": "default"
-	    }
-	  }, [_c('text', [_vm._v("sub info")])])], 1)], 1)
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/assets/vue/transition.js b/src/main/assets/vue/transition.js
deleted file mode 100644
index 30b9fc5..0000000
--- a/src/main/assets/vue/transition.js
+++ /dev/null
@@ -1,265 +0,0 @@
-// { "framework": "Vue" }
-
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
-/******/ 		};
-
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
-
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-
-
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports, __webpack_require__) {
-
-	var __vue_exports__, __vue_options__
-	var __vue_styles__ = []
-
-	/* styles */
-	__vue_styles__.push(__webpack_require__(283)
-	)
-
-	/* script */
-	__vue_exports__ = __webpack_require__(284)
-
-	/* template */
-	var __vue_template__ = __webpack_require__(285)
-	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
-	if (
-	  typeof __vue_exports__.default === "object" ||
-	  typeof __vue_exports__.default === "function"
-	) {
-	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
-	__vue_options__ = __vue_exports__ = __vue_exports__.default
-	}
-	if (typeof __vue_options__ === "function") {
-	  __vue_options__ = __vue_options__.options
-	}
-	__vue_options__.__file = "/Users/Hanks/Codes/work/incubator-weex/examples/vue/transition.vue"
-	__vue_options__.render = __vue_template__.render
-	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-	__vue_options__._scopeId = "data-v-1de2b95d"
-	__vue_options__.style = __vue_options__.style || {}
-	__vue_styles__.forEach(function (module) {
-	  for (var name in module) {
-	    __vue_options__.style[name] = module[name]
-	  }
-	})
-	if (typeof __register_static_styles__ === "function") {
-	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
-	}
-
-	module.exports = __vue_exports__
-	module.exports.el = 'true'
-	new Vue(module.exports)
-
-
-/***/ }),
-
-/***/ 283:
-/***/ (function(module, exports) {
-
-	module.exports = {
-	  "panel": {
-	    "marginTop": 10,
-	    "marginRight": 10,
-	    "marginBottom": 10,
-	    "marginLeft": 10,
-	    "top": 10,
-	    "alignItems": "center",
-	    "justifyContent": "center",
-	    "border": "solid",
-	    "borderRadius": 10,
-	    "transitionProperty": "right,left,top,bottom,width,height,backgroundColor,opacity,transform",
-	    "transitionDuration": 500,
-	    "transitionDelay": 0,
-	    "transitionTimingFunction": "cubic-bezier(0.58,0.1,0.42,1)"
-	  },
-	  "@TRANSITION": {
-	    "panel": {
-	      "property": "right,left,top,bottom,width,height,backgroundColor,opacity,transform",
-	      "duration": 500,
-	      "delay": 0,
-	      "timingFunction": "cubic-bezier(0.58,0.1,0.42,1)"
-	    }
-	  },
-	  "cell": {
-	    "backgroundColor": "#FFFFFF",
-	    "flexDirection": "row"
-	  },
-	  "text": {
-	    "fontSize": 60,
-	    "textAlign": "center",
-	    "color": "#FFFFFF"
-	  },
-	  "list": {
-	    "backgroundColor": "#FFFFFF"
-	  }
-	}
-
-/***/ }),
-
-/***/ 284:
-/***/ (function(module, exports) {
-
-	'use strict';
-
-	Object.defineProperty(exports, "__esModule", {
-	    value: true
-	});
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-	//
-
-	exports.default = {
-	    created: function created() {
-	        this.datasource = ['width+height', 'backgroundColor', 'opactity', 'transform/translateX', 'transform/translateY', 'transform/scaleX', 'transform/scaleY', 'transform/rotate'];
-	        this.panels = this.randomfn();
-	    },
-	    data: function data() {
-	        return {
-	            panels: []
-	        };
-	    },
-
-	    methods: {
-	        change: function change(i) {
-	            var item = this.panels[i];
-	            if (item) {
-
-	                if (i == 0) {
-	                    item.height = item.height === 330 ? 200 : 330;
-	                    item.width = item.width === 350 ? 730 : 350;
-	                }
-	                if (i == 1) {
-	                    item.bgc = item.bgc === '#69BE96' ? 'red' : '#69BE96';
-	                }
-	                if (i == 2) {
-	                    item.opacity = item.opacity === 1.0 ? 0.6 : 1.0;
-	                }
-	                if (i == 3) {
-	                    item.bgc = item.bgc === '#69BE96' ? '#72B8DF' : '#69BE96';
-	                    item.transform = item.transform === 'translateX(200px)' ? 'translateX(0px)' : 'translateX(200px)';
-	                }
-	                if (i == 4) {
-	                    item.bgc = item.bgc === '#69BE96' ? '#72B8DF' : '#69BE96';
-	                    item.transform = item.transform === 'translateY(-150px)' ? 'translateY(0px)' : 'translateY(-150px)';
-	                }
-	                if (i == 5) {
-	                    item.bgc = item.bgc === '#69BE96' ? '#72B8DF' : '#69BE96';
-	                    item.transform = item.transform === 'scaleX(0.5)' ? 'scaleX(1)' : 'scaleX(0.5)';
-	                }
-	                if (i == 6) {
-	                    item.bgc = item.bgc === '#69BE96' ? '#72B8DF' : '#69BE96';
-	                    item.transform = item.transform === 'scaleY(0.5)' ? 'scaleY(1)' : 'scaleY(0.5)';
-	                }
-	                if (i == 7) {
-	                    item.bgc = item.bgc === '#69BE96' ? '#72B8DF' : '#69BE96';
-	                    item.transform = item.transform === 'rotate(40deg)' ? 'rotate(0deg)' : 'rotate(40deg)';
-	                }
-	            }
-	        },
-	        randomfn: function randomfn() {
-	            var ary = [];
-	            for (var i = 0; i <= 7; i++) {
-	                ary.push({ label: this.datasource[i], height: 200, width: 730, bgc: '#69BE96', opacity: 1, right: 20 });
-	            }
-	            return ary;
-	        }
-	    }
-	};
-
-/***/ }),
-
-/***/ 285:
-/***/ (function(module, exports) {
-
-	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
-	  return _c('list', {
-	    staticClass: ["list"]
-	  }, _vm._l((_vm.panels), function(item, i) {
-	    return _c('cell', {
-	      staticClass: ["cell"],
-	      appendAsTree: true,
-	      attrs: {
-	        "append": "tree"
-	      },
-	      on: {
-	        "click": function($event) {
-	          _vm.change(i)
-	        }
-	      }
-	    }, [_c('div', {
-	      staticClass: ["panel"],
-	      style: {
-	        height: item.height,
-	        width: item.width,
-	        backgroundColor: item.bgc,
-	        opacity: item.opacity,
-	        transform: item.transform
-	      }
-	    }, [_c('text', {
-	      staticClass: ["text"]
-	    }, [_vm._v(_vm._s(item.label))])]), _c('div', {
-	      staticClass: ["panel"],
-	      style: {
-	        height: item.height,
-	        width: item.width,
-	        backgroundColor: item.bgc,
-	        opacity: item.opacity,
-	        transform: item.transform
-	      }
-	    }, [_c('text', {
-	      staticClass: ["text"]
-	    }, [_vm._v(_vm._s(item.label))])])])
-	  }))
-	},staticRenderFns: []}
-	module.exports.render._withStripped = true
-
-/***/ })
-
-/******/ });
\ No newline at end of file
diff --git a/src/main/java/com/alibaba/weex/IndexActivity.java b/src/main/java/com/alibaba/weex/IndexActivity.java
index fa14490..3cc1c5e 100644
--- a/src/main/java/com/alibaba/weex/IndexActivity.java
+++ b/src/main/java/com/alibaba/weex/IndexActivity.java
@@ -6,9 +6,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -83,7 +83,7 @@
     }
 
     if (TextUtils.equals(sCurrentIp, DEFAULT_IP)) {
-      renderPage(WXFileUtils.loadAsset("vue/index.js", this), getIndexUrl());
+      renderPage(WXFileUtils.loadAsset("landing.weex.js", this), getIndexUrl());
     } else {
       renderPageByURL(getIndexUrl());
     }
@@ -94,7 +94,7 @@
       public void onReceive(Context context, Intent intent) {
         createWeexInstance();
         if (TextUtils.equals(sCurrentIp, DEFAULT_IP)) {
-          renderPage(WXFileUtils.loadAsset("vue/index.js", getApplicationContext()), getIndexUrl());
+          renderPage(WXFileUtils.loadAsset("landing.weex.js", getApplicationContext()), getIndexUrl());
         } else {
           renderPageByURL(getIndexUrl());
         }