You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by zs...@apache.org on 2017/03/27 07:11:58 UTC

[08/13] incubator-weex git commit: Merge branch 'v0.10.0-playground' into 0.11-dev

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/93063f14/android/playground/app/src/main/assets/vue/components/image.js
----------------------------------------------------------------------
diff --git a/android/playground/app/src/main/assets/vue/components/image.js b/android/playground/app/src/main/assets/vue/components/image.js
new file mode 100644
index 0000000..975ec97
--- /dev/null
+++ b/android/playground/app/src/main/assets/vue/components/image.js
@@ -0,0 +1,641 @@
+// { "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__(405)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(406)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(407)
+	__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/lixinke/git/other/weex/examples/vue/components/image.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]
+	}
+	})
+
+	module.exports = __vue_exports__
+	module.exports.el = 'true'
+	new Vue(module.exports)
+
+
+/***/ },
+
+/***/ 383:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __vue_exports__, __vue_options__
+	var __vue_styles__ = []
+
+	/* styles */
+	__vue_styles__.push(__webpack_require__(384)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(385)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(386)
+	__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/lixinke/git/other/weex/examples/vue/include/panel.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]
+	}
+	})
+
+	module.exports = __vue_exports__
+
+
+/***/ },
+
+/***/ 384:
+/***/ 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"
+	  }
+	}
+
+/***/ },
+
+/***/ 385:
+/***/ 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 }
+	  }
+	};
+
+/***/ },
+
+/***/ 386:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('div', {
+	    class: ['panel', 'panel-' + _vm.type],
+	    style: {
+	      borderWidth: _vm.border
+	    }
+	  }, [_h('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._s(_vm.title)]), _h('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")])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ },
+
+/***/ 393:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __vue_exports__, __vue_options__
+	var __vue_styles__ = []
+
+	/* styles */
+	__vue_styles__.push(__webpack_require__(394)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(395)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(396)
+	__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/lixinke/git/other/weex/examples/vue/include/tip.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]
+	}
+	})
+
+	module.exports = __vue_exports__
+
+
+/***/ },
+
+/***/ 394:
+/***/ 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"
+	  }
+	}
+
+/***/ },
+
+/***/ 395:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	module.exports = {
+	  props: {
+	    type: { default: 'success' },
+	    value: { default: '' }
+	  }
+	};
+
+/***/ },
+
+/***/ 396:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('div', {
+	    class: ['tip', 'tip-' + _vm.type]
+	  }, [_h('text', {
+	    class: ['tip-txt', 'tip-txt-' + _vm.type]
+	  }, [_vm._s(_vm.value)])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ },
+
+/***/ 405:
+/***/ function(module, exports) {
+
+	module.exports = {
+	  "img": {
+	    "marginBottom": 20
+	  }
+	}
+
+/***/ },
+
+/***/ 406:
+/***/ 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__(383),
+	    tip: __webpack_require__(393)
+	  }
+	};
+
+/***/ },
+
+/***/ 407:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('scroller', [_h('panel', {
+	    attrs: {
+	      "title": "width x height",
+	      "type": "primary"
+	    }
+	  }, [_h('tip', {
+	    staticStyle: {
+	      marginBottom: "20px"
+	    },
+	    attrs: {
+	      "type": "warning",
+	      "value": "Weex screen width is 750"
+	    }
+	  }), _h('div', {
+	    staticStyle: {
+	      flexDirection: "row"
+	    }
+	  }, [_h('image', {
+	    staticClass: ["img"],
+	    staticStyle: {
+	      width: "300px",
+	      height: "300px"
+	    },
+	    attrs: {
+	      "src": _vm.img
+	    }
+	  }), _h('image', {
+	    staticClass: ["img"],
+	    staticStyle: {
+	      width: "200px",
+	      height: "200px"
+	    },
+	    attrs: {
+	      "src": _vm.img
+	    }
+	  }), _h('image', {
+	    staticClass: ["img"],
+	    staticStyle: {
+	      width: "50px",
+	      height: "50px"
+	    },
+	    attrs: {
+	      "src": _vm.img
+	    }
+	  })])]), _h('panel', {
+	    attrs: {
+	      "title": "GIF Animation",
+	      "type": "primary"
+	    }
+	  }, [_h('tip', {
+	    staticStyle: {
+	      marginBottom: "20px"
+	    },
+	    attrs: {
+	      "type": "warning",
+	      "value": "Depanding on Native ImageSDK"
+	    }
+	  }), _h('div', {
+	    staticStyle: {
+	      flexDirection: "row"
+	    }
+	  }, [_h('image', {
+	    staticClass: ["img"],
+	    staticStyle: {
+	      width: "96px",
+	      height: "96px"
+	    },
+	    attrs: {
+	      "src": "https://gtd.alicdn.com/tps/i4/T1HcvHXd4nXXb6ROYh-48-48.gif"
+	    }
+	  }), _h('image', {
+	    staticClass: ["img"],
+	    staticStyle: {
+	      width: "68px",
+	      height: "68px",
+	      marginLeft: "20px"
+	    },
+	    attrs: {
+	      "src": "https://gw.alicdn.com/tps/TB1El.mKXXXXXXyapXXXXXXXXXX-34-34.gif"
+	    }
+	  })])]), _h('panel', {
+	    attrs: {
+	      "title": "Base64",
+	      "type": "primary"
+	    }
+	  }, [_h('tip', {
+	    staticStyle: {
+	      marginBottom: "20px"
+	    },
+	    attrs: {
+	      "type": "warning",
+	      "value": "Depanding on Native ImageSDK"
+	    }
+	  }), _h('div', {
+	    staticStyle: {
+	      flexDirection: "row"
+	    }
+	  }, [_h('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="
+	    }
+	  }), _h('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+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlp
 ZDo0Q0QxODlDNENEOEQxMUUzOEIzM0I1ODVGNjU1MjBBQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Q0QxODlDNUNEOEQxMUUzOEIzM0I1ODVGNjU1MjBBQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDRDE4OUMyQ0Q4RDExRTM4QjMzQjU4NUY2NTUyMEFCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDRDE4OUMzQ0Q4RDExRTM4QjMzQjU4NUY2NTUyMEFCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQAAOwAsAAAAACIAIgAABv/AnXBIFDIEnxmoyGw6hw6LTrdKPK9PhmI6lWC/xQN3agWDMWNdhDTJmZ+gS1oXUDUoD8dbOHk05oAIHS8aYDRbgIlTDTVXGiiKkVwFTgwdkpg6GE1ymZIRJUUjnpkURBCkmQJDDBueAQGJACEAOqtCCaQhBgOAAxEAAAtCGQKeBAAIyGkiFzk3Ii64UpghCg45EstTAAYQOS0DMUKjmLMPOTkVAQRc3d8cA
 ZQ7YpgDAzbpHDrt3AYlOTggeCDEmL0B3wLyc+ctBwgEHgpmupdwXz8dAGTAC2BCCIWJBACqYzfGwIEcHkSM21EgFiYRC9I9uDcm2IoAAGAIaYFIEgBkAh8UBJvTbUCAYUIkkDLAwiggWLagREiF6ZaQAlQlIR3SKeucAJuITLjkNc2CE0yOlOWiIsOTAgjKNnB7pYKLuKQimJhgxkEBJC7nWFBwwAPaPTs0kJBwIMWGDSkaHECRoMKTIAAh+QQFAAA7ACwPAA0AEgAJAAAGRMCdUKcTGo3E4jF5RDKHSaUzCdtFn9ar5IrVBUQsA+JBDBkMISuSIJAsdgkAgFIojHaDpm3nOJKEFQFpTTsgUi+EiUJBACH5BAUAADsALA8AEQASAAgAAAYfQJ1wSCzqEA+jcmh5LZeWxFOJ8EyVkqsRpi0uukRBEAAh+QQFAAA7ACwPABEAEgAIAAAGWcCdcEgUBkQsAzFkMISKO4JAskAkAABKoTDaDYYAgy3nQHgGA1IuVwk8hQAZJAfSmQaE17pNIBoOOR4iMTsiC2sPaERYKwEAcAQfClhQYQMBfiyXUDsBmDtBACH5BAUAADsALA8ADQASAAkAAAZRwJ1wSBwCAMVdYJkMhGSiYYDAYhmSIVyJQnDtCApTYXY0yiC51iAGCD1yucrUaEBzAoXBwAbnfOklOX4PemiCf0QQOyCJQhw6BEk7d0MlkpdBACH5BAUAADsALBAADQAQAAQAAAYmwN0uEBAajyGAMWQYHIW6QQQA0O0ACILyKLrkbqLQzpGTEJ6GYxAAIfkEBQAAOwAsEAANABAABAAABiTA3U6nExqPgKIwQDwuQzKRLrBjsQxKYwhXohAIO9ODAnDKjkEAIfkEBQAAOwAsDwANABIACQAABkPAnXBIHOp0xR0yqTwum86k8wiDTo1TnSQbFeoCIpYB8TiGDIaQ0kgQSBa7BABAKRRGu0HRtnMQSUIVAWpJIE8vTIlBACH5BA
 UAADsALA8AEQASAAgAAAYfQJ1wSCzqEA+jcmh5LZeWxFOJ8EyVkqsRpi0uukRBEAAh+QQFAAA7ACwPABEAEgAIAAAGWcCdcEgUBkQsAzFkMISKO4JAskAkAABKoTDaDYYAgy3nQHgGA1IuVwk8hQAZJAfSmQaE17pNIBoOOR4iMTsiC2sPaERYKwEAcAQfClhQYQMBfiyXUDsBmDtBACH5BAUAADsALA8ADQASAAkAAAZQwJ1wSBwCAMVdICkMhGSiYYDAYhmSIVyJQnDtCArTg3I0yiC51iAGCD1yucrUaEBzAoXBwAbnfOklOX4PemiCf0QQOyCJQhw6BEx3QyVMlkEAIfkEBWQAOwAsEAANABAABAAABibA3S4QEBqPIYAxZBgchbpBBADQ7QAIgvIouuRuotDOkZMQnoZjEAA7"
+	    }
+	  })])]), _h('panel', {
+	    attrs: {
+	      "title": "resize",
+	      "type": "primary"
+	    }
+	  }, [_h('panel', {
+	    attrs: {
+	      "title": "resize=stretch(default) 600 x 200 "
+	    }
+	  }, [_h('image', {
+	    staticClass: ["img"],
+	    staticStyle: {
+	      width: "600px",
+	      height: "200px",
+	      borderStyle: "solid",
+	      borderWidth: "1px",
+	      borderColor: "#333"
+	    },
+	    attrs: {
+	      "src": _vm.img,
+	      "resize": "stretch"
+	    }
+	  })]), _h('panel', {
+	    attrs: {
+	      "title": "resize=contain 600 x 200 "
+	    }
+	  }, [_h('image', {
+	    staticClass: ["img"],
+	    staticStyle: {
+	      width: "600px",
+	      height: "200px",
+	      borderStyle: "solid",
+	      borderWidth: "1px",
+	      borderColor: "#333"
+	    },
+	    attrs: {
+	      "src": _vm.img,
+	      "resize": "contain"
+	    }
+	  })]), _h('panel', {
+	    attrs: {
+	      "title": "resize=cover 600 x 200"
+	    }
+	  }, [_h('image', {
+	    staticClass: ["img"],
+	    staticStyle: {
+	      width: "600px",
+	      height: "200px",
+	      borderStyle: "solid",
+	      borderWidth: "1px",
+	      borderColor: "#333"
+	    },
+	    attrs: {
+	      "src": _vm.img,
+	      "resize": "cover"
+	    }
+	  })])])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ }
+
+/******/ });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/93063f14/android/playground/app/src/main/assets/vue/components/input.js
----------------------------------------------------------------------
diff --git a/android/playground/app/src/main/assets/vue/components/input.js b/android/playground/app/src/main/assets/vue/components/input.js
new file mode 100644
index 0000000..d996ab4
--- /dev/null
+++ b/android/playground/app/src/main/assets/vue/components/input.js
@@ -0,0 +1,364 @@
+// { "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__(408)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(409)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(410)
+	__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/lixinke/git/other/weex/examples/vue/components/input.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]
+	}
+	})
+
+	module.exports = __vue_exports__
+	module.exports.el = 'true'
+	new Vue(module.exports)
+
+
+/***/ },
+
+/***/ 383:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __vue_exports__, __vue_options__
+	var __vue_styles__ = []
+
+	/* styles */
+	__vue_styles__.push(__webpack_require__(384)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(385)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(386)
+	__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/lixinke/git/other/weex/examples/vue/include/panel.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]
+	}
+	})
+
+	module.exports = __vue_exports__
+
+
+/***/ },
+
+/***/ 384:
+/***/ 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"
+	  }
+	}
+
+/***/ },
+
+/***/ 385:
+/***/ 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 }
+	  }
+	};
+
+/***/ },
+
+/***/ 386:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('div', {
+	    class: ['panel', 'panel-' + _vm.type],
+	    style: {
+	      borderWidth: _vm.border
+	    }
+	  }, [_h('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._s(_vm.title)]), _h('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")])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ },
+
+/***/ 408:
+/***/ function(module, exports) {
+
+	module.exports = {
+	  "input": {
+	    "fontSize": 60,
+	    "height": 80,
+	    "width": 400
+	  }
+	}
+
+/***/ },
+
+/***/ 409:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	var modal = __weex_require_module__('modal');
+	module.exports = {
+	  data: function data() {
+	    return {
+	      txtInput: '',
+	      txtChange: ''
+	    };
+	  },
+	  components: {
+	    panel: __webpack_require__(383)
+	  },
+	  methods: {
+	    onchange: function onchange(event) {
+	      this.txtChange = event.value;
+	      modal.toast({
+	        message: 'onchange: ' + event.value,
+	        duration: 2
+	      });
+	    },
+	    oninput: function oninput(event) {
+	      this.txtInput = event.value;
+	      modal.toast({
+	        message: 'onitput: ' + event.value,
+	        duration: 1
+	      });
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 410:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('scroller', [_h('panel', {
+	    attrs: {
+	      "title": "input",
+	      "type": "primary"
+	    }
+	  }, [_h('input', {
+	    staticClass: ["input"],
+	    attrs: {
+	      "type": "text",
+	      "placeholder": "Text Input",
+	      "autofocus": "true",
+	      "value": ""
+	    },
+	    on: {
+	      "change": _vm.onchange,
+	      "input": _vm.oninput
+	    }
+	  }), _h('text', ["oninput: " + _vm._s(_vm.txtInput)]), _h('text', ["onchange: " + _vm._s(_vm.txtChange)])])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ }
+
+/******/ });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/93063f14/android/playground/app/src/main/assets/vue/components/list.js
----------------------------------------------------------------------
diff --git a/android/playground/app/src/main/assets/vue/components/list.js b/android/playground/app/src/main/assets/vue/components/list.js
new file mode 100644
index 0000000..e8d18d2
--- /dev/null
+++ b/android/playground/app/src/main/assets/vue/components/list.js
@@ -0,0 +1,246 @@
+// { "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__(411)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(412)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(413)
+	__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/lixinke/git/other/weex/examples/vue/components/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]
+	}
+	})
+
+	module.exports = __vue_exports__
+	module.exports.el = 'true'
+	new Vue(module.exports)
+
+
+/***/ },
+
+/***/ 411:
+/***/ function(module, exports) {
+
+	module.exports = {
+	  "list": {
+	    "height": 850
+	  },
+	  "count": {
+	    "fontSize": 48,
+	    "margin": 10
+	  },
+	  "indicator": {
+	    "height": 40,
+	    "width": 40,
+	    "color": "#45b5f0"
+	  },
+	  "row": {
+	    "width": 750
+	  },
+	  "item": {
+	    "justifyContent": "center",
+	    "borderBottomWidth": 2,
+	    "borderBottomColor": "#c0c0c0",
+	    "height": 100,
+	    "padding": 20
+	  }
+	}
+
+/***/ },
+
+/***/ 412:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	module.exports = {
+	  methods: {
+	    onappear: function onappear(e) {
+	      var appearId = this.rows[e.target.attr.index].id;
+	      nativeLog('+++++', appearId);
+	      var appearIds = this.appearIds;
+	      appearIds.push(appearId);
+	      this.getMinAndMaxIds(appearIds);
+	    },
+	    ondisappear: function ondisappear(e) {
+	      var disAppearId = this.rows[e.target.attr.index].id;
+	      nativeLog('+++++', 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 }]
+	    };
+	  }
+	};
+
+/***/ },
+
+/***/ 413:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('div', [_h('list', {
+	    staticClass: ["list"]
+	  }, [_vm._l((_vm.rows), function(v, i) {
+	    return _h('cell', {
+	      staticClass: ["row"],
+	      appendAsTree: true,
+	      attrs: {
+	        "append": "tree",
+	        "index": i
+	      },
+	      on: {
+	        "appear": _vm.onappear,
+	        "disappear": _vm.ondisappear
+	      }
+	    }, [_h('div', {
+	      staticClass: ["item"]
+	    }, [_h('text', {
+	      staticClass: ["item-title"]
+	    }, ["row " + _vm._s(v.id)])])])
+	  })]), _h('text', {
+	    staticClass: ["count"],
+	    attrs: {
+	      "value": 'Appear items: ' + _vm.appearMin + ' ~ ' + _vm.appearMax
+	    }
+	  })])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ }
+
+/******/ });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/93063f14/android/playground/app/src/main/assets/vue/components/marquee.js
----------------------------------------------------------------------
diff --git a/android/playground/app/src/main/assets/vue/components/marquee.js b/android/playground/app/src/main/assets/vue/components/marquee.js
new file mode 100644
index 0000000..8f71cff
--- /dev/null
+++ b/android/playground/app/src/main/assets/vue/components/marquee.js
@@ -0,0 +1,534 @@
+// { "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__(414)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(419)
+	__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/lixinke/git/other/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]
+	}
+	})
+
+	module.exports = __vue_exports__
+	module.exports.el = 'true'
+	new Vue(module.exports)
+
+
+/***/ },
+
+/***/ 383:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __vue_exports__, __vue_options__
+	var __vue_styles__ = []
+
+	/* styles */
+	__vue_styles__.push(__webpack_require__(384)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(385)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(386)
+	__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/lixinke/git/other/weex/examples/vue/include/panel.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]
+	}
+	})
+
+	module.exports = __vue_exports__
+
+
+/***/ },
+
+/***/ 384:
+/***/ 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"
+	  }
+	}
+
+/***/ },
+
+/***/ 385:
+/***/ 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 }
+	  }
+	};
+
+/***/ },
+
+/***/ 386:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('div', {
+	    class: ['panel', 'panel-' + _vm.type],
+	    style: {
+	      borderWidth: _vm.border
+	    }
+	  }, [_h('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._s(_vm.title)]), _h('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")])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ },
+
+/***/ 414:
+/***/ 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__(383),
+	    marquee: __webpack_require__(415)
+	  },
+	  methods: {
+	    marqueeChange: function marqueeChange(e) {
+	      console.log(e);
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 415:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __vue_exports__, __vue_options__
+	var __vue_styles__ = []
+
+	/* styles */
+	__vue_styles__.push(__webpack_require__(416)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(417)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(418)
+	__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/lixinke/git/other/weex/examples/vue/include/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]
+	}
+	})
+
+	module.exports = __vue_exports__
+
+
+/***/ },
+
+/***/ 416:
+/***/ function(module, exports) {
+
+	module.exports = {
+	  "wrap": {
+	    "overflow": "hidden",
+	    "position": "relative"
+	  },
+	  "anim": {
+	    "flexDirection": "column",
+	    "position": "absolute",
+	    "transform": "translateY(0) translateZ(0)"
+	  }
+	}
+
+/***/ },
+
+/***/ 417:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	var _animation = __weex_require_module__('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.ref, {
+	        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;
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 418:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('div', {
+	    staticClass: ["wrap"],
+	    on: {
+	      "appear": _vm.appeared,
+	      "disappear": _vm.disappeared
+	    }
+	  }, [_h('div', {
+	    ref: "anim",
+	    staticClass: ["anim"]
+	  }, [_vm._t("default")])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ },
+
+/***/ 419:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('scroller', [_h('panel', {
+	    attrs: {
+	      "title": "Marquee",
+	      "type": "primary"
+	    }
+	  }, [_h('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) {
+	    return _h('div', {
+	      style: {
+	        height: _vm.marquee.height * _vm.marquee.length,
+	        paddingTop: _vm.marquee.height * 0.5,
+	        paddingBottom: _vm.marquee.height * 0.5,
+	        overflow: 'hidden'
+	      }
+	    }, [_h('text', {
+	      style: {
+	        height: _vm.marquee.height,
+	        color: 'rgb(60, 118, 61)',
+	        fontSize: 28
+	      }
+	    }, [_vm._s(item.text)])])
+	  })])])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ }
+
+/******/ });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/93063f14/android/playground/app/src/main/assets/vue/components/navigator.js
----------------------------------------------------------------------
diff --git a/android/playground/app/src/main/assets/vue/components/navigator.js b/android/playground/app/src/main/assets/vue/components/navigator.js
new file mode 100644
index 0000000..5fdefce
--- /dev/null
+++ b/android/playground/app/src/main/assets/vue/components/navigator.js
@@ -0,0 +1,1059 @@
+// { "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__(420)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(430)
+	__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/lixinke/git/other/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]
+	}
+	})
+
+	module.exports = __vue_exports__
+	module.exports.el = 'true'
+	new Vue(module.exports)
+
+
+/***/ },
+
+/***/ 383:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __vue_exports__, __vue_options__
+	var __vue_styles__ = []
+
+	/* styles */
+	__vue_styles__.push(__webpack_require__(384)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(385)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(386)
+	__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/lixinke/git/other/weex/examples/vue/include/panel.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]
+	}
+	})
+
+	module.exports = __vue_exports__
+
+
+/***/ },
+
+/***/ 384:
+/***/ 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"
+	  }
+	}
+
+/***/ },
+
+/***/ 385:
+/***/ 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 }
+	  }
+	};
+
+/***/ },
+
+/***/ 386:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('div', {
+	    class: ['panel', 'panel-' + _vm.type],
+	    style: {
+	      borderWidth: _vm.border
+	    }
+	  }, [_h('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._s(_vm.title)]), _h('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")])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ },
+
+/***/ 387:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __vue_exports__, __vue_options__
+	var __vue_styles__ = []
+
+	/* styles */
+	__vue_styles__.push(__webpack_require__(388)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(389)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(390)
+	__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/lixinke/git/other/weex/examples/vue/include/button.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]
+	}
+	})
+
+	module.exports = __vue_exports__
+
+
+/***/ },
+
+/***/ 388:
+/***/ 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
+	  }
+	}
+
+/***/ },
+
+/***/ 389:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	module.exports = {
+	  props: {
+	    type: { default: 'default' },
+	    size: { default: 'large' },
+	    value: { default: '' }
+	  }
+	};
+
+/***/ },
+
+/***/ 390:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('div', {
+	    class: ['btn', 'btn-' + _vm.type, 'btn-sz-' + _vm.size]
+	  }, [_h('text', {
+	    class: ['btn-txt', 'btn-txt-' + _vm.type, 'btn-txt-sz-' + _vm.size]
+	  }, [_vm._s(_vm.value)])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ },
+
+/***/ 420:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	var navigator = __weex_require_module__('navigator');
+	var getBaseURL = __webpack_require__(421).getBaseURL;
+	module.exports = {
+	  data: function data() {
+	    return {
+	      navBarHeight: 88,
+	      title: 'Navigator',
+	      dir: 'examples',
+	      baseURL: ''
+	    };
+	  },
+	  components: {
+	    panel: __webpack_require__(383),
+	    navpage: __webpack_require__(422),
+	    button: __webpack_require__(387)
+	  },
+	  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 + 'vue/components/navigator.js?test=1',
+	        'animated': 'true'
+	      };
+	      navigator.push(params, function () {});
+	    },
+	    pop: function pop() {
+	      var params = {
+	        'url': this.baseURL + 'vue/components/navigator.js?test=1',
+	        'animated': 'true'
+	      };
+	      navigator.pop(params, function () {});
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 421:
+/***/ function(module, exports) {
+
+	exports.getBaseURL = function (vm) {
+	  var bundleUrl = vm.$getConfig().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(vm.$getConfig().bundleUrl);
+	    if (matches && matches.length >= 2) {
+	      host = matches[1];
+	    }
+	    nativeBase = 'http://' + host + '/' + vm.dir + '/build/';
+	  }
+	  var h5Base = './index.html?page=./' + vm.dir + '/build/';
+	  // in Native
+	  var base = nativeBase;
+	  if (typeof window === 'object') {
+	    // in Browser or WebView
+	    base = h5Base;
+	  }
+	  return base
+	}
+
+
+/***/ },
+
+/***/ 422:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __vue_exports__, __vue_options__
+	var __vue_styles__ = []
+
+	/* styles */
+	__vue_styles__.push(__webpack_require__(423)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(424)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(429)
+	__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/lixinke/git/other/weex/examples/vue/include/navpage.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]
+	}
+	})
+
+	module.exports = __vue_exports__
+
+
+/***/ },
+
+/***/ 423:
+/***/ function(module, exports) {
+
+	module.exports = {
+	  "wrapper": {
+	    "position": "absolute",
+	    "top": 0,
+	    "left": 0,
+	    "right": 0,
+	    "bottom": 0,
+	    "width": 750
+	  }
+	}
+
+/***/ },
+
+/***/ 424:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	module.exports = {
+	  components: {
+	    navbar: __webpack_require__(425)
+	  },
+	  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);
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 425:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __vue_exports__, __vue_options__
+	var __vue_styles__ = []
+
+	/* styles */
+	__vue_styles__.push(__webpack_require__(426)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(427)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(428)
+	__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/lixinke/git/other/weex/examples/vue/include/navbar.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]
+	}
+	})
+
+	module.exports = __vue_exports__
+
+
+/***/ },
+
+/***/ 426:
+/***/ 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
+	  }
+	}
+
+/***/ },
+
+/***/ 427:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	module.exports = {
+	  props: {
+	    dataRole: { default: 'navbar' },
+	    //\u5bfc\u822a\u6761\u80cc\u666f\u8272
+	    backgroundColor: { default: 'black' },
+	    //\u5bfc\u822a\u6761\u9ad8\u5ea6
+	    height: { default: 88 },
+	    //\u5bfc\u822a\u6761\u6807\u9898 
+	    title: { default: '' },
+	    //\u5bfc\u822a\u6761\u6807\u9898\u989c\u8272
+	    titleColor: { default: 'black' },
+	    //\u53f3\u4fa7\u6309\u94ae\u56fe\u7247
+	    rightItemSrc: { default: '' },
+	    //\u53f3\u4fa7\u6309\u94ae\u6807\u9898
+	    rightItemTitle: { default: '' },
+	    //\u53f3\u4fa7\u6309\u94ae\u6807\u9898\u989c\u8272
+	    rightItemColor: { default: 'black' },
+	    //\u5de6\u4fa7\u6309\u94ae\u56fe\u7247
+	    leftItemSrc: { default: '' },
+	    //\u5de6\u4fa7\u6309\u94ae\u6807\u9898
+	    leftItemTitle: { default: '' },
+	    //\u5de6\u4fa7\u6309\u94ae\u989c\u8272
+	    leftItemColor: { default: 'black' }
+	  },
+	  methods: {
+	    onclickrightitem: function onclickrightitem(e) {
+	      this.$emit('naviBarRightItemClick');
+	    },
+	    onclickleftitem: function onclickleftitem(e) {
+	      this.$emit('naviBarLeftItemClick');
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 428:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('div', {
+	    staticClass: ["container"],
+	    style: {
+	      height: _vm.height,
+	      backgroundColor: _vm.backgroundColor
+	    },
+	    attrs: {
+	      "dataRole": _vm.dataRole
+	    }
+	  }, [(!_vm.rightItemSrc) ? _h('text', {
+	    staticClass: ["right-text"],
+	    style: {
+	      color: _vm.rightItemColor
+	    },
+	    attrs: {
+	      "naviItemPosition": "right"
+	    },
+	    on: {
+	      "click": _vm.onclickrightitem
+	    }
+	  }, [_vm._s(_vm.rightItemTitle)]) : _vm._e(), (_vm.rightItemSrc) ? _h('image', {
+	    staticClass: ["right-image"],
+	    attrs: {
+	      "naviItemPosition": "right",
+	      "src": _vm.rightItemSrc
+	    },
+	    on: {
+	      "click": _vm.onclickrightitem
+	    }
+	  }) : _vm._e(), (!_vm.leftItemSrc) ? _h('text', {
+	    staticClass: ["left-text"],
+	    style: {
+	      color: _vm.leftItemColor
+	    },
+	    attrs: {
+	      "naviItemPosition": "left"
+	    },
+	    on: {
+	      "click": _vm.onclickleftitem
+	    }
+	  }, [_vm._s(_vm.leftItemTitle)]) : _vm._e(), (_vm.leftItemSrc) ? _h('image', {
+	    staticClass: ["left-image"],
+	    attrs: {
+	      "naviItemPosition": "left",
+	      "src": _vm.leftItemSrc
+	    },
+	    on: {
+	      "click": _vm.onclickleftitem
+	    }
+	  }) : _vm._e(), _h('text', {
+	    staticClass: ["center-text"],
+	    style: {
+	      color: _vm.titleColor
+	    },
+	    attrs: {
+	      "naviItemPosition": "center"
+	    }
+	  }, [_vm._s(_vm.title)])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ },
+
+/***/ 429:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('div', {
+	    staticClass: ["wrapper"]
+	  }, [_h('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
+	    }
+	  }), _h('div', {
+	    staticClass: ["wrapper"],
+	    style: {
+	      marginTop: _vm.height
+	    }
+	  }, [_vm._t("default")])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ },
+
+/***/ 430:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('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
+	    }
+	  }, [_h('panel', {
+	    attrs: {
+	      "title": "push a new page"
+	    }
+	  }, [_h('button', {
+	    attrs: {
+	      "type": "primary",
+	      "size": "small",
+	      "value": "push"
+	    },
+	    nativeOn: {
+	      "click": function($event) {
+	        _vm.push($event)
+	      }
+	    }
+	  })]), _h('panel', {
+	    attrs: {
+	      "title": "pop to the last page"
+	    }
+	  }, [_h('button', {
+	    attrs: {
+	      "type": "success",
+	      "size": "small",
+	      "value": "pop"
+	    },
+	    nativeOn: {
+	      "click": function($event) {
+	        _vm.pop($event)
+	      }
+	    }
+	  })])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ }
+
+/******/ });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/93063f14/android/playground/app/src/main/assets/vue/components/scroller.js
----------------------------------------------------------------------
diff --git a/android/playground/app/src/main/assets/vue/components/scroller.js b/android/playground/app/src/main/assets/vue/components/scroller.js
new file mode 100644
index 0000000..922f338
--- /dev/null
+++ b/android/playground/app/src/main/assets/vue/components/scroller.js
@@ -0,0 +1,304 @@
+// { "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__(431)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(432)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(433)
+	__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/lixinke/git/other/weex/examples/vue/components/scroller.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]
+	}
+	})
+
+	module.exports = __vue_exports__
+	module.exports.el = 'true'
+	new Vue(module.exports)
+
+
+/***/ },
+
+/***/ 431:
+/***/ 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"
+	  },
+	  "indicator": {
+	    "height": 40,
+	    "width": 40,
+	    "color": "#45b5f0"
+	  },
+	  "header": {
+	    "backgroundColor": "#45b5f0",
+	    "padding": 20,
+	    "height": 88,
+	    "justifyContent": "center"
+	  },
+	  "header-title": {
+	    "color": "#FFFFFF",
+	    "fontWeight": "bold"
+	  },
+	  "item": {
+	    "justifyContent": "center",
+	    "borderBottomWidth": 2,
+	    "borderBottomColor": "#c0c0c0",
+	    "height": 100,
+	    "padding": 20
+	  }
+	}
+
+/***/ },
+
+/***/ 432:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	module.exports = {
+	  methods: {
+	    onrefresh: function onrefresh(e) {
+	      var self = this;
+	      self.refresh_display = 'show';
+	      setTimeout(function () {
+	        self.refresh_display = 'hide';
+	      }, 1000);
+	    },
+	    onloading: function onloading(e) {
+	      var self = this;
+	      self.loading_display = 'show';
+	      setTimeout(function () {
+	        self.loading_display = 'hide';
+	      }, 1000);
+	    }
+	  },
+	  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 }]
+	      }],
+	      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 }]
+	      }]
+	    };
+	  }
+	};
+
+/***/ },
+
+/***/ 433:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _h('scroller', {
+	    staticClass: ["list"],
+	    appendAsTree: true,
+	    attrs: {
+	      "append": "tree"
+	    }
+	  }, [_vm._l((_vm.sections), function(sec) {
+	    return _h('div', {
+	      staticClass: ["section"]
+	    }, [_h('div', {
+	      staticClass: ["header"]
+	    }, [_h('text', {
+	      staticClass: ["header-title"]
+	    }, [_vm._s(sec.title)])]), _vm._l((sec.items), function(item) {
+	      return _h('div', {
+	        staticClass: ["item"]
+	      }, [_h('text', {
+	        staticClass: ["item-title"]
+	      }, ["row " + _vm._s(item.id)])])
+	    })])
+	  }), _h('loading', {
+	    staticClass: ["loading-view"],
+	    attrs: {
+	      "display": _vm.loading_display,
+	      "onloading": "onloading"
+	    }
+	  }, [_h('loading-indicator', {
+	    staticStyle: {
+	      height: "60",
+	      width: "60"
+	    }
+	  })])])
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ }
+
+/******/ });
\ No newline at end of file