You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by so...@apache.org on 2017/04/13 02:31:55 UTC
[01/23] incubator-weex git commit: * [html5] change viewport adapter,
add unit tests for new adapting methods.
Repository: incubator-weex
Updated Branches:
refs/heads/0.12-dev 3806842c0 -> 8c90235c2
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/utils/style.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/utils/style.js b/html5/test/render/vue/utils/style.js
new file mode 100644
index 0000000..af0d71a
--- /dev/null
+++ b/html5/test/render/vue/utils/style.js
@@ -0,0 +1,68 @@
+import {
+ autoPrefix,
+ normalizeStyle,
+ normalizeString,
+ normalizeNumber,
+ normalizeUnitsNum
+} from '../../../../render/vue/utils/style'
+import { init, resetViewport } from '../../../../render/vue/env/viewport'
+
+describe('style', function () {
+ const rect = document.documentElement.getBoundingClientRect()
+ const info = {}
+ const { scale, dpr } = init()
+
+ it('should normalize units numbers', function () {
+ expect(normalizeUnitsNum('100px')).to.equal(100 * scale + 'px')
+ expect(normalizeUnitsNum('100')).to.equal(100 * scale + 'px')
+ expect(normalizeUnitsNum('100wx')).to.equal(100 * scale * dpr + 'px')
+ expect(normalizeUnitsNum('20wm')).to.equal('')
+ })
+
+ it('should normalize number style vals', function () {
+ expect(normalizeNumber('width', 10)).to.equal(10 * scale + 'px')
+ expect(normalizeNumber('width', 1.2)).to.equal(1.2 * scale + 'px')
+ })
+
+ it('should normalize string style vals', function () {
+ expect(normalizeString('width', '100%')).to.equal('100%')
+ expect(normalizeString('transform', 'translate3d(10px, 10px, 10px)'))
+ .to.equal(`translate3d(${10 * scale}px, ${10 * scale}px, ${10 * scale}px)`)
+ expect(normalizeString('border-bottom', '4px solid #112233'))
+ .to.equal(`${4 * scale}px solid #112233`)
+ expect(normalizeString('border-left', '4wx dotted red'))
+ .to.equal(`${4 * scale * dpr}px dotted red`)
+ })
+
+ it('should normalize style object', function () {
+ //
+ })
+})
+
+describe('autoPrefix', function () {
+ const style = {
+ width: '200px',
+ flexDirection: 'row',
+ transform: 'translate3d(100px, 100px, 0)'
+ }
+
+ it('should add prefix for styles.', function () {
+ const res = autoPrefix(style)
+ const {
+ WebkitBoxDirection,
+ WebkitBoxOrient,
+ WebkitFlexDirection,
+ flexDirection,
+ WebkitTransform,
+ transform,
+ width
+ } = res
+ expect(WebkitBoxDirection).to.equal('normal')
+ expect(WebkitBoxOrient).to.equal('horizontal')
+ expect(WebkitFlexDirection).to.equal('row')
+ expect(flexDirection).to.equal('row')
+ expect(WebkitTransform).to.equal('translate3d(100px, 100px, 0)')
+ expect(transform).to.equal('translate3d(100px, 100px, 0)')
+ expect(width).to.equal('200px')
+ })
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 10a720e..c60d18b 100644
--- a/package.json
+++ b/package.json
@@ -62,7 +62,7 @@
"lint": "eslint html5",
"flow": "flow check",
"test:case": "mocha --require reify html5/test/case/tester.js",
- "test:vue": "karma start build/karma.vue.conf.js",
+ "test:vue": "webpack --config build/webpack.test.web.config.js && karma start build/karma.vue.conf.js",
"test:unit": "mocha --require reify html5/test/unit/*/*.js html5/test/unit/*/*/*.js",
"test": "npm run lint && npm run test:unit && npm run test:case && npm run test:vue",
"test:cover-html": "babel-istanbul cover --report html node_modules/mocha/bin/_mocha -- --require reify --reporter dot html5/test/unit/*/*.js html5/test/unit/*/*/*.js && open coverage/index.html",
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/vue.html
----------------------------------------------------------------------
diff --git a/vue.html b/vue.html
index bb68764..5e931dd 100644
--- a/vue.html
+++ b/vue.html
@@ -45,12 +45,13 @@
}
</style>
- <script src="./node_modules/vue/dist/vue.runtime.min.js"></script>
+ <!-- <script src="./node_modules/vue/dist/vue.runtime.min.js"></script> -->
<!-- <script src="./node_modules/vue/dist/vue.runtime.js"></script> -->
- <!-- <script src="dist/vue.runtime.js"></script> -->
+ <script src="dist/vue.runtime.js"></script>
<!-- <script src="./node_modules/weex-vue-render/index.min.js"></script> -->
- <!-- <script src="./packages/weex-vue-render/dist/index.js"></script> -->
- <script src="./packages/weex-vue-render/dist/index.min.js"></script>
+ <script src="./packages/weex-vue-render/dist/index.js"></script>
+ <!-- <script src="//unpkg.com/weex-vue-render@0.11.2/dist/index.js"></script> -->
+ <!-- <script src="./packages/weex-vue-render/dist/index.min.js"></script> -->
</head>
<body>
<div id="root"></div>
[21/23] incubator-weex git commit: Merge branch
'android-feature-picker-improvement' of github.com:misakuo/incubator-weex
into 0.12-dev
Posted by so...@apache.org.
Merge branch 'android-feature-picker-improvement' of github.com:misakuo/incubator-weex into 0.12-dev
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/102e37dc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/102e37dc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/102e37dc
Branch: refs/heads/0.12-dev
Commit: 102e37dcde3dbed5cf101dea6db4b618edd6b981
Parents: f5fa773 e0a0c72
Author: sospartan <so...@apache.org>
Authored: Thu Apr 13 10:19:03 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Thu Apr 13 10:19:03 2017 +0800
----------------------------------------------------------------------
.../main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java | 2 ++
1 file changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/102e37dc/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
----------------------------------------------------------------------
[08/23] incubator-weex git commit: * [html5] bugfix.
Posted by so...@apache.org.
* [html5] bugfix.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/e8ab2699
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/e8ab2699
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/e8ab2699
Branch: refs/heads/0.12-dev
Commit: e8ab26991893f1dc0c212176737fdda434466491
Parents: 40f600e
Author: MrRaindrop <te...@gmail.com>
Authored: Thu Apr 6 18:45:08 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Thu Apr 6 18:45:08 2017 +0800
----------------------------------------------------------------------
NOTICE | 6 ++++--
html5/render/vue/core/style.js | 7 +++++--
package.json | 2 +-
packages/weex-vue-render/package.json | 2 +-
4 files changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e8ab2699/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index c4d3e93..147a854 100644
--- a/NOTICE
+++ b/NOTICE
@@ -12,5 +12,7 @@ by Denis Pushkarev , licensed under the MIT License.
This product contains software vuejs(https://github.com/vuejs/vue) developed
by Yuxi Evan You , licensed under the MIT License.
-This product contains software (https://github.com/component/scroll-to) developed
-by TooTallNate , licensed under the MIT License.
\ No newline at end of file
+This product contains software scroll-to (https://github.com/component/scroll-to) developed
+by TooTallNate , licensed under the MIT License.
+
+This product contains software inline-style-prefixer (https://github.com/rofrischmann/inline-style-prefixer) developed by rofrischmann , licensed under the MIT License.
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e8ab2699/html5/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/style.js b/html5/render/vue/core/style.js
index 45a4103..09357cf 100644
--- a/html5/render/vue/core/style.js
+++ b/html5/render/vue/core/style.js
@@ -16,6 +16,7 @@ export function getHeadStyleMap () {
if (process.env.NODE_ENV === 'development') {
tagBegin('getHeadStyleMap')
}
+ const needToRemoveStyleSheetNodes = []
const res = Array.from(document.styleSheets || [])
.reduce((pre, styleSheet) => {
// why not using styleSheet.rules || styleSheet.cssRules to get css rules ?
@@ -73,10 +74,12 @@ export function getHeadStyleMap () {
* should only be fetched and used from styleMap to generate the final combined
* component style, not from the stylesheet itself.
*/
- const node = styleSheet.ownerNode
- node.parentNode.removeChild(node)
+ needToRemoveStyleSheetNodes.push(styleSheet.ownerNode)
return pre
}, {})
+ needToRemoveStyleSheetNodes.forEach(function (node) {
+ node.parentNode.removeChild(node)
+ })
if (process.env.NODE_ENV === 'development') {
tagEnd('getHeadStyleMap')
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e8ab2699/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 69aecaf..d5736c7 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"subversion": {
"browser": "0.5.0",
"framework": "0.19.17",
- "vue-render": "0.11.3",
+ "vue-render": "0.11.4",
"transformer": ">=0.1.5 <0.5"
},
"description": "A framework for building Mobile cross-platform UI",
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e8ab2699/packages/weex-vue-render/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-render/package.json b/packages/weex-vue-render/package.json
index 48f8d95..81ddff0 100644
--- a/packages/weex-vue-render/package.json
+++ b/packages/weex-vue-render/package.json
@@ -1,6 +1,6 @@
{
"name": "weex-vue-render",
- "version": "0.11.3",
+ "version": "0.11.4",
"description": "Weex built-in components for Vue 2.x.",
"license": "Apache-2.0",
"main": "src/render/vue/index.js",
[18/23] incubator-weex git commit: Merge branch '0.11-dev' of
https://github.com/MrRaindrop/incubator-weex into 0.11-dev
Posted by so...@apache.org.
Merge branch '0.11-dev' of https://github.com/MrRaindrop/incubator-weex into 0.11-dev
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/bbb120d8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/bbb120d8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/bbb120d8
Branch: refs/heads/0.12-dev
Commit: bbb120d83a795e0f22735bc38b9d59152ae0bd35
Parents: 8174a3f d442601
Author: matianyi <za...@zaoxian.local>
Authored: Wed Apr 12 16:27:07 2017 +0800
Committer: matianyi <za...@zaoxian.local>
Committed: Wed Apr 12 16:27:07 2017 +0800
----------------------------------------------------------------------
.eslintignore | 1 +
.gitignore | 2 +-
NOTICE | 8 +-
build/karma.vue.conf.js | 7 +-
build/webpack.examples.web.config.js | 31 +-
build/webpack.test.web.config.js | 81 +++
examples/vue/showcase/itemlist.vue | 11 +-
examples/vue/style/index.vue | 2 +-
.../npm/karma-rollup-preprocessor_vx.x.x.js | 53 ++
flow-typed/npm/karma-sinon-chai_vx.x.x.js | 38 ++
html5/render/vue/README.md | 24 +-
html5/render/vue/components/a.js | 17 +-
html5/render/vue/components/div.js | 17 +-
html5/render/vue/components/image.js | 25 +-
html5/render/vue/components/input.js | 18 +-
.../render/vue/components/scrollable/header.js | 6 +-
.../vue/components/scrollable/list/cell.js | 6 +-
.../vue/components/scrollable/list/index.js | 6 +-
.../vue/components/scrollable/list/style.js | 16 +
.../components/scrollable/loading-indicator.js | 43 +-
.../render/vue/components/scrollable/loading.js | 6 +-
.../render/vue/components/scrollable/refresh.js | 6 +-
.../vue/components/scrollable/scroller.js | 8 +-
html5/render/vue/components/slider/index.js | 36 +-
html5/render/vue/components/slider/indicator.js | 58 +-
html5/render/vue/components/switch.js | 66 ++-
html5/render/vue/components/text.js | 27 +-
html5/render/vue/components/textarea.js | 19 +-
html5/render/vue/components/video.js | 6 +-
html5/render/vue/components/web.js | 19 +-
html5/render/vue/core/index.js | 2 +
html5/render/vue/core/node.js | 28 +
html5/render/vue/core/style.js | 212 ++++++++
html5/render/vue/env/global.js | 11 +
html5/render/vue/env/index.js | 11 +-
html5/render/vue/env/viewport.js | 162 ++++--
html5/render/vue/env/weex.js | 9 +-
html5/render/vue/env/wx-env.js | 80 +--
html5/render/vue/index.js | 13 +-
html5/render/vue/mixins/base.js | 43 --
html5/render/vue/mixins/style.js | 142 +----
html5/render/vue/modules/animation.js | 7 +-
html5/render/vue/modules/dom.js | 5 +-
html5/render/vue/modules/index.js | 2 +-
html5/render/vue/modules/modal/index.js | 10 +-
html5/render/vue/modules/modal/style.js | 146 ++++++
html5/render/vue/styles/base.css | 194 +++++++
html5/render/vue/styles/components.css | 513 ------------------
html5/render/vue/utils/index.js | 36 +-
html5/render/vue/utils/style.js | 110 ++++
html5/test/render/vue/components/image.js | 4 +-
html5/test/render/vue/components/switch.js | 4 -
html5/test/render/vue/components/text.js | 4 -
html5/test/render/vue/components/web.js | 4 -
html5/test/render/vue/core/scope-style-map.js | 76 +++
html5/test/render/vue/core/style.js | 65 +++
.../vue/data/build/dotvue/scoped-style.js | 525 +++++++++++++++++++
html5/test/render/vue/data/css/head1.css | 38 ++
html5/test/render/vue/data/css/head10.css | 14 +
html5/test/render/vue/data/css/head11.css | 2 +
html5/test/render/vue/data/css/head12.css | 2 +
html5/test/render/vue/data/css/head13.css | 25 +
html5/test/render/vue/data/css/head2.css | 11 +
html5/test/render/vue/data/css/head3.css | 25 +
html5/test/render/vue/data/css/head4.css | 56 ++
html5/test/render/vue/data/css/head5.css | 153 ++++++
html5/test/render/vue/data/css/head6.css | 4 +
html5/test/render/vue/data/css/head7.css | 61 +++
html5/test/render/vue/data/css/head8.css | 507 ++++++++++++++++++
html5/test/render/vue/data/css/head9.css | 173 ++++++
.../render/vue/data/dotvue/scoped-style.vue | 13 +
html5/test/render/vue/data/head-css.js | 13 +
html5/test/render/vue/data/head-map.js | 275 ++++++++++
html5/test/render/vue/helper.js | 140 -----
html5/test/render/vue/helper/env.js | 20 +
html5/test/render/vue/helper/index.js | 73 +++
html5/test/render/vue/helper/runtime.js | 74 +++
html5/test/render/vue/helper/utils.js | 8 +
html5/test/render/vue/utils.js | 47 --
html5/test/render/vue/utils/func.js | 49 ++
html5/test/render/vue/utils/style.js | 68 +++
package.json | 4 +-
packages/weex-vue-render/README.md | 24 +-
packages/weex-vue-render/package.json | 2 +-
84 files changed, 3818 insertions(+), 1144 deletions(-)
----------------------------------------------------------------------
[05/23] incubator-weex git commit: * [html5] use single run for karma
test.
Posted by so...@apache.org.
* [html5] use single run for karma test.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/747b70c8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/747b70c8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/747b70c8
Branch: refs/heads/0.12-dev
Commit: 747b70c8d41688910fab78cb91c4f1aaba50f3b2
Parents: 501cde2
Author: MrRaindrop <te...@gmail.com>
Authored: Thu Apr 6 15:47:48 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Thu Apr 6 15:47:48 2017 +0800
----------------------------------------------------------------------
build/karma.vue.conf.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/747b70c8/build/karma.vue.conf.js
----------------------------------------------------------------------
diff --git a/build/karma.vue.conf.js b/build/karma.vue.conf.js
index c78b10a..e404212 100644
--- a/build/karma.vue.conf.js
+++ b/build/karma.vue.conf.js
@@ -55,8 +55,8 @@ module.exports = function (config) {
'../html5/test/render/vue/data/**/*.js'
],
- singleRun: false,
- // singleRun: true,
+ // singleRun: false,
+ singleRun: true,
reporters: ['mocha', 'coverage'],
coverageReporter: {
[10/23] incubator-weex git commit: Merge branch '0.11-dev' into
dev-web-scale
Posted by so...@apache.org.
Merge branch '0.11-dev' into dev-web-scale
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/e49dad6b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/e49dad6b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/e49dad6b
Branch: refs/heads/0.12-dev
Commit: e49dad6b6b2511bddc86efd6390d252919e8f898
Parents: 501c85f 9afe27b
Author: MrRaindrop <te...@gmail.com>
Authored: Sun Apr 9 17:58:20 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Sun Apr 9 17:58:20 2017 +0800
----------------------------------------------------------------------
.../com/taobao/weex/ui/component/WXImage.java | 6 +++
examples/vue/components/sliderinfinite.vue | 46 ++++++++++++++++++++
html5/render/vue/components/slider/index.js | 6 ++-
.../render/vue/components/slider/slideMixin.js | 24 +++++++++-
html5/render/vue/modules/dom.js | 4 ++
package.json | 1 +
vue.html | 11 +++--
7 files changed, 89 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e49dad6b/html5/render/vue/components/slider/index.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e49dad6b/html5/render/vue/modules/dom.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e49dad6b/package.json
----------------------------------------------------------------------
[06/23] incubator-weex git commit: * [html5] update
Posted by so...@apache.org.
* [html5] update
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/b7b81f3e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/b7b81f3e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/b7b81f3e
Branch: refs/heads/0.12-dev
Commit: b7b81f3e52822036f64ca6b27c6b0bbc0c64925f
Parents: 747b70c
Author: MrRaindrop <te...@gmail.com>
Authored: Thu Apr 6 15:50:15 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Thu Apr 6 15:50:15 2017 +0800
----------------------------------------------------------------------
vue.html | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b7b81f3e/vue.html
----------------------------------------------------------------------
diff --git a/vue.html b/vue.html
index 5e931dd..c33af50 100644
--- a/vue.html
+++ b/vue.html
@@ -45,13 +45,13 @@
}
</style>
- <!-- <script src="./node_modules/vue/dist/vue.runtime.min.js"></script> -->
+ <script src="./node_modules/vue/dist/vue.runtime.min.js"></script>
<!-- <script src="./node_modules/vue/dist/vue.runtime.js"></script> -->
- <script src="dist/vue.runtime.js"></script>
+ <!-- <script src="dist/vue.runtime.js"></script> -->
<!-- <script src="./node_modules/weex-vue-render/index.min.js"></script> -->
- <script src="./packages/weex-vue-render/dist/index.js"></script>
+ <!-- <script src="./packages/weex-vue-render/dist/index.js"></script> -->
<!-- <script src="//unpkg.com/weex-vue-render@0.11.2/dist/index.js"></script> -->
- <!-- <script src="./packages/weex-vue-render/dist/index.min.js"></script> -->
+ <script src="./packages/weex-vue-render/dist/index.min.js"></script>
</head>
<body>
<div id="root"></div>
[14/23] incubator-weex git commit: * [html5] format NOTE.
Posted by so...@apache.org.
* [html5] format NOTE.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/9bf25f49
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/9bf25f49
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/9bf25f49
Branch: refs/heads/0.12-dev
Commit: 9bf25f4901667b3af40fe2c9ae8cb5663bead3ae
Parents: 8170283
Author: MrRaindrop <te...@gmail.com>
Authored: Mon Apr 10 17:01:59 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Mon Apr 10 17:01:59 2017 +0800
----------------------------------------------------------------------
NOTICE | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9bf25f49/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index 147a854..c76972a 100644
--- a/NOTICE
+++ b/NOTICE
@@ -15,4 +15,6 @@ by Yuxi Evan You , licensed under the MIT License.
This product contains software scroll-to (https://github.com/component/scroll-to) developed
by TooTallNate , licensed under the MIT License.
-This product contains software inline-style-prefixer (https://github.com/rofrischmann/inline-style-prefixer) developed by rofrischmann , licensed under the MIT License.
+This product contains software inline-style-prefixer
+(https://github.com/rofrischmann/inline-style-prefixer) developed by
+rofrischmann , licensed under the MIT License.
[16/23] incubator-weex git commit: * [html5] fix vue example slider.
Posted by so...@apache.org.
* [html5] fix vue example slider.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/d442601b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/d442601b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/d442601b
Branch: refs/heads/0.12-dev
Commit: d442601b8f5935df9d128aa330df3d032a09175f
Parents: 66e69b3
Author: MrRaindrop <te...@gmail.com>
Authored: Tue Apr 11 12:29:24 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Tue Apr 11 12:29:24 2017 +0800
----------------------------------------------------------------------
examples/vue/components/slider.vue | 1 -
1 file changed, 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d442601b/examples/vue/components/slider.vue
----------------------------------------------------------------------
diff --git a/examples/vue/components/slider.vue b/examples/vue/components/slider.vue
index fac0d26..5985b68 100644
--- a/examples/vue/components/slider.vue
+++ b/examples/vue/components/slider.vue
@@ -18,7 +18,6 @@
</slider>
</panel>
</panel>
- <panel style="height:1000px;"></panel>
<panel :title="'Event, ' + eventCnt + ' change'" type="primary">
<slider class="slider" append="tree"
:interval="sliders[0].interval"
[13/23] incubator-weex git commit: * [html5] fix hello.vue
Posted by so...@apache.org.
* [html5] fix hello.vue
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/8170283e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/8170283e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/8170283e
Branch: refs/heads/0.12-dev
Commit: 8170283e78f85b4969a71518418a4220276f1005
Parents: 8e6d31d
Author: MrRaindrop <te...@gmail.com>
Authored: Mon Apr 10 16:43:05 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Mon Apr 10 16:43:05 2017 +0800
----------------------------------------------------------------------
examples/vue/hello.vue | 20 +-------------------
1 file changed, 1 insertion(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8170283e/examples/vue/hello.vue
----------------------------------------------------------------------
diff --git a/examples/vue/hello.vue b/examples/vue/hello.vue
index 0004900..462ccd9 100644
--- a/examples/vue/hello.vue
+++ b/examples/vue/hello.vue
@@ -1,23 +1,5 @@
<template>
<div>
- <div ref="foo" :style="{height: '200px'}" class="ct"></div>
+ <text style="font-size: 100px;">Hello World.</text>
</div>
</template>
-
-<style scoped>
-.ct {
- width: 200px;
- flex: 1;
- flex-direction: row;
- transform: translate3d(100px, 100px, 0);
- background-color: red;
-}
-</style>
-
-<script>
- module.exports = {
- mounted () {
- console.log(this.$refs.foo.$el)
- }
- }
-</script>
[03/23] incubator-weex git commit: * [html5] change viewport adapter,
add unit tests for new adapting methods.
Posted by so...@apache.org.
* [html5] change viewport adapter, add unit tests for new adapting methods.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/38f1a971
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/38f1a971
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/38f1a971
Branch: refs/heads/0.12-dev
Commit: 38f1a971def5fcc0d471be36777f4719a6019dd1
Parents: 8309bf6
Author: MrRaindrop <te...@gmail.com>
Authored: Thu Apr 6 15:36:08 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Thu Apr 6 15:36:08 2017 +0800
----------------------------------------------------------------------
.gitignore | 2 +-
build/karma.vue.conf.js | 11 +-
build/webpack.examples.web.config.js | 31 +-
build/webpack.test.web.config.js | 81 +++
examples/vue/components/slider.vue | 1 +
examples/vue/hello.vue | 20 +-
examples/vue/showcase/itemlist.vue | 11 +-
examples/vue/style/index.vue | 2 +-
.../npm/karma-rollup-preprocessor_vx.x.x.js | 53 ++
flow-typed/npm/karma-sinon-chai_vx.x.x.js | 38 ++
html5/render/vue/components/a.js | 13 +-
html5/render/vue/components/div.js | 4 +-
html5/render/vue/components/image.js | 13 +-
html5/render/vue/components/input.js | 4 +-
.../render/vue/components/scrollable/header.js | 4 +-
.../vue/components/scrollable/list/cell.js | 4 +-
.../vue/components/scrollable/list/index.js | 4 +-
.../components/scrollable/loading-indicator.js | 5 +-
.../render/vue/components/scrollable/loading.js | 6 +-
.../render/vue/components/scrollable/refresh.js | 6 +-
.../vue/components/scrollable/scroller.js | 6 +-
html5/render/vue/components/slider/index.js | 4 +-
html5/render/vue/components/slider/indicator.js | 26 +-
html5/render/vue/components/switch.js | 6 +-
html5/render/vue/components/text.js | 10 +-
html5/render/vue/components/textarea.js | 4 +-
html5/render/vue/components/video.js | 4 +-
html5/render/vue/components/web.js | 4 +-
html5/render/vue/core/index.js | 1 +
html5/render/vue/core/style.js | 186 +++++++
html5/render/vue/env/index.js | 4 +-
html5/render/vue/env/viewport.js | 162 ++++--
html5/render/vue/env/weex.js | 2 +-
html5/render/vue/env/wx-env.js | 80 +--
html5/render/vue/mixins/base.js | 13 -
html5/render/vue/mixins/style.js | 14 +
html5/render/vue/styles/base.css | 513 ++++++++++++++++++
html5/render/vue/styles/components.css | 513 ------------------
html5/render/vue/utils/style.js | 110 ++++
html5/test/render/vue/components/image.js | 4 +-
html5/test/render/vue/core/scope-style-map.js | 16 +
html5/test/render/vue/core/style.js | 59 +++
.../vue/data/build/dotvue/scoped-style.js | 525 +++++++++++++++++++
html5/test/render/vue/data/css/head1.css | 38 ++
html5/test/render/vue/data/css/head10.css | 14 +
html5/test/render/vue/data/css/head11.css | 2 +
html5/test/render/vue/data/css/head12.css | 2 +
html5/test/render/vue/data/css/head2.css | 11 +
html5/test/render/vue/data/css/head3.css | 25 +
html5/test/render/vue/data/css/head4.css | 56 ++
html5/test/render/vue/data/css/head5.css | 153 ++++++
html5/test/render/vue/data/css/head6.css | 4 +
html5/test/render/vue/data/css/head7.css | 61 +++
html5/test/render/vue/data/css/head8.css | 507 ++++++++++++++++++
html5/test/render/vue/data/css/head9.css | 173 ++++++
.../render/vue/data/dotvue/scoped-style.vue | 13 +
html5/test/render/vue/data/head-css.js | 12 +
html5/test/render/vue/data/head-map.js | 247 +++++++++
html5/test/render/vue/helper.js | 140 -----
html5/test/render/vue/helper/env.js | 20 +
html5/test/render/vue/helper/index.js | 113 ++++
html5/test/render/vue/helper/runtime.js | 80 +++
html5/test/render/vue/helper/utils.js | 8 +
html5/test/render/vue/utils.js | 47 --
html5/test/render/vue/utils/func.js | 50 ++
html5/test/render/vue/utils/style.js | 68 +++
package.json | 2 +-
vue.html | 9 +-
68 files changed, 3572 insertions(+), 862 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index dc96cc2..50e9ce3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,7 @@
# Created by Builder
examples/build
-examples/web-entry
+web-entry
test/build
weex_tmp
coverage
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/build/karma.vue.conf.js
----------------------------------------------------------------------
diff --git a/build/karma.vue.conf.js b/build/karma.vue.conf.js
index 50c22fd..c78b10a 100644
--- a/build/karma.vue.conf.js
+++ b/build/karma.vue.conf.js
@@ -44,16 +44,19 @@ module.exports = function (config) {
frameworks: ['mocha', 'sinon-chai'],
browsers: ['PhantomJS'],
files: [
+ // '../html5/test/render/vue/components/*.js'
'../html5/test/render/vue/**/*.js'
],
exclude: [
'../html5/test/render/vue/helper.js',
- '../html5/test/render/vue/vender/**/*.js'
+ '../html5/test/render/vue/helper/*.js',
+ '../html5/test/render/vue/vender/**/*.js',
+ '../html5/test/render/vue/data/**/*.js'
],
- // singleRun: false,
- singleRun: true,
+ singleRun: false,
+ // singleRun: true,
reporters: ['mocha', 'coverage'],
coverageReporter: {
@@ -65,7 +68,7 @@ module.exports = function (config) {
preprocessors: {
'../html5/test/**/*.js': ['rollup'],
- '../html5/test/**/!(components|examples)/*.js': ['rollup', 'coverage']
+ '../html5/test/**/!(components|examples|core)/*.js': ['rollup', 'coverage']
},
rollupPreprocessor: rollupConfig,
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/build/webpack.examples.web.config.js
----------------------------------------------------------------------
diff --git a/build/webpack.examples.web.config.js b/build/webpack.examples.web.config.js
index 5aa04c7..fdf2f6f 100644
--- a/build/webpack.examples.web.config.js
+++ b/build/webpack.examples.web.config.js
@@ -48,7 +48,6 @@ var bannerPlugin = new webpack.BannerPlugin(banner, {
exclude: bannerExcludeFiles
})
-
module.exports = {
entry: entry,
output: {
@@ -67,20 +66,20 @@ module.exports = {
}
]
},
- vue: {
- /**
- * important! should use postTransformNode to add $processStyle for
- * inline style prefixing.
- */
- compilerModules: [
- {
- postTransformNode: el => {
- el.staticStyle = `$processStyle(${el.staticStyle})`
- el.styleBinding = `$processStyle(${el.styleBinding})`
- }
- }
- ],
- postcss: [require('autoprefixer')()]
- },
+ // vue: {
+ // /**
+ // * important! should use postTransformNode to add $processStyle for
+ // * inline style prefixing.
+ // */
+ // compilerModules: [
+ // {
+ // postTransformNode: el => {
+ // el.staticStyle = `$processStyle(${el.staticStyle})`
+ // el.styleBinding = `$processStyle(${el.styleBinding})`
+ // }
+ // }
+ // ],
+ // postcss: [require('autoprefixer')()]
+ // },
plugins: [bannerPlugin]
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/build/webpack.test.web.config.js
----------------------------------------------------------------------
diff --git a/build/webpack.test.web.config.js b/build/webpack.test.web.config.js
new file mode 100644
index 0000000..6b55480
--- /dev/null
+++ b/build/webpack.test.web.config.js
@@ -0,0 +1,81 @@
+var path = require('path');
+var fs = require('fs-extra');
+var webpack = require('webpack');
+
+var entry = {};
+// var bannerExcludeFiles = [];
+var webSrcDirectory = path.join(__dirname, '../html5/test/render/vue/data/dotvue');
+
+// function getEntryFileContent (entryPath, vueFilePath) {
+// const relativePath = path.relative(path.join(entryPath, '../'), vueFilePath);
+// return 'var App = require(\'' + relativePath + '\')\n'
+// + 'App.el = \'#root\'\n'
+// + 'new Vue(App)\n'
+// }
+
+function walk(dir) {
+ dir = dir || '.';
+ var directory = path.join(__dirname, '../html5/test/render/vue/data', dir);
+ var entryDirectory = path.join(webSrcDirectory, dir);
+ fs.readdirSync(directory)
+ .forEach(function(file) {
+ var fullpath = path.join(directory, file);
+ var stat = fs.statSync(fullpath);
+ var extname = path.extname(fullpath);
+ if (stat.isFile() && extname === '.vue') {
+ // var entryFile = path.join(entryDirectory, path.basename(file, extname) + '.js');
+ // fs.outputFileSync(entryFile, getEntryFileContent(entryFile, fullpath));
+ var name = path.join('html5/test/render/vue/data', 'build', dir, path.basename(file, extname));
+ entry[name] = fullpath
+ } else if (stat.isDirectory() && file !== 'build' && file !== 'include') {
+ var subdir = path.join(dir, file);
+ walk(subdir);
+ }
+ });
+}
+
+walk();
+
+// var banner = '// NOTE: for vue2.0 and platform:web only.\n'
+// var bannerPlugin = new webpack.BannerPlugin({
+// banner,
+// raw: true,
+// exclude: bannerExcludeFiles
+// })
+
+module.exports = {
+ entry: entry,
+ output: {
+ path: path.resolve(__dirname, '../'),
+ libraryTarget: 'umd',
+ filename: '[name].js'
+ },
+ module: {
+ loaders: [
+ {
+ test: /\.js$/,
+ loaders: ['babel-loader'],
+ exclude: /node_modules/
+ }, {
+ test: /\.vue(\?[^?]+)?$/,
+ loaders: ['vue-loader']
+ }
+ ]
+ },
+ // vue: {
+ /**
+ * important! should use postTransformNode to add $processStyle for
+ * inline style prefixing.
+ */
+ // compilerModules: [
+ // {
+ // postTransformNode: el => {
+ // el.staticStyle = `$processStyle(${el.staticStyle})`
+ // el.styleBinding = `$processStyle(${el.styleBinding})`
+ // }
+ // }
+ // ],
+ // postcss: [require('autoprefixer')()]
+ // }
+ // plugins: [bannerPlugin]
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/examples/vue/components/slider.vue
----------------------------------------------------------------------
diff --git a/examples/vue/components/slider.vue b/examples/vue/components/slider.vue
index 5985b68..fac0d26 100644
--- a/examples/vue/components/slider.vue
+++ b/examples/vue/components/slider.vue
@@ -18,6 +18,7 @@
</slider>
</panel>
</panel>
+ <panel style="height:1000px;"></panel>
<panel :title="'Event, ' + eventCnt + ' change'" type="primary">
<slider class="slider" append="tree"
:interval="sliders[0].interval"
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/examples/vue/hello.vue
----------------------------------------------------------------------
diff --git a/examples/vue/hello.vue b/examples/vue/hello.vue
index 462ccd9..0004900 100644
--- a/examples/vue/hello.vue
+++ b/examples/vue/hello.vue
@@ -1,5 +1,23 @@
<template>
<div>
- <text style="font-size: 100px;">Hello World.</text>
+ <div ref="foo" :style="{height: '200px'}" class="ct"></div>
</div>
</template>
+
+<style scoped>
+.ct {
+ width: 200px;
+ flex: 1;
+ flex-direction: row;
+ transform: translate3d(100px, 100px, 0);
+ background-color: red;
+}
+</style>
+
+<script>
+ module.exports = {
+ mounted () {
+ console.log(this.$refs.foo.$el)
+ }
+ }
+</script>
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/examples/vue/showcase/itemlist.vue
----------------------------------------------------------------------
diff --git a/examples/vue/showcase/itemlist.vue b/examples/vue/showcase/itemlist.vue
index eced86e..02fb33a 100644
--- a/examples/vue/showcase/itemlist.vue
+++ b/examples/vue/showcase/itemlist.vue
@@ -1,11 +1,11 @@
<template>
<list class="list" @loadmore="loadmore" loadmoreoffset=2000>
- <cell class="cell" v-for="(item,i) in shopList" :key="i" :scope="item.scopeValue" @click="oncellclick(item.id)">
+ <cell class="cell" v-for="item in shopList" :scope="item.scopeValue" @click="oncellclick(item.id)">
<div class="shopDiv">
<div class="shopHeader" style="flex-direction:row;">
<div style="flex:2;flex-direction:row;">
<div>
- <image style="width:60px;height:60px;" :src="item.PersonPhoto"></image>
+ <image class="test" :src="item.PersonPhoto"></image>
</div>
<div style="flex-direction:column;margin-left:5px;">
<div style="margin-top:5px;">
@@ -78,7 +78,7 @@
<text class="shopDesc" style="font-size:25px;">{{item.shopDesc}}</text>
</div>
<div style="flex-direction:row;">
- <div class="imgDiv" style="flex:1;flex-direction:column;margin:10px;" v-for="img in item.shopImgList">
+ <div class="imgDiv" style="flex:1;height:300px;flex-direction:column;margin:10px;" v-for="img in item.shopImgList">
<div>
<image class="shopImg" :style="{ width: img.shopImgWidth, height: img.shopImgHeight }" :src="img.shopImg"></image>
</div>
@@ -180,6 +180,11 @@
width: 750px;
}
+ .test {
+ width:60px;
+ height:60px;
+ }
+
.shopDiv {
flex-direction: column;
background-color: #ffffff;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/examples/vue/style/index.vue
----------------------------------------------------------------------
diff --git a/examples/vue/style/index.vue b/examples/vue/style/index.vue
index 99ce7bc..abee8e7 100644
--- a/examples/vue/style/index.vue
+++ b/examples/vue/style/index.vue
@@ -1,5 +1,5 @@
<template>
- <scroller>
+ <scroller style="overflow-x:hidden;">
<style-box></style-box>
<style-flex></style-flex>
<panel title="opacity" type="primary">
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/flow-typed/npm/karma-rollup-preprocessor_vx.x.x.js
----------------------------------------------------------------------
diff --git a/flow-typed/npm/karma-rollup-preprocessor_vx.x.x.js b/flow-typed/npm/karma-rollup-preprocessor_vx.x.x.js
new file mode 100644
index 0000000..3dc7ce2
--- /dev/null
+++ b/flow-typed/npm/karma-rollup-preprocessor_vx.x.x.js
@@ -0,0 +1,53 @@
+// flow-typed signature: 9b5b1885bf45d4adf8ce0d3ca9ab51b1
+// flow-typed version: <<STUB>>/karma-rollup-preprocessor_v^3.0.3/flow_v0.42.0
+
+/**
+ * This is an autogenerated libdef stub for:
+ *
+ * 'karma-rollup-preprocessor'
+ *
+ * Fill this stub out by replacing all the `any` types.
+ *
+ * Once filled out, we encourage you to share your work with the
+ * community by sending a pull request to:
+ * https://github.com/flowtype/flow-typed
+ */
+
+declare module 'karma-rollup-preprocessor' {
+ declare module.exports: any;
+}
+
+/**
+ * We include stubs for each file inside this npm package in case you need to
+ * require those files directly. Feel free to delete any files that aren't
+ * needed.
+ */
+declare module 'karma-rollup-preprocessor/karma.conf' {
+ declare module.exports: any;
+}
+
+declare module 'karma-rollup-preprocessor/lib/index' {
+ declare module.exports: any;
+}
+
+declare module 'karma-rollup-preprocessor/test/helper' {
+ declare module.exports: any;
+}
+
+declare module 'karma-rollup-preprocessor/test/main' {
+ declare module.exports: any;
+}
+
+// Filename aliases
+declare module 'karma-rollup-preprocessor/karma.conf.js' {
+ declare module.exports: $Exports<'karma-rollup-preprocessor/karma.conf'>;
+}
+declare module 'karma-rollup-preprocessor/lib/index.js' {
+ declare module.exports: $Exports<'karma-rollup-preprocessor/lib/index'>;
+}
+declare module 'karma-rollup-preprocessor/test/helper.js' {
+ declare module.exports: $Exports<'karma-rollup-preprocessor/test/helper'>;
+}
+declare module 'karma-rollup-preprocessor/test/main.js' {
+ declare module.exports: $Exports<'karma-rollup-preprocessor/test/main'>;
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/flow-typed/npm/karma-sinon-chai_vx.x.x.js
----------------------------------------------------------------------
diff --git a/flow-typed/npm/karma-sinon-chai_vx.x.x.js b/flow-typed/npm/karma-sinon-chai_vx.x.x.js
new file mode 100644
index 0000000..9c0219e
--- /dev/null
+++ b/flow-typed/npm/karma-sinon-chai_vx.x.x.js
@@ -0,0 +1,38 @@
+// flow-typed signature: 0953d9baac8251cc38f40d1011955980
+// flow-typed version: <<STUB>>/karma-sinon-chai_v^1.2.4/flow_v0.42.0
+
+/**
+ * This is an autogenerated libdef stub for:
+ *
+ * 'karma-sinon-chai'
+ *
+ * Fill this stub out by replacing all the `any` types.
+ *
+ * Once filled out, we encourage you to share your work with the
+ * community by sending a pull request to:
+ * https://github.com/flowtype/flow-typed
+ */
+
+declare module 'karma-sinon-chai' {
+ declare module.exports: any;
+}
+
+/**
+ * We include stubs for each file inside this npm package in case you need to
+ * require those files directly. Feel free to delete any files that aren't
+ * needed.
+ */
+declare module 'karma-sinon-chai/chai-adapter' {
+ declare module.exports: any;
+}
+
+// Filename aliases
+declare module 'karma-sinon-chai/chai-adapter.js' {
+ declare module.exports: $Exports<'karma-sinon-chai/chai-adapter'>;
+}
+declare module 'karma-sinon-chai/index' {
+ declare module.exports: $Exports<'karma-sinon-chai'>;
+}
+declare module 'karma-sinon-chai/index.js' {
+ declare module.exports: $Exports<'karma-sinon-chai'>;
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/a.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/a.js b/html5/render/vue/components/a.js
index aa973fd..f0a28e5 100644
--- a/html5/render/vue/components/a.js
+++ b/html5/render/vue/components/a.js
@@ -1,5 +1,12 @@
+import { extractComponentStyle } from '../core'
// import { validateStyles } from '../validator'
+const defaultStyle = `
+.weex-a {
+ text-decoration: none;
+}
+`
+
export default {
name: 'weex-a',
props: {
@@ -16,7 +23,9 @@ export default {
href: this.href
},
on: this._createEventMap(),
- staticClass: 'weex-a weex-ct'
+ staticClass: 'weex-a weex-ct',
+ staticStyle: extractComponentStyle(this)
}, this._trimTextNodeChildren(this.$slots.default))
- }
+ },
+ _d_style: defaultStyle
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/div.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/div.js b/html5/render/vue/components/div.js
index 033ba9d..fd8ed3c 100644
--- a/html5/render/vue/components/div.js
+++ b/html5/render/vue/components/div.js
@@ -1,4 +1,5 @@
// import { validateStyles } from '../validator'
+import { extractComponentStyle } from '../core'
export default {
name: 'weex-div',
@@ -10,7 +11,8 @@ export default {
return createElement('html:div', {
attrs: { 'weex-type': 'div' },
on: this._createEventMap(),
- staticClass: 'weex-div weex-ct'
+ staticClass: 'weex-div weex-ct',
+ staticStyle: extractComponentStyle(this)
}, this._trimTextNodeChildren(this.$slots.default))
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/image.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/image.js b/html5/render/vue/components/image.js
index 5f4a786..f4980d6 100644
--- a/html5/render/vue/components/image.js
+++ b/html5/render/vue/components/image.js
@@ -1,8 +1,10 @@
+import { extractComponentStyle } from '../core/style'
+import { extend } from '../utils'
/**
* get resize (stetch|cover|contain) related styles.
*/
function getResizeStyle (context) {
- const stretch = '100%'
+ const stretch = '100% 100%'
const resize = context.resize || stretch
const bgSize = ['cover', 'contain', stretch].indexOf(resize) > -1 ? resize : stretch
// compatibility: http://caniuse.com/#search=background-size
@@ -49,16 +51,17 @@ export default {
// validateStyles('image', this.$vnode.data && this.$vnode.data.staticStyle)
// }
// const style = this._normalizeInlineStyles(this.$vnode.data)
- const wh = this._getSize(this.$vnode.data)
+ const resizeStyle = getResizeStyle(this)
+ const style = extractComponentStyle(this)
return createElement('figure', {
attrs: {
'weex-type': 'image',
- 'img-src': preProcessSrc(this, this.src, wh),
- 'img-placeholder': preProcessSrc(this, this.placeholder, wh)
+ 'img-src': preProcessSrc(this, this.src, style),
+ 'img-placeholder': preProcessSrc(this, this.placeholder, style)
},
on: this._createEventMap(['load', 'error']),
staticClass: 'weex-image weex-el',
- staticStyle: getResizeStyle(this)
+ staticStyle: extend(style, resizeStyle)
})
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/input.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/input.js b/html5/render/vue/components/input.js
index 22a600c..d65ce79 100644
--- a/html5/render/vue/components/input.js
+++ b/html5/render/vue/components/input.js
@@ -2,6 +2,7 @@
* @fileOverview Input component.
* Support v-model only if vue version is large than 2.2.0
*/
+import { extractComponentStyle } from '../core'
import { inputCommon } from '../mixins'
import { extend, mapFormEvents } from '../utils'
// import { validateStyles } from '../validator'
@@ -56,7 +57,8 @@ export default {
value: this.value
},
on: this.createKeyboardEvent(events),
- staticClass: 'weex-input weex-el'
+ staticClass: 'weex-input weex-el',
+ staticStyle: extractComponentStyle(this)
})
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/scrollable/header.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/header.js b/html5/render/vue/components/scrollable/header.js
index f8d206c..64ebd77 100644
--- a/html5/render/vue/components/scrollable/header.js
+++ b/html5/render/vue/components/scrollable/header.js
@@ -1,5 +1,6 @@
// import { validateStyles } from '../../validator'
import { supportSticky } from '../../utils/style'
+import { extractComponentStyle } from '../../core'
export default {
data () {
@@ -51,7 +52,8 @@ export default {
on: this._createEventMap(),
ref: 'header',
staticClass: 'weex-header weex-ct',
- class: { sticky: this.sticky, iossticky: this.supportSticky }
+ class: { sticky: this.sticky, iossticky: this.supportSticky },
+ staticStyle: extractComponentStyle(this)
}, this.$slots.default)
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/scrollable/list/cell.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/list/cell.js b/html5/render/vue/components/scrollable/list/cell.js
index 3650aec..32ec1f9 100644
--- a/html5/render/vue/components/scrollable/list/cell.js
+++ b/html5/render/vue/components/scrollable/list/cell.js
@@ -1,4 +1,5 @@
// import { validateStyles } from '../../../validator'
+import { extractComponentStyle } from '../../../core'
export default {
render (createElement) {
@@ -9,7 +10,8 @@ export default {
return createElement('section', {
attrs: { 'weex-type': 'cell' },
on: this._createEventMap(),
- staticClass: 'weex-cell weex-ct'
+ staticClass: 'weex-cell weex-ct',
+ staticStyle: extractComponentStyle(this)
}, this.$slots.default)
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/scrollable/list/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/list/index.js b/html5/render/vue/components/scrollable/list/index.js
index f48a6c8..2db5239 100644
--- a/html5/render/vue/components/scrollable/list/index.js
+++ b/html5/render/vue/components/scrollable/list/index.js
@@ -1,3 +1,4 @@
+import { extractComponentStyle } from '../../../core'
import { scrollable } from '../../../mixins'
// import { validateStyles } from '../../../validator'
import { extend } from '../../../utils'
@@ -61,7 +62,8 @@ export default {
touchstart: this.handleTouchStart,
touchmove: this.handleTouchMove,
touchend: this.handleTouchEnd
- })
+ }),
+ staticStyle: extractComponentStyle(this)
}, this.createChildren(createElement))
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/scrollable/loading-indicator.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/loading-indicator.js b/html5/render/vue/components/scrollable/loading-indicator.js
index 28ee909..e1f9854 100644
--- a/html5/render/vue/components/scrollable/loading-indicator.js
+++ b/html5/render/vue/components/scrollable/loading-indicator.js
@@ -1,9 +1,12 @@
+import { extractComponentStyle } from '../../core'
+
export default {
render (createElement) {
this.weexType = 'loading-indicator'
return createElement('mark', {
attrs: { 'weex-type': 'loading-indicator' },
- staticClass: 'weex-loading-indicator weex-ct'
+ staticClass: 'weex-loading-indicator weex-ct',
+ staticStyle: extractComponentStyle(this)
})
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/scrollable/loading.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/loading.js b/html5/render/vue/components/scrollable/loading.js
index ebf99d3..8f01fde 100644
--- a/html5/render/vue/components/scrollable/loading.js
+++ b/html5/render/vue/components/scrollable/loading.js
@@ -1,3 +1,4 @@
+import { extractComponentStyle } from '../../core'
import LoadingIndicator from './loading-indicator'
export default {
@@ -30,7 +31,7 @@ export default {
},
watch: {
height (val) {
- this.$el.style.height = val + 'px'
+ this.$el.style.height = val * weex.config.env.scale + 'px'
},
display (val) {
if (val === 'hide') {
@@ -75,7 +76,8 @@ export default {
return createElement('aside', {
ref: 'loading',
attrs: { 'weex-type': 'loading' },
- staticClass: 'weex-loading weex-ct'
+ staticClass: 'weex-loading weex-ct',
+ staticStyle: extractComponentStyle(this)
}, this.getChildren())
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/scrollable/refresh.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/refresh.js b/html5/render/vue/components/scrollable/refresh.js
index 884f2ee..1d941d4 100644
--- a/html5/render/vue/components/scrollable/refresh.js
+++ b/html5/render/vue/components/scrollable/refresh.js
@@ -1,3 +1,4 @@
+import { extractComponentStyle } from '../../core'
import LoadingIndicator from './loading-indicator'
import { createEvent } from '../../utils'
@@ -32,7 +33,7 @@ export default {
},
watch: {
height (val) {
- this.$el.style.height = val + 'px'
+ this.$el.style.height = val * weex.config.env.scale + 'px'
},
display (val) {
if (val === 'hide') {
@@ -83,7 +84,8 @@ export default {
return createElement('aside', {
ref: 'refresh',
attrs: { 'weex-type': 'refresh' },
- staticClass: 'weex-refresh weex-ct'
+ staticClass: 'weex-refresh weex-ct',
+ staticStyle: extractComponentStyle(this)
}, this.getChildren())
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/scrollable/scroller.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/scroller.js b/html5/render/vue/components/scrollable/scroller.js
index 1636270..ee117e2 100644
--- a/html5/render/vue/components/scrollable/scroller.js
+++ b/html5/render/vue/components/scrollable/scroller.js
@@ -1,3 +1,4 @@
+import { extractComponentStyle } from '../../core'
import { scrollable } from '../../mixins'
// import { validateStyles } from '../../validator'
import { extend } from '../../utils'
@@ -75,13 +76,14 @@ export default {
return createElement('main', {
ref: 'wrapper',
attrs: { 'weex-type': 'scroller' },
- staticClass: this.wrapperClass,
on: extend(this._createEventMap(), {
scroll: this.handleScroll,
touchstart: this.handleTouchStart,
touchmove: this.handleTouchMove,
touchend: this.handleTouchEnd
- })
+ }),
+ staticClass: this.wrapperClass,
+ staticStyle: extractComponentStyle(this)
}, this.createChildren(createElement))
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/slider/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/slider/index.js b/html5/render/vue/components/slider/index.js
index cb82b86..b2f4a90 100644
--- a/html5/render/vue/components/slider/index.js
+++ b/html5/render/vue/components/slider/index.js
@@ -1,4 +1,5 @@
// import { validateStyles } from '../../validator'
+import { extractComponentStyle } from '../../core'
import { throttle, bind, extend, fireLazyload } from '../../utils'
import indicator from './indicator'
import slideMixin from './slideMixin'
@@ -127,7 +128,8 @@ export default {
touchstart: this.handleTouchStart,
touchmove: throttle(bind(this.handleTouchMove, this), 25),
touchend: this.handleTouchEnd
- })
+ }),
+ staticStyle: extractComponentStyle(this)
},
[
createElement('ul', {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/slider/indicator.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/slider/indicator.js b/html5/render/vue/components/slider/indicator.js
index 65d3700..3340cfd 100644
--- a/html5/render/vue/components/slider/indicator.js
+++ b/html5/render/vue/components/slider/indicator.js
@@ -1,21 +1,23 @@
+import { extractComponentStyle } from '../../core'
import { extend, extendKeys } from '../../utils'
function getIndicatorItemStyle (spec, isActive) {
const style = {}
- style['background-color'] = spec[isActive ? 'item-selected-color' : 'item-color']
- style['width'] = style['height'] = spec['item-size']
+ style['background-color'] = spec[isActive ? 'itemSelectedColor' : 'itemColor']
+ style['width'] = style['height'] = spec['itemSize']
return style
}
function _render (context, h) {
const children = []
- const mergedStyle = context._getComponentStyle(context.$vnode.data)
- context.$vnode.data.cached = {}
- extendKeys(context.$vnode.data.cached, mergedStyle, ['width', 'height'])
+ const mergedStyle = extractComponentStyle(context)
+ // const mergedStyle = context._getComponentStyle(context.$vnode.data)
+ // context.$vnode.data.cached = {}
+ // extendKeys(context.$vnode.data.cached, mergedStyle, ['width', 'height'])
const indicatorSpecStyle = extendKeys(
{},
mergedStyle,
- ['item-color', 'item-selected-color', 'item-size']
+ ['itemColor', 'itemSelectedColor', 'itemSize']
)
for (let i = 0; i < Number(context.count); ++i) {
const classNames = ['weex-indicator-item weex-el']
@@ -29,11 +31,9 @@ function _render (context, h) {
staticStyle: getIndicatorItemStyle(indicatorSpecStyle, isActive)
}))
}
- if (!context.$vnode.context._isMounted) {
- context.$nextTick(function () {
- _reLayout(this, _getVirtualRect(this, mergedStyle), _getLtbr(this, mergedStyle))
- })
- }
+ context.$nextTick(function () {
+ _reLayout(this, _getVirtualRect(this, mergedStyle), _getLtbr(this, mergedStyle))
+ })
return h('nav', {
attrs: { 'weex-type': 'indicator' },
staticClass: 'weex-indicator weex-ct',
@@ -117,10 +117,6 @@ export default {
count: [Number, String],
active: [Number, String]
},
- updated () {
- const mergedStyle = this._getComponentStyle(this.$vnode.data)
- _reLayout(this, _getVirtualRect(this, mergedStyle), _getLtbr(this, mergedStyle))
- },
render (createElement) {
return _render(this, createElement)
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/switch.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/switch.js b/html5/render/vue/components/switch.js
index 63ff8f9..b04bf90 100644
--- a/html5/render/vue/components/switch.js
+++ b/html5/render/vue/components/switch.js
@@ -1,4 +1,5 @@
// import { validateStyles } from '../validator'
+import { extractComponentStyle } from '../core'
export default {
props: {
@@ -42,13 +43,14 @@ export default {
// }
return createElement('span', {
attrs: { 'weex-type': 'switch' },
- staticClass: this.wrapperClass,
on: {
click: event => {
this.$emit('click', event)
this.toggle()
}
- }
+ },
+ staticClass: this.wrapperClass,
+ staticStyle: extractComponentStyle(this)
}, [createElement('small', { staticClass: 'weex-switch-inner' })])
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/text.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/text.js b/html5/render/vue/components/text.js
index 3d8a129..5ecdffa 100644
--- a/html5/render/vue/components/text.js
+++ b/html5/render/vue/components/text.js
@@ -6,10 +6,13 @@
* be clipped according to the 'lines'. Otherwise, it'll be the 'height'.
*/
+import { extractComponentStyle } from '../core'
+import { extend } from '../utils'
+
/**
* Get text special styles (lines and text-overflow).
*/
-function getTextSpecStyle (context = {}, ms = {}) {
+function getTextSpecStyle (ms = {}) {
const lines = parseInt(ms.lines) || 0
const overflow = ms['text-overflow'] || 'ellipsis'
if (lines > 0) {
@@ -32,12 +35,13 @@ export default {
// if (process.env.NODE_ENV === 'development') {
// validateStyles('text', this.$vnode.data && this.$vnode.data.staticStyle)
// }
- const ms = this._getComponentStyle(this.$vnode.data)
+ const style = extractComponentStyle(this)
+ const textSpecStyle = getTextSpecStyle(style)
return createElement('p', {
attrs: { 'weex-type': 'text' },
on: this._createEventMap(),
staticClass: 'weex-text weex-el',
- staticStyle: getTextSpecStyle(this, ms)
+ staticStyle: extend(style, textSpecStyle)
}, this.$slots.default || [this.value])
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/textarea.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/textarea.js b/html5/render/vue/components/textarea.js
index c419642..d170051 100644
--- a/html5/render/vue/components/textarea.js
+++ b/html5/render/vue/components/textarea.js
@@ -1,3 +1,4 @@
+import { extractComponentStyle } from '../core'
import { inputCommon } from '../mixins'
import { extend, mapFormEvents } from '../utils'
// import { validateStyles } from '../validator'
@@ -42,7 +43,8 @@ export default {
value: this.value
},
on: this.createKeyboardEvent(events),
- staticClass: 'weex-textarea weex-el'
+ staticClass: 'weex-textarea weex-el',
+ staticStyle: extractComponentStyle(this)
})
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/video.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/video.js b/html5/render/vue/components/video.js
index a256aad..5d8c312 100644
--- a/html5/render/vue/components/video.js
+++ b/html5/render/vue/components/video.js
@@ -1,4 +1,5 @@
// import { validateStyles } from '../validator'
+import { extractComponentStyle } from '../core'
export default {
props: {
@@ -46,7 +47,8 @@ export default {
src: this.src
},
on: this._createEventMap(['start', 'pause', 'finish', 'fail']),
- staticClass: 'weex-video weex-el'
+ staticClass: 'weex-video weex-el',
+ staticStyle: extractComponentStyle(this)
})
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/components/web.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/web.js b/html5/render/vue/components/web.js
index 06da79a..cccda37 100644
--- a/html5/render/vue/components/web.js
+++ b/html5/render/vue/components/web.js
@@ -1,3 +1,4 @@
+import { extractComponentStyle } from '../core'
import { createEvent } from '../utils'
// import { validateStyles } from '../validator'
@@ -45,7 +46,8 @@ export default {
src: this.src
},
on: this._createEventMap(['error']),
- staticClass: 'weex-web weex-el'
+ staticClass: 'weex-web weex-el',
+ staticStyle: extractComponentStyle(this)
})
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/core/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/index.js b/html5/render/vue/core/index.js
new file mode 100644
index 0000000..57fe34e
--- /dev/null
+++ b/html5/render/vue/core/index.js
@@ -0,0 +1 @@
+export * from './style'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/style.js b/html5/render/vue/core/style.js
new file mode 100644
index 0000000..0f3a814
--- /dev/null
+++ b/html5/render/vue/core/style.js
@@ -0,0 +1,186 @@
+import {
+ camelizeKeys,
+ // hyphenateKeys,
+ extend,
+ trimComment,
+ normalizeStyle
+} from '../utils'
+import { tagBegin, tagEnd } from '../utils/perf'
+/* istanbul ignore next */
+import addPrefix from 'inline-style-prefixer/static'
+
+/**
+ * get scoped class style map from stylesheets in <head>.
+ */
+export function getHeadStyleMap () {
+ if (process.env.NODE_ENV === 'development') {
+ tagBegin('getHeadStyleMap')
+ }
+ const res = Array.from(document.styleSheets || [])
+ .reduce((pre, styleSheet) => {
+ // why not using styleSheet.rules || styleSheet.cssRules to get css rules ?
+ // because weex's components defined non-standard style attributes, which is
+ // auto ignored when access rule.cssText.
+ const strArr = trimComment(styleSheet.ownerNode.textContent.trim()).split(/}/)
+ const len = strArr.length
+ const rules = []
+ for (let i = 0; i < len; i++) {
+ const str = strArr[i]
+ if (!str || str.match(/^\s*$/)) {
+ continue
+ }
+ /**
+ * should match these cases:
+ * .a[data-v-xxx] { color: red }
+ * .a[data-v-xxx], .b[data-v-xxx] { color: red; }
+ *
+ * should not match these cases:
+ * .a { color: red; }
+ * etc.
+ */
+ const match = str.match(/((?:,?\s*\.[\w-]+\[data-v-\w+\])+)\s*({[^}]+)/)
+ if (!match) {
+ // not the vue static class styles map. so acquire no rules for this styleSheet.
+ // just jump through this styleSheet and go to analyzing next.
+ return pre
+ }
+ const clsNms = match[1].split(',').map(n => n.trim())
+ const cssText = match[2].replace(/[{}]/g, '').trim()
+ let clsNmsIdx = 0
+ const clsNmsLen = clsNms.length
+ while (clsNmsIdx < clsNmsLen) {
+ rules.push({
+ selectorText: clsNms[clsNmsIdx],
+ cssText
+ })
+ clsNmsIdx++
+ }
+ }
+ Array.from(rules).forEach(rule => {
+ const selector = rule.selectorText || ''
+ pre[selector] = trimComment(rule.cssText).split(';')
+ .reduce((styleObj, statement) => {
+ statement = statement.trim()
+ if (statement && statement.indexOf('/*') <= -1) {
+ const resArr = statement.split(':').map((part) => part.trim())
+ styleObj[resArr[0]] = resArr[1]
+ }
+ return styleObj
+ }, {})
+ })
+ return pre
+ }, {})
+ if (process.env.NODE_ENV === 'development') {
+ tagEnd('getHeadStyleMap')
+ }
+ return res
+}
+
+export function getScopeIds (context) {
+ const arr = []
+ let ctx = context
+ let scopeId
+ while (ctx) {
+ scopeId = ctx.$options._scopeId
+ scopeId && arr.push(scopeId)
+ ctx = ctx.$options.parent
+ }
+ return arr
+}
+
+export function setDefaultStyle () {
+
+}
+
+/**
+ * get style in <style scoped> tags for this component.
+ */
+export function getScopeStyle (context, classNames) {
+ const scopeIds = getScopeIds(context)
+ const style = {}
+ const styleMap = weex.styleMap
+ let map
+ let cls
+ let clsNmsIdx
+ let scpIdsIdx
+ const clsNmsLen = classNames.length
+ const scpIdsLen = scopeIds.length
+ if (clsNmsLen <= 0) {
+ return {}
+ }
+ clsNmsIdx = 0
+ while (clsNmsIdx < clsNmsLen) {
+ scpIdsIdx = 0
+ while (scpIdsIdx < scpIdsLen) {
+ cls = `.${classNames[clsNmsIdx]}[${scopeIds[scpIdsIdx]}]`
+ map = styleMap[cls]
+ if (!map) {
+ scpIdsIdx++
+ continue
+ }
+ for (const k in map) {
+ style[k] = map[k]
+ }
+ scpIdsIdx++
+ }
+ clsNmsIdx++
+ }
+ return style
+}
+
+/**
+ * get style merged with static styles, binding styles, and scoped class styles,
+ * with keys in camelcase.
+ */
+export function getComponentStyle (context) {
+ if (!context.$vnode) {
+ if (process.env.NODE_ENV === 'development') {
+ return console.error('[vue-render] getComponentStyle failed: no $vnode in context.')
+ }
+ return {}
+ }
+ const cached = context.$vnode.data.cached
+ const data = context.$vnode.data
+ const staticClassNames = (typeof data.staticClass === 'string') ? data.staticClass.split(' ') : (data.staticClass || [])
+ const classNames = (typeof data.class === 'string') ? data.class.split(' ') : (data.class || [])
+ const clsNms = staticClassNames.concat(classNames)
+ const style = getScopeStyle(context, clsNms)
+ const res = extend(style, cached, data.staticStyle, data.style)
+ context.$vnode.data.cached = res
+ return addPrefix(normalizeStyle(camelizeKeys(res)))
+}
+
+export function extractComponentStyle (context) {
+ const style = getComponentStyle(context)
+ if (style) {
+ delete context.$vnode.data.staticStyle
+ delete context.$vnode.data.style
+ }
+ return style
+}
+
+/**
+ * get { width, height } (size) of current component from components' styles.
+ */
+export function getSize (context) {
+ if (!context.$vnode) {
+ if (process.env.NODE_ENV === 'development') {
+ return console.error('[vue-render] getComponentStyle failed: no $vnode in context.')
+ }
+ return {}
+ }
+ const data = context.$vnode.data
+ const wh = {}
+ const classes = typeof data.class === 'string' ? data.class.split(' ') : (data.class || [])
+ const staticClass = typeof data.staticClass === 'string' ? data.staticClass.split(' ') : (data.class || [])
+ const clsNms = staticClass.concat(classes)
+ function extendWHFrom (to, from) {
+ if (!from) { return }
+ from.width && (to.width = from.width)
+ from.height && (to.height = from.height)
+ }
+ extendWHFrom(wh, this._getScopeStyle(clsNms))
+ extendWHFrom(wh, data.staticStyle)
+ extendWHFrom(wh, data.style)
+ return wh
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/env/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/env/index.js b/html5/render/vue/env/index.js
index d273ee1..1eb3d21 100644
--- a/html5/render/vue/env/index.js
+++ b/html5/render/vue/env/index.js
@@ -1,5 +1,5 @@
-import '../styles/reset.css'
-import '../styles/components.css'
+import css from '../styles/reset.css'
+import '../styles/base.css'
// import 'lazyimg'
import '../../browser/render/gesture'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/env/viewport.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/env/viewport.js b/html5/render/vue/env/viewport.js
index db68c82..5a80893 100644
--- a/html5/render/vue/env/viewport.js
+++ b/html5/render/vue/env/viewport.js
@@ -1,3 +1,7 @@
+// @flow
+
+import { extend } from '../utils/func'
+
/**
* viewport priority:
*
@@ -6,65 +10,159 @@
* 3. process.env.VIEWPORT_WIDTH (buid time)
*
*/
-let viewportWidth = process.env.VIEWPORT_WIDTH
+let isInited = false
+const DEFAULT_VIEWPORT_WIDTH = 750
+
+/**
+ * get viewport width from weex-viewport meta.
+ */
+const envViewportWidth = parseInt(process.env.VIEWPORT_WIDTH)
+let width: number = !isNaN(envViewportWidth) && envViewportWidth > 0
+ ? envViewportWidth
+ : DEFAULT_VIEWPORT_WIDTH
-const wxViewportMeta = document.querySelector('meta[name="weex-viewport"]')
+let wxViewportMeta = document.querySelector('meta[name="weex-viewport"]')
const metaWidth = wxViewportMeta && parseInt(wxViewportMeta.getAttribute('content'))
-if (metaWidth && !isNaN(metaWidth) && metaWidth > 0) { viewportWidth = metaWidth }
+if (metaWidth && !isNaN(metaWidth) && metaWidth > 0) {
+ width = metaWidth
+}
+
+let dpr: number = 0
+let deRect: mixed = null
+let screenWidth: number = 0
+let screenHeight: number = 0
+
+const info: {
+ dpr: number,
+ scale: number,
+ rem: number,
+ deviceWidth: number,
+ deviceHeight: number
+} = {
+ dpr,
+ scale: 0,
+ rem: 0,
+ deviceWidth: 0,
+ deviceHeight: 0
+}
/**
* set root font-size for rem units. If already been set, just skip this.
*/
-function setRootFont (doc, width) {
+function setRootFont (width: number): void {
+ const doc = window.document
+ const rem = width / 10
+ if (!doc.documentElement) { return }
const rootFontSize = doc.documentElement.style.fontSize
if (!rootFontSize) {
- doc.documentElement.style.fontSize = width / 10 + 'px'
+ doc.documentElement.style.fontSize = rem + 'px'
+ info.rem = rem
}
}
-export function setViewport (config = {}) {
- const doc = window.document
+function setMetaViewport (width: number): void {
+ if (!wxViewportMeta) {
+ wxViewportMeta = document.createElement('meta')
+ wxViewportMeta.setAttribute('name', 'weex-viewport')
+ }
+ else {
+ const metaWidth = parseInt(wxViewportMeta.getAttribute('content'))
+ if (metaWidth === width) {
+ return
+ }
+ }
+ wxViewportMeta.setAttribute('content', width + '')
+}
+
+/**
+ * export viewport info.
+ */
+export function init (viewportWidth: number = width): ?{
+ dpr: number,
+ scale: number,
+ rem: number,
+ deviceWidth: number,
+ deviceHeight: number
+} {
+ if (!isInited) {
+ isInited = true
+
+ const doc = window.document
+ if (!doc) {
+ console.error('[vue-render] window.document is undfined.')
+ return
+ }
+ if (!doc.documentElement) {
+ console.error('[vue-render] document.documentElement is undfined.')
+ return
+ }
+
+ dpr = info.dpr = window.devicePixelRatio
+ deRect = doc.documentElement.getBoundingClientRect()
+ screenWidth = deRect.width
+ screenHeight = deRect.height
- if (doc) {
// set root font for rem.
- setRootFont(doc, viewportWidth)
+ setRootFont(screenWidth)
+ setMetaViewport(viewportWidth)
/**
* why not to use window.screen.width to get screenWidth ? Because in some
* old webkit browser on android system it get the device pixel width, which
* is the screenWidth multiply by the device pixel ratio.
+ * e.g. ip6 -> get 375 for virtual screen width.
*/
- const deRect = document.documentElement.getBoundingClientRect()
- const screenWidth = deRect.width
- const screenHeight = deRect.height
const scale = screenWidth / viewportWidth
-
/**
- * if set initial/maximum/mimimum-scale some how the page will have a bounce
+ * 1. if set initial/maximum/mimimum-scale some how the page will have a bounce
* effect when user drag the page towards horizontal axis.
+ * 2. Due to compatibility reasons, not to use viewport meta anymore. Just bring
+ * a parameter scale into the style value processing.
*/
- const contents = [
- `width=${viewportWidth}`,
- // `initial-scale=${scale}`,
- // `maximum-scale=${scale}`,
- // `minimum-scale=${scale}`,
- `user-scalable=no`
- ]
-
- let meta = doc.querySelector('meta[name="viewport"]')
- if (!meta) {
- meta = doc.createElement('meta')
- meta.setAttribute('name', 'viewport')
- document.querySelector('head').appendChild(meta)
- }
- meta.setAttribute('content', contents.join(','))
- const dpr = window.devicePixelRatio
+ // const contents = [
+ // `width=${viewportWidth}`,
+ // `initial-scale=${scale}`,
+ // `maximum-scale=${scale}`,
+ // `minimum-scale=${scale}`,
+ // `user-scalable=no`
+ // ]
+
+ // let meta = doc.querySelector('meta[name="viewport"]')
+ // if (!meta) {
+ // meta = doc.createElement('meta')
+ // meta.setAttribute('name', 'viewport')
+ // document.querySelector('head').appendChild(meta)
+ // }
+ // meta.setAttribute('content', contents.join(','))
- return {
+ extend(info, {
scale,
deviceWidth: screenWidth * dpr,
deviceHeight: screenHeight * dpr
- }
+ })
}
+
+ return info
+}
+
+/**
+ * reset viewport width and scale.
+ * @return new scale.
+ */
+export function resetViewport (viewportWidth: number): number {
+ setMetaViewport(viewportWidth)
+ const newScale = screenWidth / viewportWidth
+ info.scale = newScale
+ return newScale
+}
+
+export function getViewportInfo (): {
+ dpr: number,
+ scale: number,
+ rem: number,
+ deviceWidth: number,
+ deviceHeight: number
+} {
+ return info
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/env/weex.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/env/weex.js b/html5/render/vue/env/weex.js
index 685e5b3..8b2c7d5 100644
--- a/html5/render/vue/env/weex.js
+++ b/html5/render/vue/env/weex.js
@@ -8,7 +8,7 @@ const weexModules = {}
const weex = {
__vue__: null,
utils,
- units: window.CSS_UNIT,
+ // units: window.CSS_UNIT,
config: {
env: window.WXEnvironment,
bundleUrl: location.href
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/env/wx-env.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/env/wx-env.js b/html5/render/vue/env/wx-env.js
index 4c5f8e4..011b412 100644
--- a/html5/render/vue/env/wx-env.js
+++ b/html5/render/vue/env/wx-env.js
@@ -1,48 +1,52 @@
import 'envd'
-import { setViewport } from './viewport'
+import { init as initViewport } from './viewport'
import { extend } from '../utils'
-const scaleInfo = setViewport()
-
-const lib = window.lib
-const env = {
- platform: 'Web',
- // weexVersion: '0.10.0', // TODO: get version from package.json (not sure)
- weexVersion: 'process.env.WEEX_VERSION',
- userAgent: navigator.userAgent,
- appName: lib.env.aliapp ? lib.env.aliapp.appname : navigator.appName,
- appVersion: lib.env.aliapp ? lib.env.aliapp.version.val : null,
- osName: lib.env.browser ? lib.env.browser.name : null,
- osVersion: lib.env.browser ? lib.env.browser.version.val : null,
- deviceModel: lib.env.os.name || null
-}
-
/**
- * scaleInfo: scale, deviceWidth, deviceHeight.
+ * get WXEnvironment info.
+ * @param {object} viewportInfo: info about viewport.
+ * @param {object} envInfo: info parsed from lib.env.
*/
-extend(env, scaleInfo)
-
-// 750 by default currently
-const scale = env.scale
-
-const units = {
- REM: 12 * scale,
- VW: env.deviceWidth / 100,
- VH: env.deviceHeight / 100,
- VMIN: Math.min(env.deviceWidth, env.deviceHeight) / 100,
- VMAX: Math.max(env.deviceWidth, env.deviceHeight) / 100,
- CM: 96 / 2.54 * scale,
- MM: 96 / 25.4 * scale,
- Q: 96 / 25.4 / 4 * scale,
- IN: 96 * scale,
- PT: 96 / 72 * scale,
- PC: 96 / 6 * scale,
- PX: scale
+export function initEnv (viewportInfo, envInfo) {
+ const env = {
+ platform: 'Web',
+ weexVersion: 'process.env.WEEX_VERSION',
+ userAgent: navigator.userAgent,
+ appName: envInfo.aliapp ? envInfo.aliapp.appname : navigator.appName,
+ appVersion: envInfo.aliapp ? envInfo.aliapp.version.val : null,
+ osName: envInfo.browser ? envInfo.browser.name : null,
+ osVersion: envInfo.browser ? envInfo.browser.version.val : null,
+ deviceModel: envInfo.os.name || null
+ }
+ /**
+ * viewportInfo: scale, deviceWidth, deviceHeight. dpr
+ */
+ return extend(env, viewportInfo)
}
-Object.freeze(units)
+// const viewportInfo = initViewport()
+
+// 750 by default currently
+// const scale = viewportInfo.scale
+
+// const units = {
+// REM: 12 * scale,
+// VW: viewportInfo.deviceWidth / 100,
+// VH: viewportInfo.deviceHeight / 100,
+// VMIN: Math.min(viewportInfo.deviceWidth, viewportInfo.deviceHeight) / 100,
+// VMAX: Math.max(viewportInfo.deviceWidth, viewportInfo.deviceHeight) / 100,
+// CM: 96 / 2.54 * scale,
+// MM: 96 / 25.4 * scale,
+// Q: 96 / 25.4 / 4 * scale,
+// IN: 96 * scale,
+// PT: 96 / 72 * scale,
+// PC: 96 / 6 * scale,
+// PX: scale
+// }
+
+// Object.freeze(units)
// Object.freeze(env)
-window.CSS_UNIT = units
-window.WXEnvironment = env
+// window.CSS_UNIT = units
+window.WXEnvironment = initEnv(initViewport(), window.lib.env)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/mixins/base.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/mixins/base.js b/html5/render/vue/mixins/base.js
index dba7688..ca30e0c 100644
--- a/html5/render/vue/mixins/base.js
+++ b/html5/render/vue/mixins/base.js
@@ -23,16 +23,6 @@ function watchLazyload () {
})
}
-let warned = false
-const notePage = 'https://github.com/MrRaindrop/weex/issues/14'
-function warnProcessStyle () {
- if (!warned) {
- warned = true
- console.warn(`[vue-render] warn: should add loader config using $processStyle to enable`
- + ` inline styles's auto-prefixing. see ${notePage}. If already did it, please ignore this.`)
- }
-}
-
export default {
beforeCreate () {
if (!lazyloadWatched) {
@@ -48,9 +38,6 @@ export default {
weex._root = this.$root.$el
weex._root.classList.add('weex-root')
}
- if (!warned && !window._style_processing_added) {
- warnProcessStyle()
- }
watchAppear(this)
if (process.env.NODE_ENV === 'development') {
tagMounted()
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/mixins/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/mixins/style.js b/html5/render/vue/mixins/style.js
index 5d841f2..051e6e3 100644
--- a/html5/render/vue/mixins/style.js
+++ b/html5/render/vue/mixins/style.js
@@ -3,6 +3,7 @@ import {
hyphenateKeys,
extend,
trimComment
+ // normalizeStyle
} from '../utils'
import { tagBegin, tagEnd } from '../utils/perf'
import addPrefix from 'inline-style-prefixer/static'
@@ -90,6 +91,19 @@ export default {
return hyphenateKeys(addPrefix(camelizeKeys(style)))
},
+ _mergeStyle (data) {
+ const res = {}
+ const style = data.style
+ const staticStyle = data.staticStyle
+ const classes = typeof data.class === 'string' ? data.class.split(' ') : (data.class || [])
+ const staticClass = typeof data.staticClass === 'string' ? data.staticClass.split(' ') : (data.class || [])
+ const clsNms = staticClass.concat(classes)
+ extend(res, this._getScopeStyle(clsNms))
+ extend(res, staticStyle)
+ extend(res, style)
+ return hyphenateKeys(addPrefix(camelizeKeys(res)))
+ },
+
_getScopeStyle (classNames) {
const scopeIds = this._getScopeIds()
const style = {}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/styles/base.css
----------------------------------------------------------------------
diff --git a/html5/render/vue/styles/base.css b/html5/render/vue/styles/base.css
new file mode 100644
index 0000000..656f3b3
--- /dev/null
+++ b/html5/render/vue/styles/base.css
@@ -0,0 +1,513 @@
+.weex-root * {
+ border-width: 0;
+ border-color: inherit;
+ border-style: solid;
+}
+
+.weex-flex-ct {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+}
+
+.weex-ct {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ position: relative;
+ -webkit-box-orient: vertical;
+ -webkit-flex-direction: column;
+ flex-direction: column;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-grow: 0;
+ flex-grow: 0;
+ -webkit-flex-basis: auto;
+ flex-basis: auto;
+ -webkit-box-align: stretch;
+ -webkit-align-items: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ -webkit-align-content: flex-start;
+ -ms-flex-line-pack: start;
+ align-content: flex-start;
+ border: 0 solid black;
+ margin: 0;
+ padding: 0;
+ min-width: 0;
+}
+
+.weex-ct.horizontal {
+ -webkit-box-orient: horizontal;
+ -webkit-flex-direction: row;
+ flex-direction: row;
+}
+
+.weex-el {
+ display: block;
+ box-sizing: border-box;
+ position: relative;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-grow: 0;
+ flex-grow: 0;
+ -webkit-flex-basis: auto;
+ flex-basis: auto;
+ border: 0 solid black;
+ margin: 0;
+ padding: 0;
+ min-width: 0;
+}
+
+
+
+body > .weex-div {
+ min-height: 100%;
+}
+
+.weex-input, .weex-textarea {
+ font-size: 0.426667rem;
+}
+.weex-input:focus, .weex-textarea:focus {
+ outline: none;
+}
+
+.weex-image, .weex-img {
+ background-repeat: no-repeat;
+ background-position: 50% 50%;
+}
+
+.weex-toast {
+ font-size: 0.426667rem;
+ line-height: 0.426667rem;
+ position: fixed;
+ z-index: 1999999999;
+ box-sizing: border-box;
+ max-width: 80%;
+ bottom: 50%;
+ left: 50%;
+ padding: 0.213333rem;
+ background-color: #000;
+ color: #fff;
+ text-align: center;
+ opacity: 0.6;
+ -webkit-transition: all 0.4s ease-in-out;
+ transition: all 0.4s ease-in-out;
+ border-radius: 0.066667rem;
+ -webkit-transform: translateX(-50%);
+ -ms-transform: translateX(-50%);
+ transform: translateX(-50%);
+}
+
+.weex-toast.hide {
+ opacity: 0;
+}
+
+.weex-alert .weex-alert-ok {
+ width: 100%;
+}
+
+.weex-confirm .btn-group .btn {
+ float: left;
+ width: 50%;
+}
+
+.weex-confirm .btn-group .btn.btn-ok {
+ border-right: 0.013333rem solid #ddd;
+}
+
+.weex-modal-wrap {
+ display: none;
+ position: fixed;
+ z-index: 999999999;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: #000;
+ opacity: 0.5;
+}
+
+.weex-modal-node {
+ position: fixed;
+ z-index: 9999999999;
+ top: 50%;
+ left: 50%;
+ width: 6.666667rem;
+ min-height: 2.666667rem;
+ border-radius: 0.066667rem;
+ -webkit-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ background-color: #fff;
+}
+
+.weex-modal-node.hide {
+ display: none;
+}
+
+.weex-modal-node .content {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ width: 100%;
+ min-height: 1.866667rem;
+ box-sizing: border-box;
+ font-size: 0.426667rem;
+ line-height: 0.426667rem;
+ padding: 0.213333rem;
+ border-bottom: 0.013333rem solid #ddd;
+}
+
+.weex-modal-node .btn-group {
+ width: 100%;
+ height: 0.8rem;
+ font-size: 0.373333rem;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ border: none;
+}
+
+.amfe-modal-node .btn-group .btn {
+ text-align: center;
+}
+
+.weex-modal-node .btn-group .btn {
+ box-sizing: border-box;
+ height: 0.8rem;
+ line-height: 0.8rem;
+ margin: 0;
+ padding: 0;
+ border: none;
+ background: none;
+ text-align: center;
+}
+
+.weex-prompt .input-wrap {
+ box-sizing: border-box;
+ width: 100%;
+ margin-top: 0.133333rem;
+ height: 0.96rem;
+}
+
+.weex-prompt .input-wrap .input {
+ box-sizing: border-box;
+ width: 100%;
+ height: 0.56rem;
+ line-height: 0.56rem;
+ font-size: 0.426667rem;
+ border: 0.013333rem solid #999;
+}
+
+.weex-prompt .btn-group .btn {
+ float: left;
+ width: 50%;
+}
+
+.weex-prompt .btn-group .btn.btn-ok {
+ border-right: 0.013333rem solid #ddd;
+}
+
+body > .weex-list,
+body > .weex-scroller {
+ max-height: 100%;
+}
+
+.weex-list-wrapper,
+.weex-scroller-wrapper {
+ -webkit-overflow-scrolling: touch;
+}
+
+.weex-list-wrapper {
+ overflow-y: scroll !important;
+}
+
+.weex-list-inner,
+.weex-scroller-inner {
+ -webkit-overflow-scrolling: touch;
+ width: 100%;
+}
+
+.weex-scroller-inner::-webkit-scrollbar {
+ width: 0;
+}
+
+.weex-scroller-wrapper.weex-scroller-vertical {
+ overflow-x: hidden;
+ overflow-y: scroll;
+}
+
+.weex-scroller-wrapper.weex-scroller-horizontal {
+ overflow-x: scroll;
+ overflow-y: hidden;
+}
+
+.weex-scroller-horizontal .weex-scroller-inner {
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-orient: horizontal;
+ height: 100%;
+}
+
+.iossticky {
+ position: -webkit-sticky !important;
+ position: sticky !important;
+ z-index: 9999;
+ top: 0;
+}
+
+.sticky {
+ position: fixed;
+ top: 0;
+ z-index: 9999;
+}
+
+.weex-cell {
+ width: 100%;
+}
+
+.weex-refresh,
+.weex-loading {
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ width: 100%;
+ overflow: hidden;
+}
+
+.weex-slider-wrapper {
+ overflow: hidden;
+}
+
+.weex-slider-inner {
+ position: absolute;
+ height: 100%;
+ top: 0;
+ left: 0;
+}
+
+.weex-slider-cell {
+ display: block;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: 0;
+ padding: 0;
+ height: 100%;
+ overflow: hidden;
+}
+
+.weex-indicator {
+ position: absolute;
+ z-index: 10;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-orient: horizontal;
+ margin: 0;
+ padding: 0;
+}
+
+.weex-indicator-item {
+ display: inline-block;
+ position: relative;
+ border-radius: 50%;
+ width: 0.266667rem;
+ height: 0.266667rem;
+ background-color: #BBBBBB;
+}
+.weex-indicator-item + .weex-indicator-item {
+ margin-left: 0.133333rem;
+}
+
+.weex-indicator-item-active {
+ background-color: blue;
+}
+
+.weex-refresh-indicator,
+.weex-loading-indicator {
+ width: 1.0rem;
+ height: 1.0rem;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ overflow: visible;
+ background: none;
+}
+.weex-refresh-indicator:before,
+.weex-loading-indicator:before {
+ display: block;
+ content: '';
+ font-size: 0.16rem;
+ width: 1em;
+ height: 1em;
+ left: -60%;
+ top: 40%;
+ border-radius: 50%;
+ position: relative;
+ text-indent: -9999em;
+ -webkit-animation: weex-spinner 1.1s infinite ease;
+ animation: weex-spinner 1.1s infinite ease;
+ -webkit-transform: translate3d(1.0rem, 0, 0);
+ transform: translate3d(1.0rem, 0, 0);
+}
+
+@-webkit-keyframes weex-spinner {
+ 0%,
+ 100% {
+ box-shadow: 0em -2.6em 0em 0em #ffffff, 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.5), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7);
+ }
+ 12.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.7), 1.8em -1.8em 0 0em #ffffff, 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5);
+ }
+ 25% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.5), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7), 2.5em 0em 0 0em #ffffff, 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 37.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5), 2.5em 0em 0 0em rgba(255, 255, 255, 0.7), 1.75em 1.75em 0 0em #ffffff, 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 50% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.5), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.7), 0em 2.5em 0 0em #ffffff, -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 62.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.5), 0em 2.5em 0 0em rgba(255, 255, 255, 0.7), -1.8em 1.8em 0 0em #ffffff, -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 75% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.5), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.7), -2.6em 0em 0 0em #ffffff, -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 87.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.5), -2.6em 0em 0 0em rgba(255, 255, 255, 0.7), -1.8em -1.8em 0 0em #ffffff;
+ }
+}
+
+@keyframes weex-spinner {
+ 0%,
+ 100% {
+ box-shadow: 0em -2.6em 0em 0em #ffffff, 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.5), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7);
+ }
+ 12.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.7), 1.8em -1.8em 0 0em #ffffff, 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5);
+ }
+ 25% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.5), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7), 2.5em 0em 0 0em #ffffff, 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 37.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5), 2.5em 0em 0 0em rgba(255, 255, 255, 0.7), 1.75em 1.75em 0 0em #ffffff, 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 50% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.5), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.7), 0em 2.5em 0 0em #ffffff, -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 62.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.5), 0em 2.5em 0 0em rgba(255, 255, 255, 0.7), -1.8em 1.8em 0 0em #ffffff, -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 75% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.5), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.7), -2.6em 0em 0 0em #ffffff, -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 87.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.5), -2.6em 0em 0 0em rgba(255, 255, 255, 0.7), -1.8em -1.8em 0 0em #ffffff;
+ }
+}
+.weex-switch {
+ border: 0.013333rem solid #dfdfdf;
+ cursor: pointer;
+ display: inline-block;
+ position: relative;
+ vertical-align: middle;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: content-box;
+ background-clip: content-box;
+ color: #64bd63;
+ width: 1.333333rem;
+ height: 0.8rem;
+ background-color: white;
+ border-color: #dfdfdf;
+ box-shadow: #dfdfdf 0 0 0 0 inset;
+ border-radius: 0.8rem;
+ -webkit-transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
+ transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
+}
+
+.weex-switch-checked {
+ background-color: #64bd63;
+ border-color: #64bd63;
+ box-shadow: #64bd63 0 0 0 0.533333rem inset;
+}
+
+.weex-switch-checked.weex-switch-disabled {
+ background-color: #A0CCA0;
+ box-shadow: #A0CCA0 0 0 0 0.533333rem inset;
+}
+
+.weex-switch-disabled {
+ background-color: #EEEEEE;
+}
+
+.weex-switch-inner {
+ width: 0.8rem;
+ height: 0.8rem;
+ background: #fff;
+ border-radius: 100%;
+ box-shadow: 0 0.013333rem 0.04rem rgba(0, 0, 0, 0.4);
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-transition: background-color 0.4s, left 0.2s;
+ transition: background-color 0.4s, left 0.2s;
+}
+
+.weex-switch-checked > .weex-switch-inner {
+ left: 0.533333rem;
+}
+
+.weex-text {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ position: relative;
+ white-space: pre-wrap; /* not using 'pre': support auto line feed. */
+ font-size: 0.426667rem;
+ word-wrap: break-word;
+ overflow: hidden; /* it'll be clipped if the height is not high enough. */
+}
+
+.weex-web {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ border: none;
+ box-sizing: border-box;
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/styles/components.css
----------------------------------------------------------------------
diff --git a/html5/render/vue/styles/components.css b/html5/render/vue/styles/components.css
deleted file mode 100644
index 47d2f2a..0000000
--- a/html5/render/vue/styles/components.css
+++ /dev/null
@@ -1,513 +0,0 @@
-.weex-root * {
- border-width: 0;
- border-color: inherit;
- border-style: solid;
-}
-
-.weex-flex-ct {
- display: -webkit-box;
- display: -webkit-flex;
- display: flex;
-}
-
-.weex-ct {
- box-sizing: border-box;
- display: -webkit-box;
- display: -webkit-flex;
- display: flex;
- position: relative;
- -webkit-box-orient: vertical;
- -webkit-flex-direction: column;
- flex-direction: column;
- -webkit-flex-shrink: 0;
- -ms-flex-negative: 0;
- flex-shrink: 0;
- -webkit-flex-grow: 0;
- -ms-flex-grow: 0;
- flex-grow: 0;
- -webkit-flex-basis: auto;
- flex-basis: auto;
- -webkit-box-align: stretch;
- -webkit-align-items: stretch;
- -ms-flex-align: stretch;
- align-items: stretch;
- -webkit-align-content: flex-start;
- -ms-flex-line-pack: start;
- align-content: flex-start;
- border: 0 solid black;
- margin: 0;
- padding: 0;
- min-width: 0;
-}
-
-.weex-ct.horizontal {
- -webkit-box-orient: horizontal;
- -webkit-flex-direction: row;
- flex-direction: row;
-}
-
-.weex-el {
- display: block;
- box-sizing: border-box;
- position: relative;
- -webkit-flex-shrink: 0;
- -ms-flex-negative: 0;
- flex-shrink: 0;
- -webkit-flex-grow: 0;
- -ms-flex-grow: 0;
- flex-grow: 0;
- -webkit-flex-basis: auto;
- flex-basis: auto;
- border: 0 solid black;
- margin: 0;
- padding: 0;
- min-width: 0;
-}
-
-.weex-a {
- text-decoration: none;
-}
-
-body > .weex-div {
- min-height: 100%;
-}
-
-.weex-input, .weex-textarea {
- font-size: 0.426667rem;
-}
-.weex-input:focus, .weex-textarea:focus {
- outline: none;
-}
-
-.weex-image, .weex-img {
- background-repeat: no-repeat;
- background-position: 50% 50%;
-}
-
-.weex-toast {
- font-size: 0.426667rem;
- line-height: 0.426667rem;
- position: fixed;
- z-index: 1999999999;
- box-sizing: border-box;
- max-width: 80%;
- bottom: 50%;
- left: 50%;
- padding: 0.213333rem;
- background-color: #000;
- color: #fff;
- text-align: center;
- opacity: 0.6;
- -webkit-transition: all 0.4s ease-in-out;
- transition: all 0.4s ease-in-out;
- border-radius: 0.066667rem;
- -webkit-transform: translateX(-50%);
- -ms-transform: translateX(-50%);
- transform: translateX(-50%);
-}
-
-.weex-toast.hide {
- opacity: 0;
-}
-
-.weex-alert .weex-alert-ok {
- width: 100%;
-}
-
-.weex-confirm .btn-group .btn {
- float: left;
- width: 50%;
-}
-
-.weex-confirm .btn-group .btn.btn-ok {
- border-right: 0.013333rem solid #ddd;
-}
-
-.weex-modal-wrap {
- display: none;
- position: fixed;
- z-index: 999999999;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background-color: #000;
- opacity: 0.5;
-}
-
-.weex-modal-node {
- position: fixed;
- z-index: 9999999999;
- top: 50%;
- left: 50%;
- width: 6.666667rem;
- min-height: 2.666667rem;
- border-radius: 0.066667rem;
- -webkit-transform: translate(-50%, -50%);
- -ms-transform: translate(-50%, -50%);
- transform: translate(-50%, -50%);
- background-color: #fff;
-}
-
-.weex-modal-node.hide {
- display: none;
-}
-
-.weex-modal-node .content {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-orient: vertical;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- width: 100%;
- min-height: 1.866667rem;
- box-sizing: border-box;
- font-size: 0.426667rem;
- line-height: 0.426667rem;
- padding: 0.213333rem;
- border-bottom: 0.013333rem solid #ddd;
-}
-
-.weex-modal-node .btn-group {
- width: 100%;
- height: 0.8rem;
- font-size: 0.373333rem;
- text-align: center;
- margin: 0;
- padding: 0;
- border: none;
-}
-
-.amfe-modal-node .btn-group .btn {
- text-align: center;
-}
-
-.weex-modal-node .btn-group .btn {
- box-sizing: border-box;
- height: 0.8rem;
- line-height: 0.8rem;
- margin: 0;
- padding: 0;
- border: none;
- background: none;
- text-align: center;
-}
-
-.weex-prompt .input-wrap {
- box-sizing: border-box;
- width: 100%;
- margin-top: 0.133333rem;
- height: 0.96rem;
-}
-
-.weex-prompt .input-wrap .input {
- box-sizing: border-box;
- width: 100%;
- height: 0.56rem;
- line-height: 0.56rem;
- font-size: 0.426667rem;
- border: 0.013333rem solid #999;
-}
-
-.weex-prompt .btn-group .btn {
- float: left;
- width: 50%;
-}
-
-.weex-prompt .btn-group .btn.btn-ok {
- border-right: 0.013333rem solid #ddd;
-}
-
-body > .weex-list,
-body > .weex-scroller {
- max-height: 100%;
-}
-
-.weex-list-wrapper,
-.weex-scroller-wrapper {
- -webkit-overflow-scrolling: touch;
-}
-
-.weex-list-wrapper {
- overflow-y: scroll !important;
-}
-
-.weex-list-inner,
-.weex-scroller-inner {
- -webkit-overflow-scrolling: touch;
- width: 100%;
-}
-
-.weex-scroller-inner::-webkit-scrollbar {
- width: 0;
-}
-
-.weex-scroller-wrapper.weex-scroller-vertical {
- overflow-y: scroll;
-}
-
-.weex-scroller-wrapper.weex-scroller-horizontal {
- overflow-x: scroll;
-}
-
-.weex-scroller-horizontal .weex-scroller-inner {
- -webkit-flex-direction: row;
- -ms-flex-direction: row;
- flex-direction: row;
- -webkit-box-orient: horizontal;
- height: 100%;
-}
-
-.iossticky {
- position: -webkit-sticky !important;
- position: sticky !important;
- z-index: 9999;
- top: 0;
-}
-
-.sticky {
- position: fixed;
- top: 0;
- z-index: 9999;
-}
-
-.weex-cell {
- width: 100%;
-}
-
-.weex-refresh,
-.weex-loading {
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- width: 100%;
- overflow: hidden;
-}
-
-.weex-slider-wrapper {
- overflow: hidden;
-}
-
-.weex-slider-inner {
- position: absolute;
- height: 100%;
- top: 0;
- left: 0;
-}
-
-.weex-slider-cell {
- display: block;
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- margin: 0;
- padding: 0;
- height: 100%;
- overflow: hidden;
-}
-
-.weex-indicator {
- position: absolute;
- z-index: 10;
- -webkit-flex-direction: row;
- -ms-flex-direction: row;
- flex-direction: row;
- -webkit-box-orient: horizontal;
- margin: 0;
- padding: 0;
-}
-
-.weex-indicator-item {
- display: inline-block;
- position: relative;
- border-radius: 50%;
- width: 0.266667rem;
- height: 0.266667rem;
- background-color: #BBBBBB;
-}
-.weex-indicator-item + .weex-indicator-item {
- margin-left: 0.133333rem;
-}
-
-.weex-indicator-item-active {
- background-color: blue;
-}
-
-.weex-refresh-indicator,
-.weex-loading-indicator {
- width: 1.0rem;
- height: 1.0rem;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- overflow: visible;
- background: none;
-}
-.weex-refresh-indicator:before,
-.weex-loading-indicator:before {
- display: block;
- content: '';
- font-size: 0.16rem;
- width: 1em;
- height: 1em;
- left: -60%;
- top: 40%;
- border-radius: 50%;
- position: relative;
- text-indent: -9999em;
- -webkit-animation: weex-spinner 1.1s infinite ease;
- animation: weex-spinner 1.1s infinite ease;
- -webkit-transform: translate3d(1.0rem, 0, 0);
- transform: translate3d(1.0rem, 0, 0);
-}
-
-@-webkit-keyframes weex-spinner {
- 0%,
- 100% {
- box-shadow: 0em -2.6em 0em 0em #ffffff, 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.5), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7);
- }
- 12.5% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.7), 1.8em -1.8em 0 0em #ffffff, 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5);
- }
- 25% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.5), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7), 2.5em 0em 0 0em #ffffff, 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
- }
- 37.5% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5), 2.5em 0em 0 0em rgba(255, 255, 255, 0.7), 1.75em 1.75em 0 0em #ffffff, 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
- }
- 50% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.5), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.7), 0em 2.5em 0 0em #ffffff, -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
- }
- 62.5% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.5), 0em 2.5em 0 0em rgba(255, 255, 255, 0.7), -1.8em 1.8em 0 0em #ffffff, -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
- }
- 75% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.5), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.7), -2.6em 0em 0 0em #ffffff, -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
- }
- 87.5% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.5), -2.6em 0em 0 0em rgba(255, 255, 255, 0.7), -1.8em -1.8em 0 0em #ffffff;
- }
-}
-
-@keyframes weex-spinner {
- 0%,
- 100% {
- box-shadow: 0em -2.6em 0em 0em #ffffff, 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.5), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7);
- }
- 12.5% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.7), 1.8em -1.8em 0 0em #ffffff, 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5);
- }
- 25% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.5), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7), 2.5em 0em 0 0em #ffffff, 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
- }
- 37.5% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5), 2.5em 0em 0 0em rgba(255, 255, 255, 0.7), 1.75em 1.75em 0 0em #ffffff, 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
- }
- 50% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.5), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.7), 0em 2.5em 0 0em #ffffff, -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
- }
- 62.5% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.5), 0em 2.5em 0 0em rgba(255, 255, 255, 0.7), -1.8em 1.8em 0 0em #ffffff, -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
- }
- 75% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.5), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.7), -2.6em 0em 0 0em #ffffff, -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
- }
- 87.5% {
- box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.5), -2.6em 0em 0 0em rgba(255, 255, 255, 0.7), -1.8em -1.8em 0 0em #ffffff;
- }
-}
-.weex-switch {
- border: 0.013333rem solid #dfdfdf;
- cursor: pointer;
- display: inline-block;
- position: relative;
- vertical-align: middle;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- box-sizing: content-box;
- background-clip: content-box;
- color: #64bd63;
- width: 1.333333rem;
- height: 0.8rem;
- background-color: white;
- border-color: #dfdfdf;
- box-shadow: #dfdfdf 0 0 0 0 inset;
- border-radius: 0.8rem;
- -webkit-transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
- transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
-}
-
-.weex-switch-checked {
- background-color: #64bd63;
- border-color: #64bd63;
- box-shadow: #64bd63 0 0 0 0.533333rem inset;
-}
-
-.weex-switch-checked.weex-switch-disabled {
- background-color: #A0CCA0;
- box-shadow: #A0CCA0 0 0 0 0.533333rem inset;
-}
-
-.weex-switch-disabled {
- background-color: #EEEEEE;
-}
-
-.weex-switch-inner {
- width: 0.8rem;
- height: 0.8rem;
- background: #fff;
- border-radius: 100%;
- box-shadow: 0 0.013333rem 0.04rem rgba(0, 0, 0, 0.4);
- position: absolute;
- top: 0;
- left: 0;
- -webkit-transition: background-color 0.4s, left 0.2s;
- transition: background-color 0.4s, left 0.2s;
-}
-
-.weex-switch-checked > .weex-switch-inner {
- left: 0.533333rem;
-}
-
-.weex-text {
- display: -webkit-box;
- -webkit-box-orient: vertical;
- position: relative;
- white-space: pre-wrap; /* not using 'pre': support auto line feed. */
- font-size: 0.426667rem;
- word-wrap: break-word;
- overflow: hidden; /* it'll be clipped if the height is not high enough. */
-}
-
-.weex-web {
- position: relative;
- width: 100%;
- height: 100%;
- border: none;
- box-sizing: border-box;
-}
[23/23] incubator-weex git commit: Merge branch '0.12-dev' of
https://git-wip-us.apache.org/repos/asf/incubator-weex into 0.12-dev
Posted by so...@apache.org.
Merge branch '0.12-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into 0.12-dev
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/8c90235c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/8c90235c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/8c90235c
Branch: refs/heads/0.12-dev
Commit: 8c90235c2b464ad224d09c984b699220c00a920e
Parents: b932600 3806842
Author: sospartan <so...@apache.org>
Authored: Thu Apr 13 10:31:45 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Thu Apr 13 10:31:45 2017 +0800
----------------------------------------------------------------------
android/sdk/assets/main.js | 15 ++++++++-------
ios/sdk/WeexSDK/Resources/main.js | 15 ++++++++-------
2 files changed, 16 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
[02/23] incubator-weex git commit: * [html5] change viewport adapter,
add unit tests for new adapting methods.
Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/render/vue/utils/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/utils/style.js b/html5/render/vue/utils/style.js
index c7b5fe6..0dc1879 100644
--- a/html5/render/vue/utils/style.js
+++ b/html5/render/vue/utils/style.js
@@ -1,5 +1,16 @@
// @flow
+import { getViewportInfo } from '../env/viewport'
+import addPrefix from 'inline-style-prefixer/static/index'
+
+const noUnitsNumberKeys = [
+ 'flex',
+ 'opacity',
+ 'zIndex',
+ 'fontWeight',
+ 'lines'
+]
+
/**
* remove comments from a cssText.
*/
@@ -19,3 +30,102 @@ export function supportSticky (): boolean {
support = elementStyle.position.indexOf('sticky') !== -1
return support
}
+
+const regPercentage = /^[+-]?\d+(\.\d+)?%$/
+export function isPercentage (val: string) {
+ return regPercentage.test(val)
+}
+
+const regUnitsNum = /^([+-]?\d+(?:\.\d+)?)([p,w]x)?$/ // support units: px, wx.
+export function normalizeUnitsNum (val: string): string {
+ const match = val.match(regUnitsNum)
+ if (!match) { return '' }
+ let unit = 'px' // px by default.
+ if (match[2]) {
+ unit = match[2]
+ }
+ return parseScale(parseFloat(match[1]), unit)
+}
+
+function parseScale (val: number, unit: string): string {
+ const { scale, dpr } = getViewportInfo()
+ const unitScaleMap = {
+ px: scale,
+ wx: scale * dpr
+ }
+ return val * unitScaleMap[unit] + 'px'
+}
+
+export function normalizeString (styleKey: string, styleVal: string): string {
+ if (isPercentage(styleVal)) {
+ return styleVal
+ }
+
+ // 1. test if is a regular scale css. e.g. `width: 100px;`
+ const unitsNum = normalizeUnitsNum(styleVal)
+ if (unitsNum) { return unitsNum }
+
+ // 2. test if is a translate scale. e.g. `transform: translate2d(1px, 2px);`
+ const regTranslateString = /translate[^(]*\([\d ,.pwx]+\)/i // unit support: wx, px.
+ if (styleKey.match(/transform/i) && regTranslateString.test(styleVal)) {
+ const val = styleVal.replace(regTranslateString, function (translate) {
+ const reg = /([+-]?\d+(?:\.\d+)?)([p,w]x)?(?![dD])/g
+ return translate.replace(reg, function (m, $1, $2) {
+ const unit = $2 || 'px'
+ return parseScale($1, unit)
+ })
+ })
+ return val
+ }
+
+ // 3. test if is a border style. e.g. `border: 1px solid red;`
+ const regBorderKey = /^border(?:-(?:top|bottom|left|right))?$/
+ const regBorderVal = /^([+-]?\d+(?:\.\d+)?)([p ,w]x)?\s+/
+ if (regBorderKey.test(styleKey) && regBorderVal.test(styleVal)) {
+ const reg = /^([+-]?\d+(?:\.\d+)?)([p,w]x)?/
+ const val = styleVal.replace(reg, function (m, $1, $2) {
+ const unit = $2 || 'px'
+ return parseScale($1, unit)
+ })
+ return val
+ }
+
+ // otherwise
+ return styleVal
+}
+
+export function autoPrefix (style: {}): {} {
+ return addPrefix(style)
+}
+
+export function normalizeNumber (styleKey: string, styleVal: number): string {
+ const { scale } = getViewportInfo()
+ return styleVal * scale + 'px'
+}
+
+/**
+ * normalize style to adapte to current viewport by multiply current scale.
+ * @param {object} style: should be camelCase.
+ */
+export function normalizeStyle (style: {}) {
+ const res = {}
+ for (const key in style) {
+ const val = style[key]
+ if (noUnitsNumberKeys.indexOf(key) > -1) {
+ res[key] = val
+ continue
+ }
+ switch (typeof val) {
+ case 'string':
+ res[key] = normalizeString(key, val)
+ break
+ case 'number':
+ res[key] = normalizeNumber(key, val)
+ break
+ default:
+ res[key] = val
+ break
+ }
+ }
+ return res
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/components/image.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/components/image.js b/html5/test/render/vue/components/image.js
index 241696a..cfe10e3 100644
--- a/html5/test/render/vue/components/image.js
+++ b/html5/test/render/vue/components/image.js
@@ -41,11 +41,11 @@ init('<image> component', (Vue, helper) => {
it('<image> resize="stretch"', () => {
const vm = compile(`<image resize="stretch"></image>`)
- expect(vm.$el.style.backgroundSize).to.be.equal('100%')
+ expect(vm.$el.style.backgroundSize).to.contain('100%')
})
it('<image> unknown resize', () => {
const vm = compile(`<image resize="unknown"></image>`)
- expect(vm.$el.style.backgroundSize).to.be.equal('100%')
+ expect(vm.$el.style.backgroundSize).to.be.contain('100%')
})
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/core/scope-style-map.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/core/scope-style-map.js b/html5/test/render/vue/core/scope-style-map.js
new file mode 100644
index 0000000..2ead7e8
--- /dev/null
+++ b/html5/test/render/vue/core/scope-style-map.js
@@ -0,0 +1,16 @@
+import {
+ getHeadStyleMap
+} from '../../../../render/vue/core/style'
+import '../data/head-css'
+import headMap from '../data/head-map'
+
+describe('style map', (Vue, helper) => {
+ it('should get head style map.', () => {
+ const styleMap = getHeadStyleMap()
+ for (const key in headMap) {
+ const expected = headMap[key]
+ const result = styleMap[key]
+ expect(expected).be.deep.equal(result)
+ }
+ })
+})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/core/style.js b/html5/test/render/vue/core/style.js
new file mode 100644
index 0000000..4b6b88f
--- /dev/null
+++ b/html5/test/render/vue/core/style.js
@@ -0,0 +1,59 @@
+import { init } from '../helper/runtime'
+import {
+ getScopeIds,
+ getScopeStyle,
+ getComponentStyle,
+ getSize
+} from '../../../../render/vue/core/style'
+import div from '../../../../render/vue/components/div'
+import image from '../../../../render/vue/components/image'
+import { init as initViewport, resetViewport } from '../../../../render/vue/env/viewport'
+
+import scopedStyleBundle from '../data/build/dotvue/scoped-style'
+
+init('core style', (Vue, helper) => {
+ const { compile, utils } = helper
+ const { scale } = initViewport()
+
+ before(() => {
+ helper.register('div', div)
+ helper.register('image', image)
+ })
+
+ it('should get normalized merged styles.', function () {
+ const vm = helper.createVm(scopedStyleBundle)
+ const el = vm.$refs.foo.$el
+ expect(el).to.be.ok
+
+ const expectedMap = {
+ width: 200 * scale + 'px',
+ height: 200 * scale + 'px',
+ backgroundColor: 'red'
+ }
+ const expectedDirection = {
+ WebkitBoxDirection: 'normal',
+ WebkitBoxOrient: 'horizontal',
+ WebkitFlexDirection: 'row',
+ flexDirection: 'row'
+ }
+ const expectedTransform = {
+ WebkitTransform: `translate3d(${100 * scale + 'px'}, ${100 * scale + 'px'}, 0px)`,
+ transform: `translate3d(${100 * scale + 'px'}, ${100 * scale + 'px'}, 0px)`
+ }
+
+ for (const k in expectedMap) {
+ expect(el.style[k]).to.equal(expectedMap[k])
+ }
+ const directionRes = []
+ for (const k in expectedDirection) {
+ directionRes.push(el.style[k] === expectedDirection[k])
+ }
+ expect(directionRes).to.include(true)
+
+ const transformRes = []
+ for (const k in expectedTransform) {
+ transformRes.push(el.style[k] === expectedTransform[k])
+ }
+ expect(transformRes).to.include(true)
+ })
+})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/build/dotvue/scoped-style.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/build/dotvue/scoped-style.js b/html5/test/render/vue/data/build/dotvue/scoped-style.js
new file mode 100644
index 0000000..b87ba8a
--- /dev/null
+++ b/html5/test/render/vue/data/build/dotvue/scoped-style.js
@@ -0,0 +1,525 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ else {
+ var a = factory();
+ for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
+ }
+})(this, function() {
+return /******/ (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__) {
+
+
+ /* styles */
+ __webpack_require__(1)
+
+ var Component = __webpack_require__(6)(
+ /* script */
+ null,
+ /* template */
+ __webpack_require__(7),
+ /* scopeId */
+ "data-v-0776c87b",
+ /* cssModules */
+ null
+ )
+ Component.options.__file = "/Users/rdp/www/rdp/github/MrRaindrop/weex/html5/test/render/vue/data/dotvue/scoped-style.vue"
+ if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key !== "__esModule"})) {console.error("named exports are not supported in *.vue files.")}
+ if (Component.options.functional) {console.error("[vue-loader] scoped-style.vue: functional components are not supported with templates, they should use render functions.")}
+
+ /* hot reload */
+ if (false) {(function () {
+ var hotAPI = require("vue-loader/node_modules/vue-hot-reload-api")
+ hotAPI.install(require("vue"), false)
+ if (!hotAPI.compatible) return
+ module.hot.accept()
+ if (!module.hot.data) {
+ hotAPI.createRecord("data-v-0776c87b", Component.options)
+ } else {
+ hotAPI.reload("data-v-0776c87b", Component.options)
+ }
+ })()}
+
+ module.exports = Component.exports
+
+
+/***/ },
+/* 1 */
+/***/ 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__(2);
+ 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__(4)("27230129", content, false);
+ // Hot Module Replacement
+ if(false) {
+ // When the styles change, update the <style> tags
+ if(!content.locals) {
+ module.hot.accept("!!../../../../../../node_modules/.0.26.1@css-loader/index.js!../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"id\":\"data-v-0776c87b\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./scoped-style.vue", function() {
+ var newContent = require("!!../../../../../../node_modules/.0.26.1@css-loader/index.js!../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"id\":\"data-v-0776c87b\",\"scoped\":true,\"hasInlineConfig\":false}!../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./scoped-style.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(); });
+ }
+
+/***/ },
+/* 2 */
+/***/ function(module, exports, __webpack_require__) {
+
+ exports = module.exports = __webpack_require__(3)();
+ // imports
+
+
+ // module
+ exports.push([module.id, "\n.ct[data-v-0776c87b] {\n width: 200px;\n flex-direction: row;\n transform: translate3d(100px, 100px, 0);\n}\n", ""]);
+
+ // exports
+
+
+/***/ },
+/* 3 */
+/***/ 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;
+ };
+
+
+/***/ },
+/* 4 */
+/***/ 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__(5)
+
+ /*
+ 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))
+ }
+ }
+
+
+/***/ },
+/* 5 */
+/***/ 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
+ }
+
+
+/***/ },
+/* 6 */
+/***/ function(module, exports) {
+
+ // 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,
+ scopeId,
+ cssModules
+ ) {
+ 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
+ }
+
+ // inject cssModules
+ if (cssModules) {
+ var computed = Object.create(options.computed || null)
+ Object.keys(cssModules).forEach(function (key) {
+ var module = cssModules[key]
+ computed[key] = function () { return module }
+ })
+ options.computed = computed
+ }
+
+ return {
+ esModule: esModule,
+ exports: scriptExports,
+ options: options
+ }
+ }
+
+
+/***/ },
+/* 7 */
+/***/ 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', {
+ ref: "foo",
+ staticClass: "ct",
+ staticStyle: {
+ "height": "200px"
+ },
+ style: ({
+ backgroundColor: 'red'
+ })
+ })])
+ },staticRenderFns: []}
+ module.exports.render._withStripped = true
+ if (false) {
+ module.hot.accept()
+ if (module.hot.data) {
+ require("vue-loader/node_modules/vue-hot-reload-api").rerender("data-v-0776c87b", module.exports)
+ }
+ }
+
+/***/ }
+/******/ ])
+});
+;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head1.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head1.css b/html5/test/render/vue/data/css/head1.css
new file mode 100644
index 0000000..f6a818a
--- /dev/null
+++ b/html5/test/render/vue/data/css/head1.css
@@ -0,0 +1,38 @@
+/*/////////////////////////////////////////////////////////////*/
+
+/* \u9ed8\u8ba4\u80cc\u666f\u8272\u4e3a #FFFFFF */
+.wrapper[data-v-67763bae] {
+ width: 375px;
+ /*background-color: #586C5D;*/
+ overflow: hidden;
+}
+.module-warning[data-v-67763bae]{
+ text-align: center;
+ font-size: 25px;
+ color: red;
+ font-weight: bold;
+}
+.video[data-v-67763bae]{
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 375px;
+}
+.first-frame[data-v-67763bae]{
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 375px;
+}
+.final-image[data-v-67763bae]{
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 375px;
+}
+.deco-img[data-v-67763bae]{
+ width: 375px;
+ position: absolute;
+ left: 0;
+ bottom: 0;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head10.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head10.css b/html5/test/render/vue/data/css/head10.css
new file mode 100644
index 0000000..06dce95
--- /dev/null
+++ b/html5/test/render/vue/data/css/head10.css
@@ -0,0 +1,14 @@
+/*/////////////////////////////////////////////////////////////*/
+/* Copyright 2014 Evernote Corporation. All rights reserved. */
+.en-markup-crop-options {
+ top: 18px !important;
+ left: 50% !important;
+ margin-left: -100px !important;
+ width: 200px !important;
+ border: 2px rgba(255,255,255,.38) solid !important;
+ border-radius: 4px !important;
+}
+
+.en-markup-crop-options div div:first-of-type {
+ margin-left: 0px !important;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head11.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head11.css b/html5/test/render/vue/data/css/head11.css
new file mode 100644
index 0000000..dbefea4
--- /dev/null
+++ b/html5/test/render/vue/data/css/head11.css
@@ -0,0 +1,2 @@
+/*/////////////////////////////////////////////////////////////*/
+#J_6820099468 .act-module-title-m {padding-bottom:0;background-color:#34110b}#J_6820099468 .act-module-title-m h3{margin:0 auto 0}#J_6820099468 .act-module-title-m .item-title{color:#333}#J_6820099468 .act-module-title-m .item-title:before,#J_6820099468 .act-module-title-m .item-title:after{background:#333}#J_6820099468 .act-module-title-m .is-img{padding-top:28.26666667%}#J_6820099468 .act-module-title-m .banner-img{height:212}#J_3487624305 .act-module-title-m{padding-bottom:0;background-color:#34110b}#J_3487624305 .act-module-title-m h3{margin:0 auto 0}#J_3487624305 .act-module-title-m .item-title{color:#333}#J_3487624305 .act-module-title-m .item-title:before,#J_3487624305 .act-module-title-m .item-title:after{background:#333}#J_3487624305 .act-module-title-m .is-img{padding-top:28.26666667%}#J_3487624305 .act-module-title-m .banner-img{height:212}#J_1043444990 .zebra-basis-slider{background-color:#4e351f;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-
box;-o-box-sizing:border-box;-ms-box-sizing:border-box;padding-left:0;padding-right:0}#J_1043444990 .zebra-basis-slider .icons i{background-color:#e6e6e6}#J_1043444990 .zebra-basis-slider .icons i.current{background-color:#DF3434}#J_1043444990 .zebra-basis-slider .slider{min-height:136.17021277px}#J_5774361206 .act-module-title-m{padding-bottom:0;background-color:#34110b}#J_5774361206 .act-module-title-m h3{margin:0 auto 0}#J_5774361206 .act-module-title-m .item-title{color:#333}#J_5774361206 .act-module-title-m .item-title:before,#J_5774361206 .act-module-title-m .item-title:after{background:#333}#J_5774361206 .act-module-title-m .is-img{padding-top:28.26666667%}#J_5774361206 .act-module-title-m .banner-img{height:212}#J_4710936714 .act-module-title-m{padding-bottom:0;background-color:#34110b}#J_4710936714 .act-module-title-m h3{margin:0 auto 0}#J_4710936714 .act-module-title-m .item-title{color:#333}#J_4710936714 .act-module-title-m .item-title:before,#J_4710936714 .act-module-tit
le-m .item-title:after{background:#333}#J_4710936714 .act-module-title-m .is-img{padding-top:28.26666667%}#J_4710936714 .act-module-title-m .banner-img{height:212}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head12.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head12.css b/html5/test/render/vue/data/css/head12.css
new file mode 100644
index 0000000..8cc067b
--- /dev/null
+++ b/html5/test/render/vue/data/css/head12.css
@@ -0,0 +1,2 @@
+/*/////////////////////////////////////////////////////////////*/
+.inner-feedback-m{ width: 40px; height: 40px; background-size: 50px; background-image: url(//img.alicdn.com/tps/i3/T1JDlEFg4cXXcu8V6l-64-64.png); display: block; position: fixed; left: 10px; bottom: 100px; overflow: hidden; text-indent: -9999em; z-index: 9999; background-color: rgba(0, 0, 0, 0.2); border-radius: 20px; background-position: center; }
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head2.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head2.css b/html5/test/render/vue/data/css/head2.css
new file mode 100644
index 0000000..50c718f
--- /dev/null
+++ b/html5/test/render/vue/data/css/head2.css
@@ -0,0 +1,11 @@
+/*/////////////////////////////////////////////////////////////*/
+
+.wrapper[data-v-16194ed9] {
+ color: #353535;
+}
+.point[data-v-16194ed9] {
+ position: absolute;
+}
+.banner[data-v-16194ed9]{
+ width: 375px;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head3.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head3.css b/html5/test/render/vue/data/css/head3.css
new file mode 100644
index 0000000..f8bf724
--- /dev/null
+++ b/html5/test/render/vue/data/css/head3.css
@@ -0,0 +1,25 @@
+/*/////////////////////////////////////////////////////////////*/
+
+/* \u9ed8\u8ba4\u80cc\u666f\u8272\u4e3a #FFFFFF */
+.wrapper[data-v-6acf469e] {
+ background-color: transparent;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ padding-bottom: 9px;
+}
+.items-wrapper[data-v-6acf469e] {
+ width: 357.5px;
+}
+.row[data-v-6acf469e] {
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head4.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head4.css b/html5/test/render/vue/data/css/head4.css
new file mode 100644
index 0000000..dfde2dc
--- /dev/null
+++ b/html5/test/render/vue/data/css/head4.css
@@ -0,0 +1,56 @@
+/*/////////////////////////////////////////////////////////////*/
+
+.item[data-v-553d6ea0] {
+ width: 178px;
+ height: 118px;
+ background-color: #ffffff;
+ margin-bottom: 1px;
+}
+.bgImage[data-v-553d6ea0] {
+ position: absolute;
+ width: 178px;
+ height: 118px;
+}
+.img[data-v-553d6ea0] {
+ position: absolute;
+ width: 90px;
+ height: 90px;
+ top: 14px;
+ left: 3px;
+}
+.right-panel[data-v-553d6ea0] {
+ position: absolute;
+ left: 98px;
+ width: 75px;
+ lines: 1;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ display: inline-block;
+ overflow: hidden;
+}
+.title[data-v-553d6ea0] {
+ font-weight: bold;
+ font-size: 12px;
+}
+.title-goods[data-v-553d6ea0] {
+ top: 22px;
+}
+.title-shop[data-v-553d6ea0] {
+ top: 40px;
+}
+.subtitle[data-v-553d6ea0] {
+ font-weight: lighter;
+ font-size: 12px;
+ color: #4A4A4A;
+}
+.subtitle-goods[data-v-553d6ea0] {
+ top: 43px;
+}
+.subtitle-shop[data-v-553d6ea0] {
+ top: 61px;
+}
+.price[data-v-553d6ea0] {
+ font-weight: lighter;
+ font-size: 14px;
+ top: 76px;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head5.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head5.css b/html5/test/render/vue/data/css/head5.css
new file mode 100644
index 0000000..a0adb55
--- /dev/null
+++ b/html5/test/render/vue/data/css/head5.css
@@ -0,0 +1,153 @@
+/*/////////////////////////////////////////////////////////////*/
+
+/* \u9ed8\u8ba4\u80cc\u666f\u8272\u4e3a #FFFFFF */
+.wrapper[data-v-2c9fb3eb] {
+ background-color: transparent;
+}
+.cell-wrap[data-v-2c9fb3eb]{
+}
+.like-row[data-v-2c9fb3eb]{
+ width: 375px;
+ padding-left: 9px;
+ padding-right: 9px;
+ margin-bottom: 9px;
+ box-sizing: border-box;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-pack: justify;
+ -webkit-justify-content: space-between;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ }
+.like-item[data-v-2c9fb3eb]{
+ box-sizing: border-box;
+ width: 174px;
+ height: 250px;
+ /*margin-bottom: 18;*/
+ padding-left: 7px;
+ padding-right: 7px;
+ /*padding-top: 348px;*/
+ background-color: #ffffff;
+}
+.item-img[data-v-2c9fb3eb]{
+ /*position: absolute;*/
+ /*top: 0;*/
+ /*left: 0;*/
+ margin-left: -7px;
+ width: 174px;
+ height: 174px;
+}
+.title-ctn[data-v-2c9fb3eb]{
+ margin-top: 12px;
+ /* 348 - 14 * 2 */
+ width: 162px;
+ /*background-color: #eee;*/
+}
+.badge[data-v-2c9fb3eb]{
+ position: absolute;
+ top: 2px;
+ left: 0px;
+ width: 26px;
+ height: 13px;
+ margin-right: 4px;
+}
+.title[data-v-2c9fb3eb]{
+ width: 162px;
+ font-size: 12px;
+ line-height: 15px;
+ /*padding-top: 3;*/
+ color: #333333;
+ /*background-color: #ccc;*/
+
+ overflow: hidden;
+ text-overflow: ellipsis;
+ lines: 2;
+}
+.sub-title[data-v-2c9fb3eb]{
+ position: absolute;
+ /* 348 - 40(own-height)*/
+ bottom: 11px;
+ right: 6px;
+ /*width: 312;*/
+
+ /* totally hack, do not change */
+ font-size: 10px;
+ line-height: 9px;
+ height: 14px;
+ padding-top: 1.5px;
+
+ padding-left: 3px;
+ padding-right: 3px;
+ text-align: center;
+
+ color: #F70E50;
+ text-align: center;
+ border-radius: 3px;
+ border-width: 1px;
+
+ overflow: hidden;
+ text-overflow: ellipsis;
+ lines: 1;
+}
+.sub-title-bg[data-v-2c9fb3eb]{
+ position: absolute;
+ bottom: 11px;
+ right: 6px;
+
+ /* totally hack, do not change */
+ font-size: 10px;
+ line-height: 9px;
+ height: 14px;
+ padding-left: 3px;
+ padding-right: 3px;
+ text-align: center;
+
+ text-align: center;
+ border-radius: 3px;
+ border-width: 1px;
+
+ overflow: hidden;
+ text-overflow: ellipsis;
+ lines: 1;
+
+ border-color: transparent;
+ color: transparent;
+ opacity: 0.15;
+}
+.price-ctn[data-v-2c9fb3eb]{
+ position: absolute;
+ bottom: 11px;
+ left: 6px;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ /*background-color: #ccc;*/
+}
+.price-title[data-v-2c9fb3eb]{
+ font-size: 12px;
+ /*margin-top: 4px;*/
+}
+.price-unit[data-v-2c9fb3eb]{
+ /*margin-top: 5px;*/
+ font-size: 12px;
+ /*line-height: 26px;*/
+ color: #E71A17;
+ /*background-color: #ccc;*/
+}
+.price-num[data-v-2c9fb3eb]{
+ margin-left: -1px;
+ color: #E71A17;
+ font-size: 15px;
+ /*line-height: 36px;*/
+ font-weight: bold;
+ /*background-color: #ccc;*/
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head6.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head6.css b/html5/test/render/vue/data/css/head6.css
new file mode 100644
index 0000000..38eb47d
--- /dev/null
+++ b/html5/test/render/vue/data/css/head6.css
@@ -0,0 +1,4 @@
+/*/////////////////////////////////////////////////////////////*/
+.mui-zebra-page{
+ background:#192905
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head7.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head7.css b/html5/test/render/vue/data/css/head7.css
new file mode 100644
index 0000000..aab323b
--- /dev/null
+++ b/html5/test/render/vue/data/css/head7.css
@@ -0,0 +1,61 @@
+/*/////////////////////////////////////////////////////////////*/
+.weex-root,
+.weex-root * {
+ color: initial;
+ cursor: initial;
+ direction: initial;
+ font: initial;
+ font-family: initial;
+ font-size: initial;
+ font-style: initial;
+ font-variant: initial;
+ font-weight: initial;
+ line-height: initial;
+ text-align: initial;
+ text-indent: initial;
+ visibility: initial;
+ white-space: initial;
+ word-spacing: initial;
+ font-family: BlinkMacSystemFont, 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+}
+
+.weex-root,
+.weex-root *,
+.weex-root *::before,
+.weex-root *::after {
+ box-sizing: border-box;
+ -webkit-text-size-adjust: none;
+ -ms-text-size-adjust: none;
+ text-size-adjust: none;
+ }
+
+.weex-root a,
+.weex-root button,
+.weex-root [role="button"],
+.weex-root input,
+.weex-root label,
+.weex-root select,
+.weex-root textarea {
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ }
+
+.weex-root p,
+.weex-root ol,
+.weex-root ul,
+.weex-root dl {
+ margin: 0;
+ padding: 0;
+}
+
+.weex-root li {
+ list-style: none;
+}
+
+.weex-root figure {
+ margin: 0;
+}
+
+.weex-root textarea {
+ resize: none;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head8.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head8.css b/html5/test/render/vue/data/css/head8.css
new file mode 100644
index 0000000..8f25208
--- /dev/null
+++ b/html5/test/render/vue/data/css/head8.css
@@ -0,0 +1,507 @@
+/*/////////////////////////////////////////////////////////////*/
+.weex-root * {
+ border-width: 0;
+ border-color: inherit;
+ border-style: solid;
+}
+
+.weex-ct {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ position: relative;
+ -webkit-box-orient: vertical;
+ -webkit-flex-direction: column;
+ flex-direction: column;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-grow: 0;
+ flex-grow: 0;
+ -webkit-flex-basis: auto;
+ flex-basis: auto;
+ -webkit-box-align: stretch;
+ -webkit-align-items: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ -webkit-align-content: flex-start;
+ -ms-flex-line-pack: start;
+ align-content: flex-start;
+ border: 0 solid black;
+ margin: 0;
+ padding: 0;
+ min-width: 0;
+}
+
+.weex-ct.horizontal {
+ -webkit-box-orient: horizontal;
+ -webkit-flex-direction: row;
+ flex-direction: row;
+}
+
+.weex-el {
+ display: block;
+ box-sizing: border-box;
+ position: relative;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-grow: 0;
+ flex-grow: 0;
+ -webkit-flex-basis: auto;
+ flex-basis: auto;
+ border: 0 solid black;
+ margin: 0;
+ padding: 0;
+ min-width: 0;
+}
+
+.weex-a {
+ text-decoration: none;
+}
+
+body > .weex-div {
+ min-height: 100%;
+}
+
+.weex-input, .weex-textarea {
+ font-size: 0.426667rem;
+}
+.weex-input:focus, .weex-textarea:focus {
+ outline: none;
+}
+
+.weex-image, .weex-img {
+ background-repeat: no-repeat;
+ background-position: 50% 50%;
+}
+
+.weex-toast {
+ font-size: 0.426667rem;
+ line-height: 0.426667rem;
+ position: fixed;
+ z-index: 1999999999;
+ box-sizing: border-box;
+ max-width: 80%;
+ bottom: 50%;
+ left: 50%;
+ padding: 0.213333rem;
+ background-color: #000;
+ color: #fff;
+ text-align: center;
+ opacity: 0.6;
+ -webkit-transition: all 0.4s ease-in-out;
+ transition: all 0.4s ease-in-out;
+ border-radius: 0.066667rem;
+ -webkit-transform: translateX(-50%);
+ -ms-transform: translateX(-50%);
+ transform: translateX(-50%);
+ }
+
+.weex-toast.hide {
+ opacity: 0;
+}
+
+.weex-alert .weex-alert-ok {
+ width: 100%;
+}
+
+.weex-confirm .btn-group .btn {
+ float: left;
+ width: 50%;
+}
+
+.weex-confirm .btn-group .btn.btn-ok {
+ border-right: 0.013333rem solid #ddd;
+}
+
+.weex-modal-wrap {
+ display: none;
+ position: fixed;
+ z-index: 999999999;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: #000;
+ opacity: 0.5;
+}
+
+.weex-modal-node {
+ position: fixed;
+ z-index: 9999999999;
+ top: 50%;
+ left: 50%;
+ width: 6.666667rem;
+ min-height: 2.666667rem;
+ border-radius: 0.066667rem;
+ -webkit-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ background-color: #fff;
+}
+
+.weex-modal-node.hide {
+ display: none;
+}
+
+.weex-modal-node .content {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ width: 100%;
+ min-height: 1.866667rem;
+ box-sizing: border-box;
+ font-size: 0.426667rem;
+ line-height: 0.426667rem;
+ padding: 0.213333rem;
+ border-bottom: 0.013333rem solid #ddd;
+}
+
+.weex-modal-node .btn-group {
+ width: 100%;
+ height: 0.8rem;
+ font-size: 0.373333rem;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ border: none;
+}
+
+.amfe-modal-node .btn-group .btn {
+ text-align: center;
+}
+
+.weex-modal-node .btn-group .btn {
+ box-sizing: border-box;
+ height: 0.8rem;
+ line-height: 0.8rem;
+ margin: 0;
+ padding: 0;
+ border: none;
+ background: none;
+ text-align: center;
+}
+
+.weex-prompt .input-wrap {
+ box-sizing: border-box;
+ width: 100%;
+ margin-top: 0.133333rem;
+ height: 0.96rem;
+}
+
+.weex-prompt .input-wrap .input {
+ box-sizing: border-box;
+ width: 100%;
+ height: 0.56rem;
+ line-height: 0.56rem;
+ font-size: 0.426667rem;
+ border: 0.013333rem solid #999;
+}
+
+.weex-prompt .btn-group .btn {
+ float: left;
+ width: 50%;
+}
+
+.weex-prompt .btn-group .btn.btn-ok {
+ border-right: 0.013333rem solid #ddd;
+}
+
+body > .weex-list,
+body > .weex-scroller {
+ max-height: 100%;
+}
+
+.weex-list-wrapper,
+.weex-scroller-wrapper {
+ -webkit-overflow-scrolling: touch;
+}
+
+.weex-list-wrapper {
+ overflow-y: scroll !important;
+}
+
+.weex-list-inner,
+.weex-scroller-inner {
+ -webkit-overflow-scrolling: touch;
+ width: 100%;
+}
+
+.weex-scroller-inner::-webkit-scrollbar {
+ width: 0;
+}
+
+.weex-scroller-wrapper.weex-scroller-vertical {
+ overflow-y: scroll;
+}
+
+.weex-scroller-wrapper.weex-scroller-horizontal {
+ overflow-x: scroll;
+}
+
+.weex-scroller-horizontal .weex-scroller-inner {
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-orient: horizontal;
+ height: 100%;
+}
+
+.iossticky {
+ position: -webkit-sticky !important;
+ position: sticky !important;
+ z-index: 9999;
+ top: 0;
+}
+
+.sticky {
+ position: fixed;
+ top: 0;
+ z-index: 9999;
+}
+
+.weex-cell {
+ width: 100%;
+}
+
+.weex-refresh,
+.weex-loading {
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ width: 100%;
+ overflow: hidden;
+}
+
+.weex-slider-wrapper {
+ overflow: hidden;
+}
+
+.weex-slider-inner {
+ position: absolute;
+ height: 100%;
+ top: 0;
+ left: 0;
+}
+
+.weex-slider-cell {
+ display: block;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: 0;
+ padding: 0;
+ height: 100%;
+ overflow: hidden;
+}
+
+.weex-indicator {
+ position: absolute;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-orient: horizontal;
+ margin: 0;
+ padding: 0;
+}
+
+.weex-indicator-item {
+ display: inline-block;
+ position: relative;
+ border-radius: 50%;
+ width: 0.266667rem;
+ height: 0.266667rem;
+ background-color: #BBBBBB;
+}
+.weex-indicator-item + .weex-indicator-item {
+ margin-left: 0.133333rem;
+}
+
+.weex-indicator-item-active {
+ background-color: blue;
+}
+
+.weex-refresh-indicator,
+.weex-loading-indicator {
+ width: 1.0rem;
+ height: 1.0rem;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ overflow: visible;
+ background: none;
+}
+.weex-refresh-indicator:before,
+.weex-loading-indicator:before {
+ display: block;
+ content: '';
+ font-size: 0.16rem;
+ width: 1em;
+ height: 1em;
+ left: -60%;
+ top: 40%;
+ border-radius: 50%;
+ position: relative;
+ text-indent: -9999em;
+ -webkit-animation: weex-spinner 1.1s infinite ease;
+ animation: weex-spinner 1.1s infinite ease;
+ -webkit-transform: translate3d(1.0rem, 0, 0);
+ transform: translate3d(1.0rem, 0, 0);
+}
+
+@-webkit-keyframes weex-spinner {
+ 0%,
+ 100% {
+ box-shadow: 0em -2.6em 0em 0em #ffffff, 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.5), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7);
+ }
+ 12.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.7), 1.8em -1.8em 0 0em #ffffff, 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5);
+ }
+ 25% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.5), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7), 2.5em 0em 0 0em #ffffff, 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 37.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5), 2.5em 0em 0 0em rgba(255, 255, 255, 0.7), 1.75em 1.75em 0 0em #ffffff, 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 50% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.5), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.7), 0em 2.5em 0 0em #ffffff, -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 62.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.5), 0em 2.5em 0 0em rgba(255, 255, 255, 0.7), -1.8em 1.8em 0 0em #ffffff, -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 75% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.5), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.7), -2.6em 0em 0 0em #ffffff, -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 87.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.5), -2.6em 0em 0 0em rgba(255, 255, 255, 0.7), -1.8em -1.8em 0 0em #ffffff;
+ }
+}
+
+@keyframes weex-spinner {
+ 0%,
+ 100% {
+ box-shadow: 0em -2.6em 0em 0em #ffffff, 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.5), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7);
+ }
+ 12.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.7), 1.8em -1.8em 0 0em #ffffff, 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5);
+ }
+ 25% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.5), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7), 2.5em 0em 0 0em #ffffff, 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 37.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5), 2.5em 0em 0 0em rgba(255, 255, 255, 0.7), 1.75em 1.75em 0 0em #ffffff, 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 50% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.5), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.7), 0em 2.5em 0 0em #ffffff, -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 62.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.5), 0em 2.5em 0 0em rgba(255, 255, 255, 0.7), -1.8em 1.8em 0 0em #ffffff, -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 75% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.5), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.7), -2.6em 0em 0 0em #ffffff, -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
+ }
+ 87.5% {
+ box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.5), -2.6em 0em 0 0em rgba(255, 255, 255, 0.7), -1.8em -1.8em 0 0em #ffffff;
+ }
+}
+.weex-switch {
+ border: 0.013333rem solid #dfdfdf;
+ cursor: pointer;
+ display: inline-block;
+ position: relative;
+ vertical-align: middle;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: content-box;
+ background-clip: content-box;
+ color: #64bd63;
+ width: 1.333333rem;
+ height: 0.8rem;
+ background-color: white;
+ border-color: #dfdfdf;
+ box-shadow: #dfdfdf 0 0 0 0 inset;
+ border-radius: 0.8rem;
+ -webkit-transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
+ transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
+ }
+
+.weex-switch-checked {
+ background-color: #64bd63;
+ border-color: #64bd63;
+ box-shadow: #64bd63 0 0 0 0.533333rem inset;
+}
+
+.weex-switch-checked.weex-switch-disabled {
+ background-color: #A0CCA0;
+ box-shadow: #A0CCA0 0 0 0 0.533333rem inset;
+}
+
+.weex-switch-disabled {
+ background-color: #EEEEEE;
+}
+
+.weex-switch-inner {
+ width: 0.8rem;
+ height: 0.8rem;
+ background: #fff;
+ border-radius: 100%;
+ box-shadow: 0 0.013333rem 0.04rem rgba(0, 0, 0, 0.4);
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-transition: background-color 0.4s, left 0.2s;
+ transition: background-color 0.4s, left 0.2s;
+ }
+
+.weex-switch-checked > .weex-switch-inner {
+ left: 0.533333rem;
+}
+
+.weex-text {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ position: relative;
+ white-space: pre-wrap; /* not using 'pre': support auto line feed. */
+ font-size: 0.426667rem;
+ word-wrap: break-word;
+ overflow: hidden; /* it'll be clipped if the height is not high enough. */
+}
+
+.weex-web {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ border: none;
+ box-sizing: border-box;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/css/head9.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head9.css b/html5/test/render/vue/data/css/head9.css
new file mode 100644
index 0000000..ce38a66
--- /dev/null
+++ b/html5/test/render/vue/data/css/head9.css
@@ -0,0 +1,173 @@
+/*/////////////////////////////////////////////////////////////*/
+@font-face {
+ font-family: "iconfont";
+ src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAAPAIAAAwBwRkZUTXBD98UAAAD8AAAAHE9TLzJXL1zIAAABGAAAAGBjbWFws6IHbgAAAXgAAAFaY3Z0IAyV/swAAApQAAAAJGZwZ20w956VAAAKdAAACZZnYXNwAAAAEAAACkgAAAAIZ2x5ZuxoPFIAAALUAAAEWGhlYWQHA5h3AAAHLAAAADZoaGVhBzIDcgAAB2QAAAAkaG10eAs2AW0AAAeIAAAAGGxvY2EDcAQeAAAHoAAAABBtYXhwASkKKwAAB7AAAAAgbmFtZQl/3hgAAAfQAAACLnBvc3Tm7f0bAAAKAAAAAEhwcmVwpbm+ZgAAFAwAAACVAAAAAQAAAADMPaLPAAAAANIDKnoAAAAA0gMqewAEA/oB9AAFAAACmQLMAAAAjwKZAswAAAHrADMBCQAAAgAGAwAAAAAAAAAAAAEQAAAAAAAAAAAAAABQZkVkAMAAeObeAyz/LABcAxgAlAAAAAEAAAAAAxgAAAAAACAAAQAAAAMAAAADAAAAHAABAAAAAABUAAMAAQAAABwABAA4AAAACgAIAAIAAgB45lDmYebe//8AAAB45lDmYebe////ixm0GaQZKAABAAAAAAAAAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACACIAAAEyAqoAAwAHAClAJgAAAAMCAANXAAIBAQJLAAICAU8EAQECAUMAAAcGBQQAAwADEQUPKzMRIREnMxEjIgEQ7szMAqr9ViICZgAAAAUALP/hA7wDGAAWADAAOgBSAF4Bd0uwE1BYQEoCAQANDg0ADmYAAw4BDgNeAAEICAFcEAEJCAoGCV4RAQwGBAYMXgALBAtpDwEIAAYMCAZYAAoHBQIECwoEWRIBDg4NUQANDQoOQhtLsBdQWEBLAgEADQ4NAA5mAAMOAQ4DXgABCAgBXBABCQgKCAkKZhEBDAYEBgxeAAsEC2kPAQgABgwIBlgACgcFAgQLCgRZEgEODg1RAA0NCg5CG0uwGFBYQEwCAQANDg0ADmYAAw4BDgNeAAEICAFcEAEJCAoICQpmEQEMBgQGDARmAAsEC2kPAQgABgwIBlgACgcFAgQLCgRZEgEODg1RAA0NCg5CG0BOAgEADQ4NAA5mAAMOAQ4DAWYAAQgOAQhkEAEJCAoICQpmEQEMBgQGDARmAAsEC2kPAQgABgwIBlgACgcFAgQLCgRZEgEODg1RAA0NCg5CWVlZQChTUzs7MjEXF1NeU15bWDtSO1JLQzc1MToyOhcwFzBRETEYESgVQBMWKwEGKwEiDgIdASE1NCY1NC4CKwEVIQUVFBYUDgIjBiYrASchBysBIiciLgI9ARciBhQWMzI2NCYXBgcOAx4BOwYyNicuAScmJwE1ND4COwEyFh0BARkbGlMSJRwSA5ABChgnHoX+SgKiARUfIw4OHw4gLf5JLB0iFBkZIBMIdwwSEgwNEhKMCAYFCwQCBA8OJUNRUEAkFxYJBQkFBQb+pAUPGhW8HykCHwEMGScaTCkQHAQNIBsSYYg0Fzo6JRcJAQGAgAETGyAOpz8RGhERGhF8GhYTJA4QDQgYGg0jERMUAXfkCxgTDB0m4wAAAgCg/2wDYALsABIAG
gAhQB4AAAADAgADWQACAQECTQACAgFRAAECAUUTFjkQBBIrACAGFRQeAxcWOwEyPwESNTQAIiY0NjIWFAKS/tzORFVvMRAJDgEOCW3b/uKEXl6EXgLszpI1lXyJNhEKC30BDIyS/s5ehF5ehAAAAAEAggBJA4QB6AAdABtAGBIRAgEAAUAFAQA+AAABAGgAAQFfEx8CECsBJgcGBwkBLgEGBwYUFwEwMxcVFjI3AT4DLgIDehEWAwP+uP60BhEQBgoKAWEBAQoaCQFeAwQCAQECBAHhEg0DAv61AUkHBAUGCRsJ/qIBAQkJAWICBwYHCAYGAAEAfwCLA4ECJwAhAB1AGhYPAgEAAUAFAQA+AAABAGgCAQEBXyQuEwMRKyUBMCcjNSYHBgcBDgEUFhceAjMyNwkBFjMyNjc+Ai4BA3f+nwEBEhUEAv6iBQUFBQMHCAQOCQFIAUwKDQYMBQMFAQEFwwFeAQERDQID/p8FDAwMBAMEAgkBS/62CQUFAwoJCgkAAAEAAAABAAALIynoXw889QALBAAAAAAA0gMqewAAAADSAyp7ACL/bAO8AxgAAAAIAAIAAAAAAAAAAQAAAxj/bABcBAAAAAAAA7wAAQAAAAAAAAAAAAAAAAAAAAUBdgAiAAAAAAFVAAAD6QAsBAAAoACCAH8AAAAoACgAKAFkAaIB5AIsAAEAAAAHAF8ABQAAAAAAAgAmADQAbAAAAIoJlgAAAAAAAAAMAJYAAQAAAAAAAQAIAAAAAQAAAAAAAgAGAAgAAQAAAAAAAwAkAA4AAQAAAAAABAAIADIAAQAAAAAABQBGADoAAQAAAAAABgAIAIAAAwABBAkAAQAQAIgAAwABBAkAAgAMAJgAAwABBAkAAwBIAKQAAwABBAkABAAQAOwAAwABBAkABQCMAPwAAwABBAkABgAQAYhpY29uZm9udE1lZGl1bUZvbnRGb3JnZSAyLjAgOiBpY29uZm9udCA6IDI2LTgtMj
AxNWljb25mb250VmVyc2lvbiAxLjAgOyB0dGZhdXRvaGludCAodjAuOTQpIC1sIDggLXIgNTAgLUcgMjAwIC14IDE0IC13ICJHIiAtZiAtc2ljb25mb250AGkAYwBvAG4AZgBvAG4AdABNAGUAZABpAHUAbQBGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAGkAYwBvAG4AZgBvAG4AdAAgADoAIAAyADYALQA4AC0AMgAwADEANQBpAGMAbwBuAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwACAAOwAgAHQAdABmAGEAdQB0AG8AaABpAG4AdAAgACgAdgAwAC4AOQA0ACkAIAAtAGwAIAA4ACAALQByACAANQAwACAALQBHACAAMgAwADAAIAAtAHgAIAAxADQAIAAtAHcAIAAiAEcAIgAgAC0AZgAgAC0AcwBpAGMAbwBuAGYAbwBuAHQAAAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAABAAIAWwECAQMBBAd1bmlFNjUwB3VuaUU2NjEHdW5pRTZERQABAAH//wAPAAAAAAAAAAAAAAAAAAAAAAAyADIDGP/hAxj/bAMY/+EDGP9ssAAssCBgZi2wASwgZCCwwFCwBCZasARFW1ghIyEbilggsFBQWCGwQFkbILA4UFghsDhZWSCwCkVhZLAoUFghsApFILAwUFghsDBZGyCwwFBYIGYgiophILAKUFhgGyCwIFBYIbAKYBsgsDZQWCGwNmAbYFlZWRuwACtZWSOwAFBYZVlZLbACLCBFILAEJWFkILAFQ1BYsAUjQrAGI0IbISFZsAFgLbADLCMhIyEgZLEFYkIgsAYjQrIKAAIqISCwBkMgiiCKsAArsTAFJYpRWGBQG2FSWVgjWSEgsEBTWLAAKxshsEBZI7AAUFhlWS2wBCywCCNCsAcjQrAAI0KwAEOwB0NRWLAIQyuyAAE
AQ2BCsBZlHFktsAUssABDIEUgsAJFY7ABRWJgRC2wBiywAEMgRSCwACsjsQQEJWAgRYojYSBkILAgUFghsAAbsDBQWLAgG7BAWVkjsABQWGVZsAMlI2FERC2wByyxBQVFsAFhRC2wCCywAWAgILAKQ0qwAFBYILAKI0JZsAtDSrAAUlggsAsjQlktsAksILgEAGIguAQAY4ojYbAMQ2AgimAgsAwjQiMtsAosS1RYsQcBRFkksA1lI3gtsAssS1FYS1NYsQcBRFkbIVkksBNlI3gtsAwssQANQ1VYsQ0NQ7ABYUKwCStZsABDsAIlQrIAAQBDYEKxCgIlQrELAiVCsAEWIyCwAyVQWLAAQ7AEJUKKiiCKI2GwCCohI7ABYSCKI2GwCCohG7AAQ7ACJUKwAiVhsAgqIVmwCkNHsAtDR2CwgGIgsAJFY7ABRWJgsQAAEyNEsAFDsAA+sgEBAUNgQi2wDSyxAAVFVFgAsA0jQiBgsAFhtQ4OAQAMAEJCimCxDAQrsGsrGyJZLbAOLLEADSstsA8ssQENKy2wECyxAg0rLbARLLEDDSstsBIssQQNKy2wEyyxBQ0rLbAULLEGDSstsBUssQcNKy2wFiyxCA0rLbAXLLEJDSstsBgssAcrsQAFRVRYALANI0IgYLABYbUODgEADABCQopgsQwEK7BrKxsiWS2wGSyxABgrLbAaLLEBGCstsBsssQIYKy2wHCyxAxgrLbAdLLEEGCstsB4ssQUYKy2wHyyxBhgrLbAgLLEHGCstsCEssQgYKy2wIiyxCRgrLbAjLCBgsA5gIEMjsAFgQ7ACJbACJVFYIyA8sAFgI7ASZRwbISFZLbAkLLAjK7AjKi2wJSwgIEcgILACRWOwAUViYCNhOCMgilVYIEcgILACRWOwAUViYCNhOBshWS2wJiyxAAVFVFgAsAEWsCUqsAEVMBsiWS2wJyywByuxAAVFVFgAsAEWsCUqsAEVMBsiWS2wKCwg
NbABYC2wKSwAsANFY7ABRWKwACuwAkVjsAFFYrAAK7AAFrQAAAAAAEQ+IzixKAEVKi2wKiwgPCBHILACRWOwAUViYLAAQ2E4LbArLC4XPC2wLCwgPCBHILACRWOwAUViYLAAQ2GwAUNjOC2wLSyxAgAWJSAuIEewACNCsAIlSYqKRyNHI2EgWGIbIVmwASNCsiwBARUUKi2wLiywABawBCWwBCVHI0cjYbAGRStlii4jICA8ijgtsC8ssAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgsAlDIIojRyNHI2EjRmCwBEOwgGJgILAAKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwgGJhIyAgsAQmI0ZhOBsjsAlDRrACJbAJQ0cjRyNhYCCwBEOwgGJgIyCwACsjsARDYLAAK7AFJWGwBSWwgGKwBCZhILAEJWBkI7ADJWBkUFghGyMhWSMgILAEJiNGYThZLbAwLLAAFiAgILAFJiAuRyNHI2EjPDgtsDEssAAWILAJI0IgICBGI0ewACsjYTgtsDIssAAWsAMlsAIlRyNHI2GwAFRYLiA8IyEbsAIlsAIlRyNHI2EgsAUlsAQlRyNHI2GwBiWwBSVJsAIlYbABRWMjIFhiGyFZY7ABRWJgIy4jICA8ijgjIVktsDMssAAWILAJQyAuRyNHI2EgYLAgYGawgGIjICA8ijgtsDQsIyAuRrACJUZSWCA8WS6xJAEUKy2wNSwjIC5GsAIlRlBYIDxZLrEkARQrLbA2LCMgLkawAiVGUlggPFkjIC5GsAIlRlBYIDxZLrEkARQrLbA3LLAuKyMgLkawAiVGUlggPFkusSQBFCstsDgssC8riiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSQBFCuwBEMusCQrLbA5LLAAFrAEJbAEJiAuRyNHI2GwBkUrIyA8IC4jOLEkARQrL
bA6LLEJBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmGwAiVGYTgjIDwjOBshICBGI0ewACsjYTghWbEkARQrLbA7LLAuKy6xJAEUKy2wPCywLyshIyAgPLAEI0IjOLEkARQrsARDLrAkKy2wPSywABUgR7AAI0KyAAEBFRQTLrAqKi2wPiywABUgR7AAI0KyAAEBFRQTLrAqKi2wPyyxAAEUE7ArKi2wQCywLSotsEEssAAWRSMgLiBGiiNhOLEkARQrLbBCLLAJI0KwQSstsEMssgAAOistsEQssgABOistsEUssgEAOistsEYssgEBOistsEcssgAAOystsEgssgABOystsEkssgEAOystsEossgEBOystsEsssgAANystsEwssgABNystsE0ssgEANystsE4ssgEBNystsE8ssgAAOSstsFAssgABOSstsFEssgEAOSstsFIssgEBOSstsFMssgAAPCstsFQssgABPCstsFUssgEAPCstsFYssgEBPCstsFcssgAAOCstsFgssgABOCstsFkssgEAOCstsFossgEBOCstsFsssDArLrEkARQrLbBcLLAwK7A0Ky2wXSywMCuwNSstsF4ssAAWsDArsDYrLbBfLLAxKy6xJAEUKy2wYCywMSuwNCstsGEssDErsDUrLbBiLLAxK7A2Ky2wYyywMisusSQBFCstsGQssDIrsDQrLbBlLLAyK7A1Ky2wZiywMiuwNistsGcssDMrLrEkARQrLbBoLLAzK7A0Ky2waSywMyuwNSstsGossDMrsDYrLbBrLCuwCGWwAyRQeLABFTAtAABLuADIUlixAQGOWbkIAAgAYyCwASNEILADI3CwDkUgIEu4AA5RS7AGU1pYsDQbsChZYGYgilVYsA
IlYbABRWMjYrACI0SzCgkFBCuzCgsFBCuzDg8FBCtZsgQoCUVSRLMKDQYEK7EGAUSxJAGIUViwQIhYsQYDRLEmAYhRWLgEAIhYsQYBRFlZWVm4Af+FsASNsQUARAAAAA==") format("truetype");
+}
+
+.iconfont {
+ font-family: iconfont !important;
+ font-size: 0.213333rem;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -webkit-text-stroke-width: 0.0.002667rem;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.weex-tabheader {
+ position: relative;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ left: 0;
+ top: 0;
+ width: 10rem;
+ height: 1.6rem;
+ color: #333;
+ overflow: hidden;
+}
+
+.weex-tabheader,
+.weex-tabheader * {
+ color: inherit;
+ cursor: inherit;
+ direction: inherit;
+ font: inherit;
+ font-family: inherit;
+ font-size: inherit;
+ font-style: inherit;
+ font-variant: inherit;
+ font-weight: inherit;
+ line-height: inherit;
+ text-align: inherit;
+ text-indent: inherit;
+ visibility: inherit;
+ white-space: inherit;
+ word-spacing: inherit;
+}
+
+.weex-tabheader .header-bar {
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ font-size: 0.373333rem;
+ height: 1.17rem;
+ line-height: 1.17rem;
+ color: #999;
+ padding-left: 0.4rem;
+}
+.weex-tabheader .header-body {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 9rem;
+ overflow-x: scroll;
+ overflow-y: hidden;
+ white-space: nowrap;
+}
+.weex-tabheader .header-body::-webkit-scrollbar {
+ width: 0;
+ height: 0;
+ overflow: hidden;
+}
+.weex-tabheader .fold-toggle {
+ position: absolute;
+ top: 0.6rem;
+ right: 0;
+ width: 1rem;
+ height: 1.17rem;
+ line-height: 1.17rem;
+ text-align: center;
+ z-index: 999;
+ font-size: 0.426667rem;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+.weex-tabheader.unfold-header {
+ position: fixed !important;
+ top: 0;
+ left: 0;
+ overflow: visible;
+}
+
+.weex-tabheader {
+ list-style: none;
+ white-space: nowrap;
+ height: 1.17rem;
+ line-height: 1.17rem;
+}
+.weex-tabheader .th-item {
+ padding-left: 0.72rem;
+ font-size: 0.373333rem;
+ position: relative;
+ display: inline-block;
+}
+.weex-tabheader .th-item.active {
+ color: #ff0000;
+}
+.weex-tabheader .hl-icon {
+ width: 0.4rem;
+ height: 0.4rem;
+ line-height: 0.4rem;
+ text-align: center;
+ position: absolute;
+ top: 50%;
+ left: 0.24rem;
+ font-size: 0.373333rem;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.weex-tabheader .hl-icon.active {
+ color: #ff0000;
+}
+
+.unfold-header .header-bar {
+ display: block;
+}
+.unfold-header .fold-toggle {
+ -webkit-transform: translateY(-50%) rotate(180deg);
+ transform: translateY(-50%) rotate(180deg);
+}
+.unfold-header .header-body {
+ display: block;
+ height: auto;
+ position: relative;
+ margin-top: 1.17rem;
+ padding: 0.133333rem;
+ margin-right: 0;
+ white-space: normal;
+}
+.unfold-header.weex-tabheader {
+ display: block;
+ height: auto;
+}
+.unfold-header .th-item {
+ box-sizing: border-box;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ float: left;
+ width: 33.3333%;
+ height: 1.01rem;
+ line-height: 1.01rem;
+}
+.unfold-header .hl-icon {
+ margin-right: 0;
+ font-size: 0.373333rem;
+ position: absolute;
+}
+.unfold-header.tabheader-mask {
+ display: block;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0.6);
+}
+
+.tabheader-mask {
+ display: none;
+ position: fixed;
+ left: 0;
+ top: 0;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/dotvue/scoped-style.vue
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/dotvue/scoped-style.vue b/html5/test/render/vue/data/dotvue/scoped-style.vue
new file mode 100644
index 0000000..67c1bb8
--- /dev/null
+++ b/html5/test/render/vue/data/dotvue/scoped-style.vue
@@ -0,0 +1,13 @@
+<template>
+ <div>
+ <div ref="foo" style="height:200px;" :style="{ backgroundColor: 'red' }" class="ct"></div>
+ </div>
+</template>
+
+<style scoped>
+.ct {
+ width: 200px;
+ flex-direction: row;
+ transform: translate3d(100px, 100px, 0);
+}
+</style>
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/head-css.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/head-css.js b/html5/test/render/vue/data/head-css.js
new file mode 100644
index 0000000..ca4aca6
--- /dev/null
+++ b/html5/test/render/vue/data/head-css.js
@@ -0,0 +1,12 @@
+import './css/head1.css'
+import './css/head2.css'
+import './css/head3.css'
+import './css/head4.css'
+import './css/head5.css'
+import './css/head6.css'
+import './css/head7.css'
+import './css/head8.css'
+import './css/head9.css'
+import './css/head10.css'
+import './css/head11.css'
+import './css/head12.css'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/data/head-map.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/head-map.js b/html5/test/render/vue/data/head-map.js
new file mode 100644
index 0000000..cde66c9
--- /dev/null
+++ b/html5/test/render/vue/data/head-map.js
@@ -0,0 +1,247 @@
+export default {
+ /*// 1 /////////////////////////////////////////////////*/
+ ".wrapper[data-v-67763bae]": {
+ "width": "375px",
+ "overflow": "hidden"
+ },
+ ".module-warning[data-v-67763bae]": {
+ "text-align": "center",
+ "font-size": "25px",
+ "color": "red",
+ "font-weight": "bold"
+ },
+ ".video[data-v-67763bae]": {
+ "position": "absolute",
+ "top": "0",
+ "left": "0",
+ "width": "375px"
+ },
+ ".first-frame[data-v-67763bae]": {
+ "position": "absolute",
+ "top": "0",
+ "left": "0",
+ "width": "375px"
+ },
+ ".final-image[data-v-67763bae]": {
+ "position": "absolute",
+ "top": "0",
+ "left": "0",
+ "width": "375px"
+ },
+ ".deco-img[data-v-67763bae]": {
+ "width": "375px",
+ "position": "absolute",
+ "left": "0",
+ "bottom": "0"
+ },
+
+ /*// 2 /////////////////////////////////////////////////*/
+ ".wrapper[data-v-16194ed9]": {
+ "color": "#353535"
+ },
+ ".point[data-v-16194ed9]": {
+ "position": "absolute"
+ },
+ ".banner[data-v-16194ed9]": {
+ "width": "375px"
+ },
+
+ /*// 3 /////////////////////////////////////////////////*/
+ ".wrapper[data-v-6acf469e]": {
+ "background-color": "transparent",
+ "-webkit-box-pack": "center",
+ "-webkit-justify-content": "center",
+ "-ms-flex-pack": "center",
+ "justify-content": "center",
+ "-webkit-box-align": "center",
+ "-webkit-align-items": "center",
+ "-ms-flex-align": "center",
+ "align-items": "center",
+ "padding-bottom": "9px"
+ },
+ ".items-wrapper[data-v-6acf469e]": {
+ "width": "357.5px"
+ },
+ ".row[data-v-6acf469e]": {
+ "-webkit-box-orient": "horizontal",
+ "-webkit-box-direction": "normal",
+ "-webkit-flex-direction": "row",
+ "-ms-flex-direction": "row",
+ "flex-direction": "row"
+ },
+
+ /*// 4 /////////////////////////////////////////////////*/
+ ".item[data-v-553d6ea0]": {
+ "width": "178px",
+ "height": "118px",
+ "background-color": "#ffffff",
+ "margin-bottom": "1px"
+ },
+ ".bgImage[data-v-553d6ea0]": {
+ "position": "absolute",
+ "width": "178px",
+ "height": "118px"
+ },
+ ".img[data-v-553d6ea0]": {
+ "position": "absolute",
+ "width": "90px",
+ "height": "90px",
+ "top": "14px",
+ "left": "3px"
+ },
+ ".right-panel[data-v-553d6ea0]": {
+ "position": "absolute",
+ "left": "98px",
+ "width": "75px",
+ "lines": "1",
+ "text-overflow": "ellipsis",
+ "white-space": "nowrap",
+ "display": "inline-block",
+ "overflow": "hidden"
+ },
+ ".title[data-v-553d6ea0]": {
+ "font-weight": "bold",
+ "font-size": "12px"
+ },
+ ".title-goods[data-v-553d6ea0]": {
+ "top": "22px"
+ },
+ ".title-shop[data-v-553d6ea0]": {
+ "top": "40px"
+ },
+ ".subtitle[data-v-553d6ea0]": {
+ "font-weight": "lighter",
+ "font-size": "12px",
+ "color": "#4A4A4A"
+ },
+ ".subtitle-goods[data-v-553d6ea0]": {
+ "top": "43px"
+ },
+ ".subtitle-shop[data-v-553d6ea0]": {
+ "top": "61px"
+ },
+ ".price[data-v-553d6ea0]": {
+ "font-weight": "lighter",
+ "font-size": "14px",
+ "top": "76px"
+ },
+
+ /*// 5 /////////////////////////////////////////////////*/
+ ".wrapper[data-v-2c9fb3eb]": {
+ "background-color": "transparent"
+ },
+ ".cell-wrap[data-v-2c9fb3eb]": {},
+ ".like-row[data-v-2c9fb3eb]": {
+ "width": "375px",
+ "padding-left": "9px",
+ "padding-right": "9px",
+ "margin-bottom": "9px",
+ "box-sizing": "border-box",
+ "-webkit-box-orient": "horizontal",
+ "-webkit-box-direction": "normal",
+ "-webkit-flex-direction": "row",
+ "-ms-flex-direction": "row",
+ "flex-direction": "row",
+ "-webkit-box-pack": "justify",
+ "-webkit-justify-content": "space-between",
+ "-ms-flex-pack": "justify",
+ "justify-content": "space-between"
+ },
+ ".like-item[data-v-2c9fb3eb]": {
+ "box-sizing": "border-box",
+ "width": "174px",
+ "height": "250px",
+ "padding-left": "7px",
+ "padding-right": "7px",
+ "background-color": "#ffffff"
+ },
+ ".item-img[data-v-2c9fb3eb]": {
+ "margin-left": "-7px",
+ "width": "174px",
+ "height": "174px"
+ },
+ ".title-ctn[data-v-2c9fb3eb]": {
+ "margin-top": "12px"
+ },
+ ".badge[data-v-2c9fb3eb]": {
+ "position": "absolute",
+ "top": "2px",
+ "left": "0px",
+ "width": "26px",
+ "height": "13px",
+ "margin-right": "4px"
+ },
+ ".title[data-v-2c9fb3eb]": {
+ "width": "162px",
+ "font-size": "12px",
+ "line-height": "15px",
+ "color": "#333333",
+ "overflow": "hidden",
+ "text-overflow": "ellipsis",
+ "lines": "2"
+ },
+ ".sub-title[data-v-2c9fb3eb]": {
+ "position": "absolute",
+ "bottom": "11px",
+ "right": "6px",
+ "font-size": "10px",
+ "line-height": "9px",
+ "height": "14px",
+ "padding-top": "1.5px",
+ "padding-left": "3px",
+ "padding-right": "3px",
+ "text-align": "center",
+ "color": "#F70E50",
+ "border-radius": "3px",
+ "border-width": "1px",
+ "overflow": "hidden",
+ "text-overflow": "ellipsis",
+ "lines": "1"
+ },
+ ".sub-title-bg[data-v-2c9fb3eb]": {
+ "position": "absolute",
+ "bottom": "11px",
+ "right": "6px",
+ "font-size": "10px",
+ "line-height": "9px",
+ "height": "14px",
+ "padding-left": "3px",
+ "padding-right": "3px",
+ "text-align": "center",
+ "border-radius": "3px",
+ "border-width": "1px",
+ "overflow": "hidden",
+ "text-overflow": "ellipsis",
+ "lines": "1",
+ "border-color": "transparent",
+ "color": "transparent",
+ "opacity": "0.15"
+ },
+ ".price-ctn[data-v-2c9fb3eb]": {
+ "position": "absolute",
+ "bottom": "11px",
+ "left": "6px",
+ "-webkit-box-orient": "horizontal",
+ "-webkit-box-direction": "normal",
+ "-webkit-flex-direction": "row",
+ "-ms-flex-direction": "row",
+ "flex-direction": "row",
+ "-webkit-box-align": "center",
+ "-webkit-align-items": "center",
+ "-ms-flex-align": "center",
+ "align-items": "center"
+ },
+ ".price-title[data-v-2c9fb3eb]": {
+ "font-size": "12px"
+ },
+ ".price-unit[data-v-2c9fb3eb]": {
+ "font-size": "12px",
+ "color": "#E71A17"
+ },
+ ".price-num[data-v-2c9fb3eb]": {
+ "margin-left": "-1px",
+ "color": "#E71A17",
+ "font-size": "15px",
+ "font-weight": "bold"
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/helper.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper.js b/html5/test/render/vue/helper.js
deleted file mode 100644
index 26daac0..0000000
--- a/html5/test/render/vue/helper.js
+++ /dev/null
@@ -1,140 +0,0 @@
-import '../../../render/vue/styles/reset.css'
-import '../../../render/vue/styles/components.css'
-
-import '../../../render/browser/render/gesture'
-
-/* istanbul ignore next */
-import '../../../shared/arrayFrom'
-/* istanbul ignore next */
-import '../../../shared/objectAssign'
-/* istanbul ignore next */
-import '../../../shared/objectSetPrototypeOf'
-
-/* istanbul ignore next */
-import 'core-js/modules/es6.object.to-string'
-/* istanbul ignore next */
-import 'core-js/modules/es6.string.iterator'
-/* istanbul ignore next */
-import 'core-js/modules/web.dom.iterable'
-/* istanbul ignore next */
-import 'core-js/modules/es6.promise'
-
-/* istanbul ignore next */
-import Vue from 'vue/dist/vue.esm.js'
-// import { base, scrollable, style, inputCommon } from '../../../render/vue/mixins'
-import { base, style } from '../../../render/vue/mixins'
-import weex from '../../../render/vue/env/weex'
-
-/**
- * functional tools exported by helper.utils.
- */
-const utils = {
- toArray (list) {
- if (!list) return []
- return Array.prototype.slice.call(list)
- }
-}
-
-/**
- * Describe tests for current versions of Vue.
- */
-export function init (title, fn) {
- return describe(title, () => {
- let components = {}
-
- before(function () {
- const htmlRegex = /^html:/i
- Vue.config.isReservedTag = tag => htmlRegex.test(tag)
- Vue.config.parsePlatformTagName = tag => tag.replace(htmlRegex, '')
-
- Vue.mixin(base)
- Vue.mixin(style)
-
- window.global = window
- global.weex = weex
- })
-
- const helper = {
-
- utils,
- /**
- * register a component.
- * @param {string} name,
- * @param {object} component.
- */
- register (name, component) {
- components[name] = component
- },
-
- /**
- * reset registered components with empty object.
- */
- reset () {
- components = {}
- },
-
- /**
- * create a vm instance of Vue.
- * @param {Object} options.
- * @return {Vue} vue instance.
- */
- createVm (options = {}) {
- options.components = components
- return new Vue(options).$mount()
- },
-
- /**
- * [compile description]
- * @param {[type]} template [description]
- * @return {[type]} [description]
- */
- compile (template) {
- return helper.createVm({ template })
- }
- }
-
- /**
- * describe a vue-render test for certain vue verson.
- */
- describe(`Vue ${Vue.version}`, () => {
- after(function () {
- helper.reset()
- })
-
- fn(Vue, helper)
- })
- })
-}
-
-// import vue200 from './vender/vue-2.0.0.js'
-// import vue210 from './vender/vue-2.1.0.js'
-// const Vues = [
-// vue200,
-// vue210
-// ]
-/**
- * Describe tests for multiple versions of Vue.
- */
-// export function multiDescribe (title, fn) {
-// return describe(title, () => {
-// Vues.forEach(Vue => {
-// let components = {}
-// Vue.config.isReservedTag = function () { return false }
-// describe(`Vue ${Vue.version}`, () => fn(Vue, {
-// register (name, component) {
-// components[name] = component
-// },
-// reset () {
-// components = {}
-// },
-// createVm (options = {}) {
-// options.components = components
-// return new Vue(options).$mount()
-// },
-// compile (template) {
-// return this.createVm({ template })
-// }
-// }))
-// })
-// })
-// }
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/helper/env.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper/env.js b/html5/test/render/vue/helper/env.js
new file mode 100644
index 0000000..d972c0e
--- /dev/null
+++ b/html5/test/render/vue/helper/env.js
@@ -0,0 +1,20 @@
+import '../../../../render/vue/styles/reset.css'
+import '../../../../render/vue/styles/base.css'
+
+import '../../../../render/browser/render/gesture'
+
+/* istanbul ignore next */
+import '../../../../shared/arrayFrom'
+/* istanbul ignore next */
+import '../../../../shared/objectAssign'
+/* istanbul ignore next */
+import '../../../../shared/objectSetPrototypeOf'
+
+/* istanbul ignore next */
+import 'core-js/modules/es6.object.to-string'
+/* istanbul ignore next */
+import 'core-js/modules/es6.string.iterator'
+/* istanbul ignore next */
+import 'core-js/modules/web.dom.iterable'
+/* istanbul ignore next */
+import 'core-js/modules/es6.promise'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/helper/index.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper/index.js b/html5/test/render/vue/helper/index.js
new file mode 100644
index 0000000..425aa5c
--- /dev/null
+++ b/html5/test/render/vue/helper/index.js
@@ -0,0 +1,113 @@
+import './env'
+
+/* istanbul ignore next */
+import Vue from 'vue/dist/vue.esm.js'
+// import { base, scrollable, style, inputCommon } from '../../../render/vue/mixins'
+import { base, style } from '../../../../render/vue/mixins'
+import weex from '../../../../render/vue/env/weex'
+
+import * as utils from './utils'
+
+/**
+ * Describe tests for current versions of Vue.
+ */
+export function init (title, fn) {
+ return describe(title, () => {
+ let components = {}
+
+ before(function () {
+ const htmlRegex = /^html:/i
+ Vue.config.isReservedTag = tag => htmlRegex.test(tag)
+ Vue.config.parsePlatformTagName = tag => tag.replace(htmlRegex, '')
+
+ Vue.mixin(base)
+ Vue.mixin(style)
+
+ window.global = window
+ global.weex = weex
+ })
+
+ const helper = {
+
+ utils,
+ /**
+ * register a component.
+ * @param {string} name,
+ * @param {object} component.
+ */
+ register (name, component) {
+ components[name] = component
+ },
+
+ /**
+ * reset registered components with empty object.
+ */
+ reset () {
+ components = {}
+ },
+
+ /**
+ * create a vm instance of Vue.
+ * @param {Object} options.
+ * @return {Vue} vue instance.
+ */
+ createVm (options = {}) {
+ options.components = components
+ return new Vue(options).$mount()
+ },
+
+ /**
+ * [compile description]
+ * @param {[type]} template [description]
+ * @return {[type]} [description]
+ */
+ compile (template) {
+ return helper.createVm({ template })
+ }
+ }
+
+ /**
+ * describe a vue-render test for certain vue verson.
+ */
+ describe(`Vue ${Vue.version}`, () => {
+ after(function () {
+ helper.reset()
+ })
+
+ fn(Vue, helper)
+ })
+ })
+}
+
+// import vue200 from './vender/vue-2.0.0.js'
+// import vue210 from './vender/vue-2.1.0.js'
+// const Vues = [
+// vue200,
+// vue210
+// ]
+/**
+ * Describe tests for multiple versions of Vue.
+ */
+// export function multiDescribe (title, fn) {
+// return describe(title, () => {
+// Vues.forEach(Vue => {
+// let components = {}
+// Vue.config.isReservedTag = function () { return false }
+// describe(`Vue ${Vue.version}`, () => fn(Vue, {
+// register (name, component) {
+// components[name] = component
+// },
+// reset () {
+// components = {}
+// },
+// createVm (options = {}) {
+// options.components = components
+// return new Vue(options).$mount()
+// },
+// compile (template) {
+// return this.createVm({ template })
+// }
+// }))
+// })
+// })
+// }
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/helper/runtime.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper/runtime.js b/html5/test/render/vue/helper/runtime.js
new file mode 100644
index 0000000..6f5ea17
--- /dev/null
+++ b/html5/test/render/vue/helper/runtime.js
@@ -0,0 +1,80 @@
+import './env'
+
+/* istanbul ignore next */
+import Vue from 'vue/dist/vue.runtime.esm.js'
+// import { base, scrollable, style, inputCommon } from '../../../render/vue/mixins'
+import { base, style } from '../../../../render/vue/mixins'
+import weex from '../../../../render/vue/env/weex'
+
+import * as utils from './utils'
+
+/**
+ * Describe tests for current versions of Vue.
+ */
+export function init (title, fn) {
+ return describe(title, () => {
+ let components = {}
+
+ before(function () {
+ const htmlRegex = /^html:/i
+ Vue.config.isReservedTag = tag => htmlRegex.test(tag)
+ Vue.config.parsePlatformTagName = tag => tag.replace(htmlRegex, '')
+
+ Vue.mixin(base)
+ Vue.mixin(style)
+
+ window.global = window
+ global.weex = weex
+ })
+
+ const helper = {
+
+ utils,
+ /**
+ * register a component.
+ * @param {string} name,
+ * @param {object} component.
+ */
+ register (name, component) {
+ components[name] = component
+ },
+
+ /**
+ * reset registered components with empty object.
+ */
+ reset () {
+ components = {}
+ },
+
+ /**
+ * create a vm instance of Vue.
+ * @param {Object} options.
+ * @return {Vue} vue instance.
+ */
+ createVm (options = {}) {
+ options.components = components
+ return new Vue(options).$mount()
+ },
+
+ /**
+ * [compile description]
+ * @param {[type]} template [description]
+ * @return {[type]} [description]
+ */
+ compile (template) {
+ return helper.createVm({ template })
+ }
+ }
+
+ /**
+ * describe a vue-render test for certain vue verson.
+ */
+ describe(`Vue ${Vue.version}`, () => {
+ after(function () {
+ helper.reset()
+ })
+
+ fn(Vue, helper)
+ })
+ })
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/helper/utils.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper/utils.js b/html5/test/render/vue/helper/utils.js
new file mode 100644
index 0000000..11b2319
--- /dev/null
+++ b/html5/test/render/vue/helper/utils.js
@@ -0,0 +1,8 @@
+/**
+ * @fileOverview utils for tests.
+ */
+
+export function toArray (list) {
+ if (!list) return []
+ return Array.prototype.slice.call(list)
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/utils.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/utils.js b/html5/test/render/vue/utils.js
deleted file mode 100644
index 0a38e32..0000000
--- a/html5/test/render/vue/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import * as utils from '../../../render/vue/utils'
-
-describe('utils', function () {
- it('cached', () => {
- expect(utils.cached).to.be.a('function')
- })
-
- it('camelize', () => {
- const { camelize } = utils
- expect(camelize).to.be.a('function')
- expect(camelize('')).to.be.equal('')
- expect(camelize('dispaly')).to.be.equal('dispaly')
- expect(camelize('-webkit-transform')).to.be.equal('WebkitTransform')
- expect(camelize('text-overflow')).to.be.equal('textOverflow')
- expect(camelize('a-b-c-d')).to.be.equal('aBCD')
- })
-
- it('capitalize', () => {
- const { capitalize } = utils
- expect(capitalize).to.be.a('function')
- expect(capitalize('')).to.be.equal('')
- expect(capitalize('string')).to.be.equal('String')
- expect(capitalize('string object')).to.be.equal('String object')
- expect(capitalize('[string object]')).to.be.equal('[string object]')
- expect(capitalize('I have an apple')).to.be.equal('I have an apple')
- })
-
- it('hyphenate', () => {
- const { hyphenate } = utils
- expect(hyphenate).to.be.a('function')
- expect(hyphenate('')).to.be.equal('')
- expect(hyphenate('dispaly')).to.be.equal('dispaly')
- expect(hyphenate('WebkitTransform')).to.be.equal('webkit-transform')
- expect(hyphenate('textOverflow')).to.be.equal('text-overflow')
- expect(hyphenate('aBCD')).to.be.equal('a-b-c-d')
- })
-
- it('extend', () => {
- const { extend } = utils
- expect(extend).to.be.a('function')
-
- const abc = { name: 'abc' }
- expect(extend(abc)).to.deep.equal(abc)
- expect(extend(abc, { name: 'x' }) === abc).to.be.true
- expect(abc).to.deep.equal({ name: 'x' })
- })
-})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38f1a971/html5/test/render/vue/utils/func.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/utils/func.js b/html5/test/render/vue/utils/func.js
new file mode 100644
index 0000000..17341f6
--- /dev/null
+++ b/html5/test/render/vue/utils/func.js
@@ -0,0 +1,50 @@
+import * as utils from '../../../../render/vue/utils'
+
+describe('utils', function () {
+ describe('function', function () {
+ it('cached', function () {
+ expect(utils.cached).to.be.a('function')
+ })
+
+ it('camelize', function () {
+ const { camelize } = utils
+ expect(camelize).to.be.a('function')
+ expect(camelize('')).to.be.equal('')
+ expect(camelize('dispaly')).to.be.equal('dispaly')
+ expect(camelize('-webkit-transform')).to.be.equal('WebkitTransform')
+ expect(camelize('text-overflow')).to.be.equal('textOverflow')
+ expect(camelize('a-b-c-d')).to.be.equal('aBCD')
+ })
+
+ it('capitalize', function () {
+ const { capitalize } = utils
+ expect(capitalize).to.be.a('function')
+ expect(capitalize('')).to.be.equal('')
+ expect(capitalize('string')).to.be.equal('String')
+ expect(capitalize('string object')).to.be.equal('String object')
+ expect(capitalize('[string object]')).to.be.equal('[string object]')
+ expect(capitalize('I have an apple')).to.be.equal('I have an apple')
+ })
+
+ it('hyphenate', function () {
+ const { hyphenate } = utils
+ expect(hyphenate).to.be.a('function')
+ expect(hyphenate('')).to.be.equal('')
+ expect(hyphenate('dispaly')).to.be.equal('dispaly')
+ expect(hyphenate('WebkitTransform')).to.be.equal('webkit-transform')
+ expect(hyphenate('textOverflow')).to.be.equal('text-overflow')
+ expect(hyphenate('aBCD')).to.be.equal('a-b-c-d')
+ })
+
+ it('extend', function () {
+ const { extend } = utils
+ expect(extend).to.be.a('function')
+
+ const abc = { name: 'abc' }
+ expect(extend(abc)).to.deep.equal(abc)
+ expect(extend(abc, { name: 'x' }) === abc).to.be.true
+ expect(abc).to.deep.equal({ name: 'x' })
+ })
+ })
+
+})
[09/23] incubator-weex git commit: * [html5] add tests for removing
scoped stylesheet nodes.
Posted by so...@apache.org.
* [html5] add tests for removing scoped stylesheet nodes.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/501c85fa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/501c85fa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/501c85fa
Branch: refs/heads/0.12-dev
Commit: 501c85fa864eeb575872f46204a6f2e4d8a61eb1
Parents: e8ab269
Author: MrRaindrop <te...@gmail.com>
Authored: Thu Apr 6 23:05:44 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Thu Apr 6 23:05:44 2017 +0800
----------------------------------------------------------------------
html5/render/vue/core/style.js | 25 ++++++--
html5/test/render/vue/components/switch.js | 4 --
html5/test/render/vue/components/text.js | 4 --
html5/test/render/vue/components/web.js | 4 --
html5/test/render/vue/core/scope-style-map.js | 70 ++++++++++++++++++++--
html5/test/render/vue/core/style.js | 16 ++++-
html5/test/render/vue/helper/index.js | 21 +++----
html5/test/render/vue/helper/runtime.js | 18 +++---
package.json | 2 +-
packages/weex-vue-render/package.json | 2 +-
10 files changed, 120 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501c85fa/html5/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/style.js b/html5/render/vue/core/style.js
index 09357cf..d5b5d83 100644
--- a/html5/render/vue/core/style.js
+++ b/html5/render/vue/core/style.js
@@ -19,9 +19,17 @@ export function getHeadStyleMap () {
const needToRemoveStyleSheetNodes = []
const res = Array.from(document.styleSheets || [])
.reduce((pre, styleSheet) => {
- // why not using styleSheet.rules || styleSheet.cssRules to get css rules ?
- // because weex's components defined non-standard style attributes, which is
- // auto ignored when access rule.cssText.
+ /**
+ * why not using styleSheet.rules || styleSheet.cssRules to get css rules ?
+ * because weex's components defined non-standard style attributes, which is
+ * auto ignored when access rule.cssText.
+ */
+ if (!styleSheet.cssRules) {
+ /**
+ * no rules. just ignore this. probably a link stylesheet.
+ */
+ return pre
+ }
const strArr = trimComment(styleSheet.ownerNode.textContent.trim()).split(/}/)
const len = strArr.length
const rules = []
@@ -77,9 +85,14 @@ export function getHeadStyleMap () {
needToRemoveStyleSheetNodes.push(styleSheet.ownerNode)
return pre
}, {})
- needToRemoveStyleSheetNodes.forEach(function (node) {
- node.parentNode.removeChild(node)
- })
+ if (!window._no_remove_style_sheets) {
+ needToRemoveStyleSheetNodes.forEach(function (node) {
+ node.parentNode.removeChild(node)
+ })
+ }
+ else if (process.env.NODE_ENV === 'development') {
+ console.warn(`[vue-render] you've defined '_no_remove_style_sheets' and the v-data-xx stylesheets will not be removed.`)
+ }
if (process.env.NODE_ENV === 'development') {
tagEnd('getHeadStyleMap')
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501c85fa/html5/test/render/vue/components/switch.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/components/switch.js b/html5/test/render/vue/components/switch.js
index 2c892f3..36d8d1c 100644
--- a/html5/test/render/vue/components/switch.js
+++ b/html5/test/render/vue/components/switch.js
@@ -8,10 +8,6 @@ init('<switch> component', (Vue, helper) => {
helper.register('switch', _switch)
})
- after(() => {
- helper.reset()
- })
-
it('simple <switch> component', () => {
const vm = compile(`<switch></switch>`)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501c85fa/html5/test/render/vue/components/text.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/components/text.js b/html5/test/render/vue/components/text.js
index 4f5ff94..13e661f 100644
--- a/html5/test/render/vue/components/text.js
+++ b/html5/test/render/vue/components/text.js
@@ -9,10 +9,6 @@ init('<text> component', (Vue, helper) => {
helper.register('text', text)
})
- after(() => {
- helper.reset()
- })
-
it('create simple text component', () => {
const vm = compile(`<text>abc</text>`)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501c85fa/html5/test/render/vue/components/web.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/components/web.js b/html5/test/render/vue/components/web.js
index 642bd4a..ca61f0a 100644
--- a/html5/test/render/vue/components/web.js
+++ b/html5/test/render/vue/components/web.js
@@ -7,10 +7,6 @@ init('<web> component', (Vue, helper) => {
helper.register('web', web)
})
- after(() => {
- helper.reset()
- })
-
it('simple <web> component', () => {
const vm = compile(`<web></web>`)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501c85fa/html5/test/render/vue/core/scope-style-map.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/core/scope-style-map.js b/html5/test/render/vue/core/scope-style-map.js
index 2ead7e8..8968687 100644
--- a/html5/test/render/vue/core/scope-style-map.js
+++ b/html5/test/render/vue/core/scope-style-map.js
@@ -1,16 +1,78 @@
-import {
- getHeadStyleMap
-} from '../../../../render/vue/core/style'
+import { getHeadStyleMap } from '../../../../render/vue/core/style'
import '../data/head-css'
import headMap from '../data/head-map'
-describe('style map', (Vue, helper) => {
+function toArray (arr) {
+ return Array.prototype.slice.call(arr)
+}
+
+function getVStyleSheetNodes () {
+ const regVStyleSheets = /((?:,?\s*\.[\w-]+\[data-v-\w+\](?::\w+)?)+)\s*({[^}]+)/
+ const nodes = toArray(document.styleSheets)
+ .filter(function (styleSheet) {
+ return regVStyleSheets.test(styleSheet.ownerNode.textContent)
+ }).map(function (styleSheet) {
+ return styleSheet.ownerNode
+ })
+ return nodes
+}
+
+function getStyleSheetNodes () {
+ return toArray(document.styleSheets)
+ .map(function (styleSheet) {
+ return styleSheet.ownerNode
+ })
+}
+
+describe('style map', () => {
+
+ let styleSheetNodes
+
+ before(function () {
+ styleSheetNodes = getStyleSheetNodes()
+ })
+
it('should get head style map.', () => {
+ /**
+ * before get style map.
+ */
+ const vStyleSheetNodes = getVStyleSheetNodes()
+ const allNodes = getStyleSheetNodes()
+ const vNodesExisted = vStyleSheetNodes.filter(function (node) {
+ return allNodes.indexOf(node) > -1
+ })
+ expect(vNodesExisted).to.have.members(vStyleSheetNodes)
+
+ /**
+ * get style map.
+ */
+ window._no_remove_style_sheets = false
const styleMap = getHeadStyleMap()
+ window._no_remove_style_sheets = true
+
+ /**
+ * after get style map.
+ */
for (const key in headMap) {
const expected = headMap[key]
const result = styleMap[key]
+ debugger;
expect(expected).be.deep.equal(result)
}
+
+ const nowStyleSheetNodes = getStyleSheetNodes()
+ const vNodesLeft = vStyleSheetNodes.filter(function (node) {
+ return nowStyleSheetNodes.indexOf(node) > -1
+ })
+ expect(vNodesLeft).to.have.lengthOf(0)
+ })
+
+ after(function () {
+ const nodes = getStyleSheetNodes()
+ styleSheetNodes.forEach(function (node) {
+ if (nodes.indexOf(node) === -1) {
+ document.head.appendChild(node)
+ }
+ })
})
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501c85fa/html5/test/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/core/style.js b/html5/test/render/vue/core/style.js
index 4b6b88f..cacdd57 100644
--- a/html5/test/render/vue/core/style.js
+++ b/html5/test/render/vue/core/style.js
@@ -11,10 +11,24 @@ import { init as initViewport, resetViewport } from '../../../../render/vue/env/
import scopedStyleBundle from '../data/build/dotvue/scoped-style'
+function toArray (arr) {
+ return Array.prototype.slice.call(arr)
+}
+
+function getVStyleSheetNodes () {
+ const regVStyleSheets = /((?:,?\s*\.[\w-]+\[data-v-\w+\](?::\w+)?)+)\s*({[^}]+)/
+ const nodes = toArray(document.styleSheets)
+ .filter(function (styleSheet) {
+ return regVStyleSheets.test(styleSheet.ownerNode.textContent)
+ }).map(function (styleSheet) {
+ return styleSheet.ownerNode
+ })
+ return nodes
+}
+
init('core style', (Vue, helper) => {
const { compile, utils } = helper
const { scale } = initViewport()
-
before(() => {
helper.register('div', div)
helper.register('image', image)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501c85fa/html5/test/render/vue/helper/index.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper/index.js b/html5/test/render/vue/helper/index.js
index 425aa5c..e89ac86 100644
--- a/html5/test/render/vue/helper/index.js
+++ b/html5/test/render/vue/helper/index.js
@@ -5,6 +5,7 @@ import Vue from 'vue/dist/vue.esm.js'
// import { base, scrollable, style, inputCommon } from '../../../render/vue/mixins'
import { base, style } from '../../../../render/vue/mixins'
import weex from '../../../../render/vue/env/weex'
+import { setVue } from '../../../../render/vue/env'
import * as utils from './utils'
@@ -23,8 +24,12 @@ export function init (title, fn) {
Vue.mixin(base)
Vue.mixin(style)
+ setVue(Vue)
+
window.global = window
global.weex = weex
+
+ window._no_remove_style_sheets = true
})
const helper = {
@@ -36,14 +41,8 @@ export function init (title, fn) {
* @param {object} component.
*/
register (name, component) {
- components[name] = component
- },
-
- /**
- * reset registered components with empty object.
- */
- reset () {
- components = {}
+ global.weex.registerComponent(name, component)
+ // components[name] = component
},
/**
@@ -52,7 +51,7 @@ export function init (title, fn) {
* @return {Vue} vue instance.
*/
createVm (options = {}) {
- options.components = components
+ // options.components = components
return new Vue(options).$mount()
},
@@ -70,10 +69,6 @@ export function init (title, fn) {
* describe a vue-render test for certain vue verson.
*/
describe(`Vue ${Vue.version}`, () => {
- after(function () {
- helper.reset()
- })
-
fn(Vue, helper)
})
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501c85fa/html5/test/render/vue/helper/runtime.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper/runtime.js b/html5/test/render/vue/helper/runtime.js
index 6f5ea17..319fd20 100644
--- a/html5/test/render/vue/helper/runtime.js
+++ b/html5/test/render/vue/helper/runtime.js
@@ -5,6 +5,7 @@ import Vue from 'vue/dist/vue.runtime.esm.js'
// import { base, scrollable, style, inputCommon } from '../../../render/vue/mixins'
import { base, style } from '../../../../render/vue/mixins'
import weex from '../../../../render/vue/env/weex'
+import { setVue } from '../../../../render/vue/env'
import * as utils from './utils'
@@ -23,8 +24,12 @@ export function init (title, fn) {
Vue.mixin(base)
Vue.mixin(style)
+ setVue(Vue)
+
window.global = window
global.weex = weex
+
+ window._no_remove_style_sheets = true
})
const helper = {
@@ -36,15 +41,16 @@ export function init (title, fn) {
* @param {object} component.
*/
register (name, component) {
+ global.weex.registerComponent(name, component)
components[name] = component
},
/**
* reset registered components with empty object.
*/
- reset () {
- components = {}
- },
+ // reset () {
+ // components = {}
+ // },
/**
* create a vm instance of Vue.
@@ -52,7 +58,7 @@ export function init (title, fn) {
* @return {Vue} vue instance.
*/
createVm (options = {}) {
- options.components = components
+ // options.components = components
return new Vue(options).$mount()
},
@@ -70,10 +76,6 @@ export function init (title, fn) {
* describe a vue-render test for certain vue verson.
*/
describe(`Vue ${Vue.version}`, () => {
- after(function () {
- helper.reset()
- })
-
fn(Vue, helper)
})
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501c85fa/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index d5736c7..94d1027 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"subversion": {
"browser": "0.5.0",
"framework": "0.19.17",
- "vue-render": "0.11.4",
+ "vue-render": "0.11.5",
"transformer": ">=0.1.5 <0.5"
},
"description": "A framework for building Mobile cross-platform UI",
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501c85fa/packages/weex-vue-render/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-render/package.json b/packages/weex-vue-render/package.json
index 81ddff0..9e28dc2 100644
--- a/packages/weex-vue-render/package.json
+++ b/packages/weex-vue-render/package.json
@@ -1,6 +1,6 @@
{
"name": "weex-vue-render",
- "version": "0.11.4",
+ "version": "0.11.5",
"description": "Weex built-in components for Vue 2.x.",
"license": "Apache-2.0",
"main": "src/render/vue/index.js",
[22/23] incubator-weex git commit: Merge branch '0.11-dev' into
0.12-dev
Posted by so...@apache.org.
Merge branch '0.11-dev' into 0.12-dev
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/b932600a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/b932600a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/b932600a
Branch: refs/heads/0.12-dev
Commit: b932600a8f79b3ad9a75ca9be9c94a24e8e5811d
Parents: 102e37d bbb120d
Author: sospartan <so...@apache.org>
Authored: Thu Apr 13 10:31:21 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Thu Apr 13 10:31:21 2017 +0800
----------------------------------------------------------------------
.eslintignore | 1 +
.gitignore | 2 +-
NOTICE | 8 +-
build/karma.vue.conf.js | 7 +-
build/webpack.examples.web.config.js | 31 +-
build/webpack.test.web.config.js | 81 +++
examples/vue/showcase/itemlist.vue | 11 +-
examples/vue/style/index.vue | 2 +-
.../npm/karma-rollup-preprocessor_vx.x.x.js | 53 ++
flow-typed/npm/karma-sinon-chai_vx.x.x.js | 38 ++
html5/render/vue/README.md | 24 +-
html5/render/vue/components/a.js | 18 +-
html5/render/vue/components/div.js | 18 +-
html5/render/vue/components/image.js | 25 +-
html5/render/vue/components/input.js | 18 +-
.../render/vue/components/scrollable/header.js | 6 +-
.../vue/components/scrollable/list/cell.js | 7 +-
.../vue/components/scrollable/list/index.js | 6 +-
.../vue/components/scrollable/list/style.js | 16 +
.../components/scrollable/loading-indicator.js | 44 +-
.../render/vue/components/scrollable/loading.js | 6 +-
.../render/vue/components/scrollable/refresh.js | 6 +-
.../vue/components/scrollable/scroller.js | 8 +-
html5/render/vue/components/slider/index.js | 37 +-
html5/render/vue/components/slider/indicator.js | 58 +-
html5/render/vue/components/switch.js | 67 ++-
html5/render/vue/components/text.js | 27 +-
html5/render/vue/components/textarea.js | 19 +-
html5/render/vue/components/video.js | 7 +-
html5/render/vue/components/web.js | 19 +-
html5/render/vue/core/index.js | 2 +
html5/render/vue/core/node.js | 28 +
html5/render/vue/core/style.js | 212 ++++++++
html5/render/vue/env/global.js | 11 +
html5/render/vue/env/index.js | 11 +-
html5/render/vue/env/viewport.js | 163 ++++--
html5/render/vue/env/weex.js | 9 +-
html5/render/vue/env/wx-env.js | 76 +--
html5/render/vue/index.js | 13 +-
html5/render/vue/mixins/base.js | 43 --
html5/render/vue/mixins/style.js | 142 +----
html5/render/vue/modules/animation.js | 7 +-
html5/render/vue/modules/dom.js | 5 +-
html5/render/vue/modules/index.js | 2 +-
html5/render/vue/modules/modal/index.js | 10 +-
html5/render/vue/modules/modal/style.js | 146 ++++++
html5/render/vue/styles/base.css | 194 +++++++
html5/render/vue/styles/components.css | 513 ------------------
html5/render/vue/utils/index.js | 36 +-
html5/render/vue/utils/style.js | 110 ++++
html5/test/render/vue/components/image.js | 4 +-
html5/test/render/vue/components/switch.js | 4 -
html5/test/render/vue/components/text.js | 4 -
html5/test/render/vue/components/web.js | 4 -
html5/test/render/vue/core/scope-style-map.js | 76 +++
html5/test/render/vue/core/style.js | 65 +++
.../vue/data/build/dotvue/scoped-style.js | 525 +++++++++++++++++++
html5/test/render/vue/data/css/head1.css | 38 ++
html5/test/render/vue/data/css/head10.css | 14 +
html5/test/render/vue/data/css/head11.css | 2 +
html5/test/render/vue/data/css/head12.css | 2 +
html5/test/render/vue/data/css/head13.css | 25 +
html5/test/render/vue/data/css/head2.css | 11 +
html5/test/render/vue/data/css/head3.css | 25 +
html5/test/render/vue/data/css/head4.css | 56 ++
html5/test/render/vue/data/css/head5.css | 153 ++++++
html5/test/render/vue/data/css/head6.css | 4 +
html5/test/render/vue/data/css/head7.css | 61 +++
html5/test/render/vue/data/css/head8.css | 507 ++++++++++++++++++
html5/test/render/vue/data/css/head9.css | 173 ++++++
.../render/vue/data/dotvue/scoped-style.vue | 13 +
html5/test/render/vue/data/head-css.js | 13 +
html5/test/render/vue/data/head-map.js | 275 ++++++++++
html5/test/render/vue/helper.js | 140 -----
html5/test/render/vue/helper/env.js | 20 +
html5/test/render/vue/helper/index.js | 73 +++
html5/test/render/vue/helper/runtime.js | 74 +++
html5/test/render/vue/helper/utils.js | 8 +
html5/test/render/vue/utils.js | 47 --
html5/test/render/vue/utils/func.js | 49 ++
html5/test/render/vue/utils/style.js | 68 +++
package.json | 7 +-
packages/weex-vue-render/README.md | 24 +-
packages/weex-vue-render/package.json | 2 +-
84 files changed, 3829 insertions(+), 1140 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/NOTICE
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/a.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/a.js
index e4c953c,83851b2..bf12d21
--- a/html5/render/vue/components/a.js
+++ b/html5/render/vue/components/a.js
@@@ -1,21 -1,11 +1,29 @@@
+/*
+ * 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.
+ */
+ import { extractComponentStyle, trimTextVNodes, createEventMap } from '../core'
+ // import { validateStyles } from '../validator'
+
+ const _css = `
+ .weex-a {
+ text-decoration: none;
+ }
+ `
export default {
name: 'weex-a',
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/div.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/div.js
index 3425476,bdc90d0..9811332
--- a/html5/render/vue/components/div.js
+++ b/html5/render/vue/components/div.js
@@@ -1,21 -1,11 +1,29 @@@
+/*
+ * 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.
+ */
+ // import { validateStyles } from '../validator'
+ import { extractComponentStyle, trimTextVNodes, createEventMap } from '../core'
+
+ const _css = `
+ body > .weex-div {
+ min-height: 100%;
+ }
+ `
export default {
name: 'weex-div',
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/image.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/image.js
index 5ee785c,b245338..39caa55
--- a/html5/render/vue/components/image.js
+++ b/html5/render/vue/components/image.js
@@@ -1,22 -1,12 +1,31 @@@
+/*
+ * 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.
+ */
+
+ import { extractComponentStyle, createEventMap } from '../core'
+ import { extend } from '../utils'
+
+ const _css = `
+ .weex-image, .weex-img {
+ background-repeat: no-repeat;
+ background-position: 50% 50%;
+ }
+ `
/**
* get resize (stetch|cover|contain) related styles.
*/
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/input.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/scrollable/header.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/scrollable/header.js
index f58962b,9fdeddb..9753209
--- a/html5/render/vue/components/scrollable/header.js
+++ b/html5/render/vue/components/scrollable/header.js
@@@ -1,22 -1,6 +1,23 @@@
-// import { validateStyles } from '../../validator'
+/*
+ * 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.
+ */
import { supportSticky } from '../../utils/style'
+ import { extractComponentStyle, createEventMap } from '../../core'
export default {
data () {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/scrollable/list/cell.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/scrollable/list/cell.js
index d3d6160,ab8910c..2f37f4a
--- a/html5/render/vue/components/scrollable/list/cell.js
+++ b/html5/render/vue/components/scrollable/list/cell.js
@@@ -1,21 -1,5 +1,23 @@@
+/*
+ * 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.
+ */
+ // import { validateStyles } from '../../../validator'
+ import { extractComponentStyle, createEventMap } from '../../../core'
export default {
render (createElement) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/scrollable/list/index.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/scrollable/list/index.js
index b920879,fc803c6..a5fceff
--- a/html5/render/vue/components/scrollable/list/index.js
+++ b/html5/render/vue/components/scrollable/list/index.js
@@@ -1,21 -1,4 +1,22 @@@
+/*
+ * 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.
+ */
+ import { extractComponentStyle, createEventMap } from '../../../core'
import { scrollable } from '../../../mixins'
// import { validateStyles } from '../../../validator'
import { extend } from '../../../utils'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/scrollable/loading-indicator.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/scrollable/loading-indicator.js
index e41edf2,b184cca..8d82eed
--- a/html5/render/vue/components/scrollable/loading-indicator.js
+++ b/html5/render/vue/components/scrollable/loading-indicator.js
@@@ -1,21 -1,40 +1,59 @@@
+/*
+ * 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.
+ */
+ import { extractComponentStyle } from '../../core'
+
+ const _css = `
+ .weex-refresh-indicator,
+ .weex-loading-indicator {
+ width: 1.0rem;
+ height: 1.0rem;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ overflow: visible;
+ background: none;
+ }
+ .weex-refresh-indicator:before,
+ .weex-loading-indicator:before {
+ display: block;
+ content: '';
+ font-size: 0.16rem;
+ width: 1em;
+ height: 1em;
+ left: -60%;
+ top: 40%;
+ border-radius: 50%;
+ position: relative;
+ text-indent: -9999em;
+ -webkit-animation: weex-spinner 1.1s infinite ease;
+ animation: weex-spinner 1.1s infinite ease;
+ -webkit-transform: translate3d(1.0rem, 0, 0);
+ transform: translate3d(1.0rem, 0, 0);
+ }
+ `
+
++>>>>>>> 0.11-dev
export default {
render (createElement) {
this.weexType = 'loading-indicator'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/scrollable/loading.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/scrollable/loading.js
index a8e07fa,8f01fde..e8bef52
--- a/html5/render/vue/components/scrollable/loading.js
+++ b/html5/render/vue/components/scrollable/loading.js
@@@ -1,21 -1,4 +1,22 @@@
+/*
+ * 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.
+ */
+ import { extractComponentStyle } from '../../core'
import LoadingIndicator from './loading-indicator'
export default {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/scrollable/refresh.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/scrollable/refresh.js
index 1093edf,1d941d4..a770095
--- a/html5/render/vue/components/scrollable/refresh.js
+++ b/html5/render/vue/components/scrollable/refresh.js
@@@ -1,21 -1,4 +1,22 @@@
+/*
+ * 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.
+ */
+ import { extractComponentStyle } from '../../core'
import LoadingIndicator from './loading-indicator'
import { createEvent } from '../../utils'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/scrollable/scroller.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/scrollable/scroller.js
index 67fe9ca,b56ef70..96ebc10
--- a/html5/render/vue/components/scrollable/scroller.js
+++ b/html5/render/vue/components/scrollable/scroller.js
@@@ -1,21 -1,4 +1,22 @@@
+/*
+ * 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.
+ */
+ import { extractComponentStyle, createEventMap } from '../../core'
import { scrollable } from '../../mixins'
// import { validateStyles } from '../../validator'
import { extend } from '../../utils'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/slider/index.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/slider/index.js
index 1523edf,b37b0a2..c5a1eeb
--- a/html5/render/vue/components/slider/index.js
+++ b/html5/render/vue/components/slider/index.js
@@@ -1,21 -1,5 +1,23 @@@
+/*
+ * 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.
+ */
+ // import { validateStyles } from '../../validator'
+ import { extractComponentStyle, createEventMap } from '../../core'
import { throttle, bind, extend, fireLazyload } from '../../utils'
import indicator from './indicator'
import slideMixin from './slideMixin'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/slider/indicator.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/slider/indicator.js
index ce9e45b,6722041..97388bb
--- a/html5/render/vue/components/slider/indicator.js
+++ b/html5/render/vue/components/slider/indicator.js
@@@ -1,27 -1,39 +1,57 @@@
+/*
+ * 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.
+ */
+ import { extractComponentStyle } from '../../core'
import { extend, extendKeys } from '../../utils'
+ const _css = `
+ .weex-indicator {
+ position: absolute;
+ z-index: 10;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-orient: horizontal;
+ margin: 0;
+ padding: 0;
+ }
+
+ .weex-indicator-item {
+ display: inline-block;
+ position: relative;
+ border-radius: 50%;
+ width: 0.266667rem;
+ height: 0.266667rem;
+ background-color: #BBBBBB;
+ }
+ .weex-indicator-item + .weex-indicator-item {
+ margin-left: 0.133333rem;
+ }
+
+ .weex-indicator-item-active {
+ background-color: blue;
+ }
+ `
+
function getIndicatorItemStyle (spec, isActive) {
const style = {}
- style['background-color'] = spec[isActive ? 'item-selected-color' : 'item-color']
- style['width'] = style['height'] = spec['item-size']
+ style['background-color'] = spec[isActive ? 'itemSelectedColor' : 'itemColor']
+ style['width'] = style['height'] = spec['itemSize']
return style
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/switch.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/switch.js
index 49b55af,cf904c3..426beb5
--- a/html5/render/vue/components/switch.js
+++ b/html5/render/vue/components/switch.js
@@@ -1,21 -1,62 +1,80 @@@
+/*
+ * 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.
+ */
+ // import { validateStyles } from '../validator'
+ import { extractComponentStyle } from '../core'
+
+ const _css = `
+ .weex-switch {
+ border: 0.013333rem solid #dfdfdf;
+ cursor: pointer;
+ display: inline-block;
+ position: relative;
+ vertical-align: middle;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: content-box;
+ background-clip: content-box;
+ color: #64bd63;
+ width: 1.333333rem;
+ height: 0.8rem;
+ background-color: white;
+ border-color: #dfdfdf;
+ box-shadow: #dfdfdf 0 0 0 0 inset;
+ border-radius: 0.8rem;
+ -webkit-transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
+ transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
+ }
+
+ .weex-switch-checked {
+ background-color: #64bd63;
+ border-color: #64bd63;
+ box-shadow: #64bd63 0 0 0 0.533333rem inset;
+ }
+
+ .weex-switch-checked.weex-switch-disabled {
+ background-color: #A0CCA0;
+ box-shadow: #A0CCA0 0 0 0 0.533333rem inset;
+ }
+
+ .weex-switch-disabled {
+ background-color: #EEEEEE;
+ }
+
+ .weex-switch-inner {
+ width: 0.8rem;
+ height: 0.8rem;
+ background: #fff;
+ border-radius: 100%;
+ box-shadow: 0 0.013333rem 0.04rem rgba(0, 0, 0, 0.4);
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-transition: background-color 0.4s, left 0.2s;
+ transition: background-color 0.4s, left 0.2s;
+ }
+
+ .weex-switch-checked > .weex-switch-inner {
+ left: 0.533333rem;
+ }
+ `
export default {
props: {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/text.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/textarea.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/textarea.js
index 65306f0,bc1ffdf..a1851ee
--- a/html5/render/vue/components/textarea.js
+++ b/html5/render/vue/components/textarea.js
@@@ -1,25 -1,18 +1,36 @@@
+/*
+ * 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.
+ */
+ import { extractComponentStyle, createEventMap } from '../core'
import { inputCommon } from '../mixins'
import { extend, mapFormEvents } from '../utils'
+
// import { validateStyles } from '../validator'
+ const _css = `
+ .weex-textarea {
+ font-size: 0.426667rem
+ }
+ .weex-textarea:focus {
+ outline: none;
+ }
+ `
+
export default {
mixins: [inputCommon],
props: {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/video.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/video.js
index 1031b5f,8c52672..b39bf4a
--- a/html5/render/vue/components/video.js
+++ b/html5/render/vue/components/video.js
@@@ -1,21 -1,5 +1,23 @@@
+/*
+ * 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.
+ */
+ // import { validateStyles } from '../validator'
+ import { extractComponentStyle, createEventMap } from '../core'
export default {
props: {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/components/web.js
----------------------------------------------------------------------
diff --cc html5/render/vue/components/web.js
index a17ec8a,9ae7d5f..1bf95a6
--- a/html5/render/vue/components/web.js
+++ b/html5/render/vue/components/web.js
@@@ -1,21 -1,4 +1,22 @@@
+/*
+ * 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.
+ */
+ import { extractComponentStyle, createEventMap } from '../core'
import { createEvent } from '../utils'
// import { validateStyles } from '../validator'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/env/index.js
----------------------------------------------------------------------
diff --cc html5/render/vue/env/index.js
index 2f4f41b,73f640e..c00b251
--- a/html5/render/vue/env/index.js
+++ b/html5/render/vue/env/index.js
@@@ -1,23 -1,5 +1,23 @@@
+/*
+ * 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.
+ */
import '../styles/reset.css'
- import '../styles/components.css'
+ import '../styles/base.css'
// import 'lazyimg'
import '../../browser/render/gesture'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/env/viewport.js
----------------------------------------------------------------------
diff --cc html5/render/vue/env/viewport.js
index 3384b43,5a80893..dda12ca
--- a/html5/render/vue/env/viewport.js
+++ b/html5/render/vue/env/viewport.js
@@@ -1,21 -1,6 +1,24 @@@
+/*
+ * 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.
+ */
+ // @flow
+
+ import { extend } from '../utils/func'
/**
* viewport priority:
@@@ -25,12 -10,41 +28,46 @@@
* 3. process.env.VIEWPORT_WIDTH (buid time)
*
*/
++<<<<<<< HEAD
+
+let viewportWidth = process.env.VIEWPORT_WIDTH
++=======
+ let isInited = false
+ const DEFAULT_VIEWPORT_WIDTH = 750
+
+ /**
+ * get viewport width from weex-viewport meta.
+ */
+ const envViewportWidth = parseInt(process.env.VIEWPORT_WIDTH)
+ let width: number = !isNaN(envViewportWidth) && envViewportWidth > 0
+ ? envViewportWidth
+ : DEFAULT_VIEWPORT_WIDTH
++>>>>>>> 0.11-dev
- const wxViewportMeta = document.querySelector('meta[name="weex-viewport"]')
+ let wxViewportMeta = document.querySelector('meta[name="weex-viewport"]')
const metaWidth = wxViewportMeta && parseInt(wxViewportMeta.getAttribute('content'))
- if (metaWidth && !isNaN(metaWidth) && metaWidth > 0) { viewportWidth = metaWidth }
+ if (metaWidth && !isNaN(metaWidth) && metaWidth > 0) {
+ width = metaWidth
+ }
+
+ let dpr: number = 0
+ let deRect: mixed = null
+ let screenWidth: number = 0
+ let screenHeight: number = 0
+
+ const info: {
+ dpr: number,
+ scale: number,
+ rem: number,
+ deviceWidth: number,
+ deviceHeight: number
+ } = {
+ dpr,
+ scale: 0,
+ rem: 0,
+ deviceWidth: 0,
+ deviceHeight: 0
+ }
/**
* set root font-size for rem units. If already been set, just skip this.
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/env/weex.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/env/wx-env.js
----------------------------------------------------------------------
diff --cc html5/render/vue/env/wx-env.js
index 68cddb2,011b412..47d1706
--- a/html5/render/vue/env/wx-env.js
+++ b/html5/render/vue/env/wx-env.js
@@@ -1,66 -1,52 +1,70 @@@
+/*
+ * 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.
+ */
import 'envd'
- import { setViewport } from './viewport'
+ import { init as initViewport } from './viewport'
import { extend } from '../utils'
- const scaleInfo = setViewport()
-
- const lib = window.lib
- const env = {
- platform: 'Web',
- // weexVersion: '0.10.0', // TODO: get version from package.json (not sure)
- weexVersion: 'process.env.WEEX_VERSION',
- userAgent: navigator.userAgent,
- appName: lib.env.aliapp ? lib.env.aliapp.appname : navigator.appName,
- appVersion: lib.env.aliapp ? lib.env.aliapp.version.val : null,
- osName: lib.env.browser ? lib.env.browser.name : null,
- osVersion: lib.env.browser ? lib.env.browser.version.val : null,
- deviceModel: lib.env.os.name || null
- }
-
/**
- * scaleInfo: scale, deviceWidth, deviceHeight.
+ * get WXEnvironment info.
+ * @param {object} viewportInfo: info about viewport.
+ * @param {object} envInfo: info parsed from lib.env.
*/
- extend(env, scaleInfo)
+ export function initEnv (viewportInfo, envInfo) {
+ const env = {
+ platform: 'Web',
+ weexVersion: 'process.env.WEEX_VERSION',
+ userAgent: navigator.userAgent,
+ appName: envInfo.aliapp ? envInfo.aliapp.appname : navigator.appName,
+ appVersion: envInfo.aliapp ? envInfo.aliapp.version.val : null,
+ osName: envInfo.browser ? envInfo.browser.name : null,
+ osVersion: envInfo.browser ? envInfo.browser.version.val : null,
+ deviceModel: envInfo.os.name || null
+ }
+ /**
+ * viewportInfo: scale, deviceWidth, deviceHeight. dpr
+ */
+ return extend(env, viewportInfo)
+ }
+
+ // const viewportInfo = initViewport()
// 750 by default currently
- const scale = env.scale
+ // const scale = viewportInfo.scale
- const units = {
- REM: 12 * scale,
- VW: env.deviceWidth / 100,
- VH: env.deviceHeight / 100,
- VMIN: Math.min(env.deviceWidth, env.deviceHeight) / 100,
- VMAX: Math.max(env.deviceWidth, env.deviceHeight) / 100,
- CM: 96 / 2.54 * scale,
- MM: 96 / 25.4 * scale,
- Q: 96 / 25.4 / 4 * scale,
- IN: 96 * scale,
- PT: 96 / 72 * scale,
- PC: 96 / 6 * scale,
- PX: scale
- }
+ // const units = {
+ // REM: 12 * scale,
+ // VW: viewportInfo.deviceWidth / 100,
+ // VH: viewportInfo.deviceHeight / 100,
+ // VMIN: Math.min(viewportInfo.deviceWidth, viewportInfo.deviceHeight) / 100,
+ // VMAX: Math.max(viewportInfo.deviceWidth, viewportInfo.deviceHeight) / 100,
+ // CM: 96 / 2.54 * scale,
+ // MM: 96 / 25.4 * scale,
+ // Q: 96 / 25.4 / 4 * scale,
+ // IN: 96 * scale,
+ // PT: 96 / 72 * scale,
+ // PC: 96 / 6 * scale,
+ // PX: scale
+ // }
- Object.freeze(units)
+ // Object.freeze(units)
// Object.freeze(env)
- window.CSS_UNIT = units
- window.WXEnvironment = env
+ // window.CSS_UNIT = units
+ window.WXEnvironment = initEnv(initViewport(), window.lib.env)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/index.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/mixins/base.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/mixins/style.js
----------------------------------------------------------------------
diff --cc html5/render/vue/mixins/style.js
index f7dc13e,1052501..8625537
--- a/html5/render/vue/mixins/style.js
+++ b/html5/render/vue/mixins/style.js
@@@ -1,85 -1,11 +1,29 @@@
+/*
+ * 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.
+ */
import {
- camelizeKeys,
- hyphenateKeys,
- extend,
- trimComment
- } from '../utils'
- import { tagBegin, tagEnd } from '../utils/perf'
- import addPrefix from 'inline-style-prefixer/static'
+ getHeadStyleMap,
+ getComponentStyle,
+ extractComponentStyle
+ } from '../core'
- function getHeadStyleMap () {
- if (process.env.NODE_ENV === 'development') {
- tagBegin('getHeadStyleMap')
- }
- const res = Array.from(document.styleSheets || [])
- .reduce((pre, styleSheet) => {
- // why not using styleSheet.rules || styleSheet.cssRules to get css rules ?
- // because weex's components defined non-standard style attributes, which is
- // auto ignored when access rule.cssText.
- const strArr = trimComment(styleSheet.ownerNode.textContent.trim()).split(/}/)
- const len = strArr.length
- const rules = []
- for (let i = 0; i < len; i++) {
- const str = strArr[i]
- if (!str || str.match(/^\s*$/)) {
- continue
- }
-
- const match = str.match(/((?:,?\s*\.[[\]\w-]+\s*)+)({[^}]+)/)
- if (!match) {
- // not the vue static class styles map. so acquire no rules for this styleSheet.
- // just jump through this styleSheet and go to analyzing next.
- return pre
- }
- const clsNms = match[1].split(',').map(n => n.trim())
- const cssText = match[2].replace(/[{}]/g, '').trim()
- let clsNmsIdx = 0
- const clsNmsLen = clsNms.length
- while (clsNmsIdx < clsNmsLen) {
- rules.push({
- selectorText: clsNms[clsNmsIdx],
- cssText
- })
- clsNmsIdx++
- }
- }
- Array.from(rules).forEach(rule => {
- const selector = rule.selectorText || ''
- pre[selector] = trimComment(rule.cssText).split(';')
- .reduce((styleObj, statement) => {
- statement = statement.trim()
- if (statement && statement.indexOf('/*') <= -1) {
- const resArr = statement.split(':').map((part) => part.trim())
- styleObj[resArr[0]] = resArr[1]
- }
- return styleObj
- }, {})
- })
- return pre
- }, {})
- if (process.env.NODE_ENV === 'development') {
- tagEnd('getHeadStyleMap')
- }
- return res
- }
+ let warned = false
+ const warnInfo = `[vue-render] after v0.11.3 there's no need to add $processStyle in vue-loader config anymore.`
export default {
beforeCreate () {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/modules/animation.js
----------------------------------------------------------------------
diff --cc html5/render/vue/modules/animation.js
index 99bc0cb,bfcc159..9efc4ba
--- a/html5/render/vue/modules/animation.js
+++ b/html5/render/vue/modules/animation.js
@@@ -1,22 -1,4 +1,22 @@@
+/*
+ * 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.
+ */
- import { nextFrame, toCSSText } from '../utils'
+ import { nextFrame, toCSSText, autoPrefix, camelizeKeys, normalizeStyle } from '../utils'
function transitionOnce (vnode, config, callback) {
const duration = config.duration || 1000 // ms
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/modules/dom.js
----------------------------------------------------------------------
diff --cc html5/render/vue/modules/dom.js
index 4b8425a,d290d7d..61f30dd
--- a/html5/render/vue/modules/dom.js
+++ b/html5/render/vue/modules/dom.js
@@@ -1,22 -1,4 +1,22 @@@
+/*
+ * 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.
+ */
- import { camelToKebab, appendStyle } from '../utils'
+ import { camelToKebab, appendCss } from '../utils'
function getParentScroller (vnode) {
if (!vnode) return null
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/modules/index.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/modules/modal/index.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/utils/index.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/html5/render/vue/utils/style.js
----------------------------------------------------------------------
diff --cc html5/render/vue/utils/style.js
index 67f0e3a,0dc1879..5d565e1
--- a/html5/render/vue/utils/style.js
+++ b/html5/render/vue/utils/style.js
@@@ -1,24 -1,16 +1,35 @@@
+/*
+ * 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.
+ */
+
// @flow
+ import { getViewportInfo } from '../env/viewport'
+ import addPrefix from 'inline-style-prefixer/static/index'
+
+ const noUnitsNumberKeys = [
+ 'flex',
+ 'opacity',
+ 'zIndex',
+ 'fontWeight',
+ 'lines'
+ ]
+
/**
* remove comments from a cssText.
*/
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b932600a/package.json
----------------------------------------------------------------------
diff --cc package.json
index b2c4fd4,4524d59..30466fd
--- a/package.json
+++ b/package.json
@@@ -3,8 -3,8 +3,13 @@@
"version": "0.4.0",
"subversion": {
"browser": "0.5.0",
++<<<<<<< HEAD
+ "vue-render": "0.11.2",
+ "framework": "0.20.3",
++=======
+ "framework": "0.19.17",
+ "vue-render": "0.11.5",
++>>>>>>> 0.11-dev
"transformer": ">=0.1.5 <0.5"
},
"description": "A framework for building Mobile cross-platform UI",
[19/23] incubator-weex git commit: * [test] change CI emulator sdk
version
Posted by so...@apache.org.
* [test] change CI emulator sdk version
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/2c4d6695
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/2c4d6695
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/2c4d6695
Branch: refs/heads/0.12-dev
Commit: 2c4d66954957aa56560d495f2ae48af847b850ab
Parents: b92bf6f
Author: sospartan <so...@apache.org>
Authored: Wed Apr 12 16:42:13 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Wed Apr 12 16:42:13 2017 +0800
----------------------------------------------------------------------
.travis.yml | 2 +-
test/ci-funcs.sh | 2 +-
test/scripts/components/recycler.test.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2c4d6695/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 51f93ee..29bcc68 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -38,7 +38,7 @@ matrix:
- tools
- build-tools-23.0.2
- android-23
- - android-19
+ - android-22
- extra-google-m2repository
- extra-android-m2repository
- sys-img-armeabi-v7a-android-21
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2c4d6695/test/ci-funcs.sh
----------------------------------------------------------------------
diff --git a/test/ci-funcs.sh b/test/ci-funcs.sh
index 8db51f6..c1448dc 100644
--- a/test/ci-funcs.sh
+++ b/test/ci-funcs.sh
@@ -14,7 +14,7 @@ function installAndroidSDK {
}
function createAVD {
- echo no | android create avd --force -n weexavd -t android-19 --abi default/armeabi-v7a
+ echo no | android create avd --force -n weexavd -t android-22 --abi default/armeabi-v7a
}
function startAVD {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2c4d6695/test/scripts/components/recycler.test.js
----------------------------------------------------------------------
diff --git a/test/scripts/components/recycler.test.js b/test/scripts/components/recycler.test.js
index c83534d..efde8e8 100644
--- a/test/scripts/components/recycler.test.js
+++ b/test/scripts/components/recycler.test.js
@@ -15,7 +15,7 @@ const isApproximate = (x, y) => {
return Math.abs(x - y) <= (isAndroid ? 2 : 1.5)
}
-describe('recycler @ignore_android', function () {
+describe('recycler', function () {
this.timeout(util.getTimeoutMills())
const driver = util.createDriver(wd)
[11/23] incubator-weex git commit: * [html5] add funciontal methods
createEventMap & trimTextNodes.
Posted by so...@apache.org.
* [html5] add funciontal methods createEventMap & trimTextNodes.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/ff76bfa1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/ff76bfa1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/ff76bfa1
Branch: refs/heads/0.12-dev
Commit: ff76bfa148cc1418f82e1b138c3449a46e8bc53e
Parents: e49dad6
Author: MrRaindrop <te...@gmail.com>
Authored: Sun Apr 9 18:38:55 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Sun Apr 9 18:38:55 2017 +0800
----------------------------------------------------------------------
html5/render/vue/components/a.js | 6 ++--
html5/render/vue/components/div.js | 6 ++--
html5/render/vue/components/image.js | 4 +--
html5/render/vue/components/input.js | 4 +--
.../render/vue/components/scrollable/header.js | 4 +--
.../vue/components/scrollable/list/cell.js | 4 +--
.../vue/components/scrollable/list/index.js | 4 +--
.../vue/components/scrollable/scroller.js | 4 +--
html5/render/vue/components/slider/index.js | 4 +--
html5/render/vue/components/text.js | 4 +--
html5/render/vue/components/textarea.js | 4 +--
html5/render/vue/components/video.js | 4 +--
html5/render/vue/components/web.js | 4 +--
html5/render/vue/core/index.js | 1 +
html5/render/vue/core/node.js | 28 +++++++++++++++++++
html5/render/vue/env/global.js | 11 ++++++++
html5/render/vue/env/index.js | 9 ++----
html5/render/vue/mixins/base.js | 20 --------------
html5/test/render/vue/core/style.js | 29 ++++++++++----------
html5/test/render/vue/helper/index.js | 4 +--
html5/test/render/vue/helper/runtime.js | 3 +-
21 files changed, 87 insertions(+), 74 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/a.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/a.js b/html5/render/vue/components/a.js
index 18b0b16..83851b2 100644
--- a/html5/render/vue/components/a.js
+++ b/html5/render/vue/components/a.js
@@ -1,4 +1,4 @@
-import { extractComponentStyle } from '../core'
+import { extractComponentStyle, trimTextVNodes, createEventMap } from '../core'
// import { validateStyles } from '../validator'
const _css = `
@@ -22,10 +22,10 @@ export default {
'weex-type': 'a',
href: this.href
},
- on: this._createEventMap(),
+ on: createEventMap(this),
staticClass: 'weex-a weex-ct',
staticStyle: extractComponentStyle(this)
- }, this._trimTextNodeChildren(this.$slots.default))
+ }, trimTextVNodes(this.$slots.default))
},
_css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/div.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/div.js b/html5/render/vue/components/div.js
index 426b678..bdc90d0 100644
--- a/html5/render/vue/components/div.js
+++ b/html5/render/vue/components/div.js
@@ -1,5 +1,5 @@
// import { validateStyles } from '../validator'
-import { extractComponentStyle } from '../core'
+import { extractComponentStyle, trimTextVNodes, createEventMap } from '../core'
const _css = `
body > .weex-div {
@@ -16,10 +16,10 @@ export default {
// }
return createElement('html:div', {
attrs: { 'weex-type': 'div' },
- on: this._createEventMap(),
+ on: createEventMap(this),
staticClass: 'weex-div weex-ct',
staticStyle: extractComponentStyle(this)
- }, this._trimTextNodeChildren(this.$slots.default))
+ }, trimTextVNodes(this.$slots.default))
},
_css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/image.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/image.js b/html5/render/vue/components/image.js
index 98ad632..b245338 100644
--- a/html5/render/vue/components/image.js
+++ b/html5/render/vue/components/image.js
@@ -1,4 +1,4 @@
-import { extractComponentStyle } from '../core/style'
+import { extractComponentStyle, createEventMap } from '../core'
import { extend } from '../utils'
const _css = `
@@ -66,7 +66,7 @@ export default {
'img-src': preProcessSrc(this, this.src, style),
'img-placeholder': preProcessSrc(this, this.placeholder, style)
},
- on: this._createEventMap(['load', 'error']),
+ on: createEventMap(this, ['load', 'error']),
staticClass: 'weex-image weex-el',
staticStyle: extend(style, resizeStyle)
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/input.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/input.js b/html5/render/vue/components/input.js
index 2d3590e..0f68604 100644
--- a/html5/render/vue/components/input.js
+++ b/html5/render/vue/components/input.js
@@ -2,7 +2,7 @@
* @fileOverview Input component.
* Support v-model only if vue version is large than 2.2.0
*/
-import { extractComponentStyle } from '../core'
+import { extractComponentStyle, createEventMap } from '../core'
import { inputCommon } from '../mixins'
import { extend, mapFormEvents } from '../utils'
// import { validateStyles } from '../validator'
@@ -50,7 +50,7 @@ export default {
// if (process.env.NODE_ENV === 'development') {
// validateStyles('input', this.$vnode.data && this.$vnode.data.staticStyle)
// }
- const events = extend(this._createEventMap(), mapFormEvents(this))
+ const events = extend(createEventMap(this), mapFormEvents(this))
return createElement('html:input', {
attrs: {
'weex-type': 'input',
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/scrollable/header.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/header.js b/html5/render/vue/components/scrollable/header.js
index 64ebd77..9fdeddb 100644
--- a/html5/render/vue/components/scrollable/header.js
+++ b/html5/render/vue/components/scrollable/header.js
@@ -1,6 +1,6 @@
// import { validateStyles } from '../../validator'
import { supportSticky } from '../../utils/style'
-import { extractComponentStyle } from '../../core'
+import { extractComponentStyle, createEventMap } from '../../core'
export default {
data () {
@@ -49,7 +49,7 @@ export default {
// }
return createElement('html:header', {
attrs: { 'weex-type': 'header' },
- on: this._createEventMap(),
+ on: createEventMap(this),
ref: 'header',
staticClass: 'weex-header weex-ct',
class: { sticky: this.sticky, iossticky: this.supportSticky },
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/scrollable/list/cell.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/list/cell.js b/html5/render/vue/components/scrollable/list/cell.js
index 32ec1f9..ab8910c 100644
--- a/html5/render/vue/components/scrollable/list/cell.js
+++ b/html5/render/vue/components/scrollable/list/cell.js
@@ -1,5 +1,5 @@
// import { validateStyles } from '../../../validator'
-import { extractComponentStyle } from '../../../core'
+import { extractComponentStyle, createEventMap } from '../../../core'
export default {
render (createElement) {
@@ -9,7 +9,7 @@ export default {
// }
return createElement('section', {
attrs: { 'weex-type': 'cell' },
- on: this._createEventMap(),
+ on: createEventMap(this),
staticClass: 'weex-cell weex-ct',
staticStyle: extractComponentStyle(this)
}, this.$slots.default)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/scrollable/list/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/list/index.js b/html5/render/vue/components/scrollable/list/index.js
index 2db5239..fc803c6 100644
--- a/html5/render/vue/components/scrollable/list/index.js
+++ b/html5/render/vue/components/scrollable/list/index.js
@@ -1,4 +1,4 @@
-import { extractComponentStyle } from '../../../core'
+import { extractComponentStyle, createEventMap } from '../../../core'
import { scrollable } from '../../../mixins'
// import { validateStyles } from '../../../validator'
import { extend } from '../../../utils'
@@ -57,7 +57,7 @@ export default {
ref: 'wrapper',
attrs: { 'weex-type': 'list' },
staticClass: this.wrapperClass,
- on: extend(this._createEventMap(), {
+ on: extend(createEventMap(this), {
scroll: this.handleListScroll,
touchstart: this.handleTouchStart,
touchmove: this.handleTouchMove,
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/scrollable/scroller.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/scroller.js b/html5/render/vue/components/scrollable/scroller.js
index ee117e2..b56ef70 100644
--- a/html5/render/vue/components/scrollable/scroller.js
+++ b/html5/render/vue/components/scrollable/scroller.js
@@ -1,4 +1,4 @@
-import { extractComponentStyle } from '../../core'
+import { extractComponentStyle, createEventMap } from '../../core'
import { scrollable } from '../../mixins'
// import { validateStyles } from '../../validator'
import { extend } from '../../utils'
@@ -76,7 +76,7 @@ export default {
return createElement('main', {
ref: 'wrapper',
attrs: { 'weex-type': 'scroller' },
- on: extend(this._createEventMap(), {
+ on: extend(createEventMap(this), {
scroll: this.handleScroll,
touchstart: this.handleTouchStart,
touchmove: this.handleTouchMove,
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/slider/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/slider/index.js b/html5/render/vue/components/slider/index.js
index ab7187d..b37b0a2 100644
--- a/html5/render/vue/components/slider/index.js
+++ b/html5/render/vue/components/slider/index.js
@@ -1,5 +1,5 @@
// import { validateStyles } from '../../validator'
-import { extractComponentStyle } from '../../core'
+import { extractComponentStyle, createEventMap } from '../../core'
import { throttle, bind, extend, fireLazyload } from '../../utils'
import indicator from './indicator'
import slideMixin from './slideMixin'
@@ -154,7 +154,7 @@ export default {
ref: 'wrapper',
attrs: { 'weex-type': 'slider' },
staticClass: 'weex-slider weex-slider-wrapper weex-ct',
- on: extend(this._createEventMap(['scroll', 'scrollstart', 'scrollend']), {
+ on: extend(createEventMap(this, ['scroll', 'scrollstart', 'scrollend']), {
touchstart: this.handleTouchStart,
touchmove: throttle(bind(this.handleTouchMove, this), 25),
touchend: this.handleTouchEnd
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/text.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/text.js b/html5/render/vue/components/text.js
index 6963b0b..68a6f32 100644
--- a/html5/render/vue/components/text.js
+++ b/html5/render/vue/components/text.js
@@ -6,7 +6,7 @@
* be clipped according to the 'lines'. Otherwise, it'll be the 'height'.
*/
-import { extractComponentStyle } from '../core'
+import { extractComponentStyle, createEventMap } from '../core'
import { extend } from '../utils'
const _css = `
@@ -51,7 +51,7 @@ export default {
const textSpecStyle = getTextSpecStyle(style)
return createElement('p', {
attrs: { 'weex-type': 'text' },
- on: this._createEventMap(),
+ on: createEventMap(this),
staticClass: 'weex-text weex-el',
staticStyle: extend(style, textSpecStyle)
}, this.$slots.default || [this.value])
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/textarea.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/textarea.js b/html5/render/vue/components/textarea.js
index e017512..bc1ffdf 100644
--- a/html5/render/vue/components/textarea.js
+++ b/html5/render/vue/components/textarea.js
@@ -1,4 +1,4 @@
-import { extractComponentStyle } from '../core'
+import { extractComponentStyle, createEventMap } from '../core'
import { inputCommon } from '../mixins'
import { extend, mapFormEvents } from '../utils'
@@ -38,7 +38,7 @@ export default {
// if (process.env.NODE_ENV === 'development') {
// validateStyles('textarea', this.$vnode.data && this.$vnode.data.staticStyle)
// }
- const events = extend(this._createEventMap(), mapFormEvents(this))
+ const events = extend(createEventMap(this), mapFormEvents(this))
return createElement('html:textarea', {
attrs: {
'weex-type': 'textarea',
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/video.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/video.js b/html5/render/vue/components/video.js
index 5d8c312..8c52672 100644
--- a/html5/render/vue/components/video.js
+++ b/html5/render/vue/components/video.js
@@ -1,5 +1,5 @@
// import { validateStyles } from '../validator'
-import { extractComponentStyle } from '../core'
+import { extractComponentStyle, createEventMap } from '../core'
export default {
props: {
@@ -46,7 +46,7 @@ export default {
controls: this.controls,
src: this.src
},
- on: this._createEventMap(['start', 'pause', 'finish', 'fail']),
+ on: createEventMap(this, ['start', 'pause', 'finish', 'fail']),
staticClass: 'weex-video weex-el',
staticStyle: extractComponentStyle(this)
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/components/web.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/web.js b/html5/render/vue/components/web.js
index f810e4b..9ae7d5f 100644
--- a/html5/render/vue/components/web.js
+++ b/html5/render/vue/components/web.js
@@ -1,4 +1,4 @@
-import { extractComponentStyle } from '../core'
+import { extractComponentStyle, createEventMap } from '../core'
import { createEvent } from '../utils'
// import { validateStyles } from '../validator'
@@ -55,7 +55,7 @@ export default {
'weex-type': 'web',
src: this.src
},
- on: this._createEventMap(['error']),
+ on: createEventMap(this, ['error']),
staticClass: 'weex-web weex-el',
staticStyle: extractComponentStyle(this)
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/core/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/index.js b/html5/render/vue/core/index.js
index 57fe34e..04f56bc 100644
--- a/html5/render/vue/core/index.js
+++ b/html5/render/vue/core/index.js
@@ -1 +1,2 @@
export * from './style'
+export * from './node'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/core/node.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/node.js b/html5/render/vue/core/node.js
new file mode 100644
index 0000000..905d828
--- /dev/null
+++ b/html5/render/vue/core/node.js
@@ -0,0 +1,28 @@
+/**
+ * remove text nodes in the nodes array.
+ * @param {Array} nodes
+ * @return {Array} nodes without text nodes.
+ */
+export function trimTextVNodes (vnodes) {
+ if (Array.isArray(vnodes)) {
+ return vnodes.filter(vnode => !!vnode.tag)
+ }
+ return vnodes
+}
+
+const supportedEvents = [
+ 'click', 'longpress', 'appear', 'disappear'
+ // 'touchstart', 'touchmove', 'touchend'
+]
+/**
+ * emit native events to enable v-on.
+ * @param {VComponent} context: which one to emit a event on.
+ * @param {array} extras: extra events.
+ */
+export function createEventMap (context, extras = []) {
+ const eventMap = {}
+ supportedEvents.concat(extras).forEach(name => {
+ eventMap[name] = event => context.$emit(name, event)
+ })
+ return eventMap
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/env/global.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/env/global.js b/html5/render/vue/env/global.js
new file mode 100644
index 0000000..5dd375c
--- /dev/null
+++ b/html5/render/vue/env/global.js
@@ -0,0 +1,11 @@
+import weex from './weex'
+import * as core from '../core'
+
+window.global = window
+window.weex = weex
+
+; ['getComponentStyle',
+ 'extractComponentStyle',
+ 'trimTextVNodes'].forEach(function (method) {
+ weex[method] = core[method].bind(weex)
+ })
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/env/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/env/index.js b/html5/render/vue/env/index.js
index 0d997ee..73f640e 100644
--- a/html5/render/vue/env/index.js
+++ b/html5/render/vue/env/index.js
@@ -14,20 +14,17 @@ import 'core-js/modules/web.dom.iterable'
import 'core-js/modules/es6.promise'
import modules from '../modules'
-import weex from './weex'
+import './global'
// register built-in modules.
-weex.install(modules)
+global.weex.install(modules)
export function setVue (vue) {
if (!vue) {
throw new Error('[Vue Render] Vue not found. Please make sure vue 2.x runtime is imported.')
}
- weex.__vue__ = vue
+ global.weex.__vue__ = vue
console.log(`[Vue Render] install Vue ${vue.version}.`)
}
-window.weex = weex
-window.global = window
-
export default weex
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/render/vue/mixins/base.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/mixins/base.js b/html5/render/vue/mixins/base.js
index 8f0953e..d0262c9 100644
--- a/html5/render/vue/mixins/base.js
+++ b/html5/render/vue/mixins/base.js
@@ -1,11 +1,6 @@
import { getThrottleLazyload, watchAppear } from '../utils'
import { tagBeforeCreate, tagMounted, tagBeforeUpdate, tagUpdated, tagBegin, tagEnd } from '../utils/perf'
-const supportedEvents = [
- 'click', 'longpress', 'appear', 'disappear'
- // 'touchstart', 'touchmove', 'touchend'
-]
-
const scrollableTypes = ['scroller', 'list']
let lazyloadWatched = false
@@ -77,14 +72,6 @@ export default {
return parent
},
- _createEventMap (extras = []) {
- const eventMap = {}
- supportedEvents.concat(extras).forEach(name => {
- eventMap[name] = event => this.$emit(name, event)
- })
- return eventMap
- },
-
_fireLazyload (el) {
if (process.env.NODE_ENV === 'development') {
tagBegin('base._fireLazyload')
@@ -93,13 +80,6 @@ export default {
if (process.env.NODE_ENV === 'development') {
tagEnd('base._fireLazyload')
}
- },
-
- _trimTextNodeChildren (children) {
- if (Array.isArray(children)) {
- return children.filter(vnode => !!vnode.tag)
- }
- return children
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/test/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/core/style.js b/html5/test/render/vue/core/style.js
index cacdd57..6b4a5ae 100644
--- a/html5/test/render/vue/core/style.js
+++ b/html5/test/render/vue/core/style.js
@@ -36,9 +36,8 @@ init('core style', (Vue, helper) => {
it('should get normalized merged styles.', function () {
const vm = helper.createVm(scopedStyleBundle)
- const el = vm.$refs.foo.$el
+ const el = vm.$refs.foo.$el || vm.$refs.foo
expect(el).to.be.ok
-
const expectedMap = {
width: 200 * scale + 'px',
height: 200 * scale + 'px',
@@ -55,19 +54,19 @@ init('core style', (Vue, helper) => {
transform: `translate3d(${100 * scale + 'px'}, ${100 * scale + 'px'}, 0px)`
}
- for (const k in expectedMap) {
- expect(el.style[k]).to.equal(expectedMap[k])
- }
- const directionRes = []
- for (const k in expectedDirection) {
- directionRes.push(el.style[k] === expectedDirection[k])
- }
- expect(directionRes).to.include(true)
+ for (const k in expectedMap) {
+ expect(el.style[k]).to.equal(expectedMap[k])
+ }
+ const directionRes = []
+ for (const k in expectedDirection) {
+ directionRes.push(el.style[k] === expectedDirection[k])
+ }
+ expect(directionRes).to.include(true)
- const transformRes = []
- for (const k in expectedTransform) {
- transformRes.push(el.style[k] === expectedTransform[k])
- }
- expect(transformRes).to.include(true)
+ const transformRes = []
+ for (const k in expectedTransform) {
+ transformRes.push(el.style[k] === expectedTransform[k])
+ }
+ expect(transformRes).to.include(true)
})
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/test/render/vue/helper/index.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper/index.js b/html5/test/render/vue/helper/index.js
index e89ac86..90e7371 100644
--- a/html5/test/render/vue/helper/index.js
+++ b/html5/test/render/vue/helper/index.js
@@ -24,10 +24,9 @@ export function init (title, fn) {
Vue.mixin(base)
Vue.mixin(style)
- setVue(Vue)
-
window.global = window
global.weex = weex
+ setVue(Vue)
window._no_remove_style_sheets = true
})
@@ -42,7 +41,6 @@ export function init (title, fn) {
*/
register (name, component) {
global.weex.registerComponent(name, component)
- // components[name] = component
},
/**
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ff76bfa1/html5/test/render/vue/helper/runtime.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper/runtime.js b/html5/test/render/vue/helper/runtime.js
index 319fd20..140405a 100644
--- a/html5/test/render/vue/helper/runtime.js
+++ b/html5/test/render/vue/helper/runtime.js
@@ -24,10 +24,9 @@ export function init (title, fn) {
Vue.mixin(base)
Vue.mixin(style)
- setVue(Vue)
-
window.global = window
global.weex = weex
+ setVue(Vue)
window._no_remove_style_sheets = true
})
[07/23] incubator-weex git commit: * [html5] rm stylesheet node which
is already analyzed and saved in styleMap.
Posted by so...@apache.org.
* [html5] rm stylesheet node which is already analyzed and saved in styleMap.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/40f600ee
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/40f600ee
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/40f600ee
Branch: refs/heads/0.12-dev
Commit: 40f600eeeb92558c9478bc2970fa8f676c76f734
Parents: b7b81f3
Author: MrRaindrop <te...@gmail.com>
Authored: Thu Apr 6 18:21:21 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Thu Apr 6 18:21:21 2017 +0800
----------------------------------------------------------------------
html5/render/vue/core/style.js | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/40f600ee/html5/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/style.js b/html5/render/vue/core/style.js
index 1b5db77..45a4103 100644
--- a/html5/render/vue/core/style.js
+++ b/html5/render/vue/core/style.js
@@ -68,6 +68,13 @@ export function getHeadStyleMap () {
return styleObj
}, {})
})
+ /**
+ * remove this styleSheet node since it's in the styleMap already. And this style
+ * should only be fetched and used from styleMap to generate the final combined
+ * component style, not from the stylesheet itself.
+ */
+ const node = styleSheet.ownerNode
+ node.parentNode.removeChild(node)
return pre
}, {})
if (process.env.NODE_ENV === 'development') {
[04/23] incubator-weex git commit: * [html5] change viewport adapting
algorithmn.
Posted by so...@apache.org.
* [html5] change viewport adapting algorithmn.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/501cde2f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/501cde2f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/501cde2f
Branch: refs/heads/0.12-dev
Commit: 501cde2fb571b61d4c19e5180e1cab4e6e219d37
Parents: 38f1a97
Author: MrRaindrop <te...@gmail.com>
Authored: Thu Apr 6 14:56:38 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Thu Apr 6 15:38:26 2017 +0800
----------------------------------------------------------------------
html5/render/vue/README.md | 24 +-
html5/render/vue/components/a.js | 4 +-
html5/render/vue/components/div.js | 9 +-
html5/render/vue/components/image.js | 10 +-
html5/render/vue/components/input.js | 12 +-
.../vue/components/scrollable/list/style.js | 16 +
.../components/scrollable/loading-indicator.js | 38 ++-
html5/render/vue/components/slider/index.js | 30 +-
html5/render/vue/components/slider/indicator.js | 32 +-
html5/render/vue/components/switch.js | 60 +++-
html5/render/vue/components/text.js | 15 +-
html5/render/vue/components/textarea.js | 13 +-
html5/render/vue/components/web.js | 13 +-
html5/render/vue/core/style.js | 6 +-
html5/render/vue/env/index.js | 2 +-
html5/render/vue/env/weex.js | 7 +
html5/render/vue/index.js | 13 +-
html5/render/vue/mixins/base.js | 10 -
html5/render/vue/mixins/style.js | 156 +--------
html5/render/vue/modules/animation.js | 7 +-
html5/render/vue/modules/dom.js | 5 +-
html5/render/vue/modules/index.js | 2 +-
html5/render/vue/modules/modal/index.js | 10 +-
html5/render/vue/modules/modal/style.js | 146 +++++++++
html5/render/vue/styles/base.css | 319 -------------------
html5/render/vue/utils/index.js | 36 +--
package.json | 2 +-
packages/weex-vue-render/README.md | 24 +-
packages/weex-vue-render/package.json | 2 +-
29 files changed, 447 insertions(+), 576 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/README.md
----------------------------------------------------------------------
diff --git a/html5/render/vue/README.md b/html5/render/vue/README.md
index 867b318..d41f777 100644
--- a/html5/render/vue/README.md
+++ b/html5/render/vue/README.md
@@ -6,29 +6,7 @@ It can be run on browser only based on Vue 2.x (without Weex).
## use vue-loader
-**NOTE: ** you should use `vue-loader` to bundle your `.vue` file, not using `weex-loader`.
-
-you should add config for `vue-loader` as below (`vue-loader` version should be `>= 11.2.0`)
-
-```javascript
-vue: {
- /**
- * important! should use postTransformNode to add $processStyle for
- * inline style prefixing.
- */
- compilerModules: [
- {
- postTransformNode: el => {
- el.staticStyle = `$processStyle(${el.staticStyle})`
- el.styleBinding = `$processStyle(${el.styleBinding})`
- }
- }
- ],
- autoprefixer: {
- browsers: ['last 7 versions']
- }
-},
-```
+**NOTE: ** after `v0.11.3` there's no need to add `$processStyle` and `autoprefixer` in your vue-loader config anymore. The runtime render will take care of it once for all.
## component -> dom map
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/a.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/a.js b/html5/render/vue/components/a.js
index f0a28e5..18b0b16 100644
--- a/html5/render/vue/components/a.js
+++ b/html5/render/vue/components/a.js
@@ -1,7 +1,7 @@
import { extractComponentStyle } from '../core'
// import { validateStyles } from '../validator'
-const defaultStyle = `
+const _css = `
.weex-a {
text-decoration: none;
}
@@ -27,5 +27,5 @@ export default {
staticStyle: extractComponentStyle(this)
}, this._trimTextNodeChildren(this.$slots.default))
},
- _d_style: defaultStyle
+ _css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/div.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/div.js b/html5/render/vue/components/div.js
index fd8ed3c..426b678 100644
--- a/html5/render/vue/components/div.js
+++ b/html5/render/vue/components/div.js
@@ -1,6 +1,12 @@
// import { validateStyles } from '../validator'
import { extractComponentStyle } from '../core'
+const _css = `
+body > .weex-div {
+ min-height: 100%;
+}
+`
+
export default {
name: 'weex-div',
render (createElement) {
@@ -14,5 +20,6 @@ export default {
staticClass: 'weex-div weex-ct',
staticStyle: extractComponentStyle(this)
}, this._trimTextNodeChildren(this.$slots.default))
- }
+ },
+ _css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/image.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/image.js b/html5/render/vue/components/image.js
index f4980d6..98ad632 100644
--- a/html5/render/vue/components/image.js
+++ b/html5/render/vue/components/image.js
@@ -1,5 +1,12 @@
import { extractComponentStyle } from '../core/style'
import { extend } from '../utils'
+
+const _css = `
+.weex-image, .weex-img {
+ background-repeat: no-repeat;
+ background-position: 50% 50%;
+}
+`
/**
* get resize (stetch|cover|contain) related styles.
*/
@@ -63,5 +70,6 @@ export default {
staticClass: 'weex-image weex-el',
staticStyle: extend(style, resizeStyle)
})
- }
+ },
+ _css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/input.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/input.js b/html5/render/vue/components/input.js
index d65ce79..2d3590e 100644
--- a/html5/render/vue/components/input.js
+++ b/html5/render/vue/components/input.js
@@ -7,6 +7,15 @@ import { inputCommon } from '../mixins'
import { extend, mapFormEvents } from '../utils'
// import { validateStyles } from '../validator'
+const _css = `
+.weex-input, .weex-textarea {
+ font-size: 0.426667rem;
+}
+.weex-input:focus, .weex-textarea:focus {
+ outline: none;
+}
+`
+
export default {
mixins: [inputCommon],
props: {
@@ -60,5 +69,6 @@ export default {
staticClass: 'weex-input weex-el',
staticStyle: extractComponentStyle(this)
})
- }
+ },
+ _css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/scrollable/list/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/list/style.js b/html5/render/vue/components/scrollable/list/style.js
new file mode 100644
index 0000000..c9122af
--- /dev/null
+++ b/html5/render/vue/components/scrollable/list/style.js
@@ -0,0 +1,16 @@
+export default `
+body > .weex-list {
+ max-height: 100%;
+}
+
+.weex-list-wrapper {
+ -webkit-overflow-scrolling: touch;
+ overflow-y: scroll !important;
+ overflow-x: hidden;
+}
+
+.weex-list-inner {
+ -webkit-overflow-scrolling: touch;
+ width: 100%;
+}
+`
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/scrollable/loading-indicator.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/loading-indicator.js b/html5/render/vue/components/scrollable/loading-indicator.js
index e1f9854..b184cca 100644
--- a/html5/render/vue/components/scrollable/loading-indicator.js
+++ b/html5/render/vue/components/scrollable/loading-indicator.js
@@ -1,5 +1,40 @@
import { extractComponentStyle } from '../../core'
+const _css = `
+.weex-refresh-indicator,
+.weex-loading-indicator {
+ width: 1.0rem;
+ height: 1.0rem;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ overflow: visible;
+ background: none;
+}
+.weex-refresh-indicator:before,
+.weex-loading-indicator:before {
+ display: block;
+ content: '';
+ font-size: 0.16rem;
+ width: 1em;
+ height: 1em;
+ left: -60%;
+ top: 40%;
+ border-radius: 50%;
+ position: relative;
+ text-indent: -9999em;
+ -webkit-animation: weex-spinner 1.1s infinite ease;
+ animation: weex-spinner 1.1s infinite ease;
+ -webkit-transform: translate3d(1.0rem, 0, 0);
+ transform: translate3d(1.0rem, 0, 0);
+}
+`
+
export default {
render (createElement) {
this.weexType = 'loading-indicator'
@@ -8,5 +43,6 @@ export default {
staticClass: 'weex-loading-indicator weex-ct',
staticStyle: extractComponentStyle(this)
})
- }
+ },
+ _css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/slider/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/slider/index.js b/html5/render/vue/components/slider/index.js
index b2f4a90..68e4a37 100644
--- a/html5/render/vue/components/slider/index.js
+++ b/html5/render/vue/components/slider/index.js
@@ -4,6 +4,32 @@ import { throttle, bind, extend, fireLazyload } from '../../utils'
import indicator from './indicator'
import slideMixin from './slideMixin'
+const _css = `
+.weex-slider-wrapper {
+ overflow: hidden;
+}
+
+.weex-slider-inner {
+ position: absolute;
+ height: 100%;
+ top: 0;
+ left: 0;
+}
+
+.weex-slider-cell {
+ display: block;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: 0;
+ padding: 0;
+ height: 100%;
+ overflow: hidden;
+}
+`
+
export default {
mixins: [slideMixin],
props: {
@@ -139,5 +165,7 @@ export default {
this._indicator
]
)
- }
+ },
+ // export default css styles for this component.
+ _css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/slider/indicator.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/slider/indicator.js b/html5/render/vue/components/slider/indicator.js
index 3340cfd..6722041 100644
--- a/html5/render/vue/components/slider/indicator.js
+++ b/html5/render/vue/components/slider/indicator.js
@@ -1,6 +1,35 @@
import { extractComponentStyle } from '../../core'
import { extend, extendKeys } from '../../utils'
+const _css = `
+.weex-indicator {
+ position: absolute;
+ z-index: 10;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-orient: horizontal;
+ margin: 0;
+ padding: 0;
+}
+
+.weex-indicator-item {
+ display: inline-block;
+ position: relative;
+ border-radius: 50%;
+ width: 0.266667rem;
+ height: 0.266667rem;
+ background-color: #BBBBBB;
+}
+.weex-indicator-item + .weex-indicator-item {
+ margin-left: 0.133333rem;
+}
+
+.weex-indicator-item-active {
+ background-color: blue;
+}
+`
+
function getIndicatorItemStyle (spec, isActive) {
const style = {}
style['background-color'] = spec[isActive ? 'itemSelectedColor' : 'itemColor']
@@ -119,5 +148,6 @@ export default {
},
render (createElement) {
return _render(this, createElement)
- }
+ },
+ _css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/switch.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/switch.js b/html5/render/vue/components/switch.js
index b04bf90..cf904c3 100644
--- a/html5/render/vue/components/switch.js
+++ b/html5/render/vue/components/switch.js
@@ -1,6 +1,63 @@
// import { validateStyles } from '../validator'
import { extractComponentStyle } from '../core'
+const _css = `
+.weex-switch {
+ border: 0.013333rem solid #dfdfdf;
+ cursor: pointer;
+ display: inline-block;
+ position: relative;
+ vertical-align: middle;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: content-box;
+ background-clip: content-box;
+ color: #64bd63;
+ width: 1.333333rem;
+ height: 0.8rem;
+ background-color: white;
+ border-color: #dfdfdf;
+ box-shadow: #dfdfdf 0 0 0 0 inset;
+ border-radius: 0.8rem;
+ -webkit-transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
+ transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
+}
+
+.weex-switch-checked {
+ background-color: #64bd63;
+ border-color: #64bd63;
+ box-shadow: #64bd63 0 0 0 0.533333rem inset;
+}
+
+.weex-switch-checked.weex-switch-disabled {
+ background-color: #A0CCA0;
+ box-shadow: #A0CCA0 0 0 0 0.533333rem inset;
+}
+
+.weex-switch-disabled {
+ background-color: #EEEEEE;
+}
+
+.weex-switch-inner {
+ width: 0.8rem;
+ height: 0.8rem;
+ background: #fff;
+ border-radius: 100%;
+ box-shadow: 0 0.013333rem 0.04rem rgba(0, 0, 0, 0.4);
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-transition: background-color 0.4s, left 0.2s;
+ transition: background-color 0.4s, left 0.2s;
+}
+
+.weex-switch-checked > .weex-switch-inner {
+ left: 0.533333rem;
+}
+`
+
export default {
props: {
checked: {
@@ -52,5 +109,6 @@ export default {
staticClass: this.wrapperClass,
staticStyle: extractComponentStyle(this)
}, [createElement('small', { staticClass: 'weex-switch-inner' })])
- }
+ },
+ _css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/text.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/text.js b/html5/render/vue/components/text.js
index 5ecdffa..6963b0b 100644
--- a/html5/render/vue/components/text.js
+++ b/html5/render/vue/components/text.js
@@ -9,6 +9,18 @@
import { extractComponentStyle } from '../core'
import { extend } from '../utils'
+const _css = `
+.weex-text {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ position: relative;
+ white-space: pre-wrap; /* not using 'pre': support auto line feed. */
+ font-size: 0.426667rem;
+ word-wrap: break-word;
+ overflow: hidden; /* it'll be clipped if the height is not high enough. */
+}
+`
+
/**
* Get text special styles (lines and text-overflow).
*/
@@ -43,5 +55,6 @@ export default {
staticClass: 'weex-text weex-el',
staticStyle: extend(style, textSpecStyle)
}, this.$slots.default || [this.value])
- }
+ },
+ _css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/textarea.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/textarea.js b/html5/render/vue/components/textarea.js
index d170051..e017512 100644
--- a/html5/render/vue/components/textarea.js
+++ b/html5/render/vue/components/textarea.js
@@ -1,8 +1,18 @@
import { extractComponentStyle } from '../core'
import { inputCommon } from '../mixins'
import { extend, mapFormEvents } from '../utils'
+
// import { validateStyles } from '../validator'
+const _css = `
+.weex-textarea {
+ font-size: 0.426667rem
+}
+.weex-textarea:focus {
+ outline: none;
+}
+`
+
export default {
mixins: [inputCommon],
props: {
@@ -46,5 +56,6 @@ export default {
staticClass: 'weex-textarea weex-el',
staticStyle: extractComponentStyle(this)
})
- }
+ },
+ _css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/components/web.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/web.js b/html5/render/vue/components/web.js
index cccda37..f810e4b 100644
--- a/html5/render/vue/components/web.js
+++ b/html5/render/vue/components/web.js
@@ -2,6 +2,16 @@ import { extractComponentStyle } from '../core'
import { createEvent } from '../utils'
// import { validateStyles } from '../validator'
+const _css = `
+.weex-web {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ border: none;
+ box-sizing: border-box;
+}
+`
+
export default {
props: {
src: String
@@ -49,5 +59,6 @@ export default {
staticClass: 'weex-web weex-el',
staticStyle: extractComponentStyle(this)
})
- }
+ },
+ _css
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/style.js b/html5/render/vue/core/style.js
index 0f3a814..1b5db77 100644
--- a/html5/render/vue/core/style.js
+++ b/html5/render/vue/core/style.js
@@ -38,7 +38,7 @@ export function getHeadStyleMap () {
* .a { color: red; }
* etc.
*/
- const match = str.match(/((?:,?\s*\.[\w-]+\[data-v-\w+\])+)\s*({[^}]+)/)
+ const match = str.match(/((?:,?\s*\.[\w-]+\[data-v-\w+\](?::\w+)?)+)\s*({[^}]+)/)
if (!match) {
// not the vue static class styles map. so acquire no rules for this styleSheet.
// just jump through this styleSheet and go to analyzing next.
@@ -88,10 +88,6 @@ export function getScopeIds (context) {
return arr
}
-export function setDefaultStyle () {
-
-}
-
/**
* get style in <style scoped> tags for this component.
*/
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/env/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/env/index.js b/html5/render/vue/env/index.js
index 1eb3d21..0d997ee 100644
--- a/html5/render/vue/env/index.js
+++ b/html5/render/vue/env/index.js
@@ -1,4 +1,4 @@
-import css from '../styles/reset.css'
+import '../styles/reset.css'
import '../styles/base.css'
// import 'lazyimg'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/env/weex.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/env/weex.js b/html5/render/vue/env/weex.js
index 8b2c7d5..d8b3760 100644
--- a/html5/render/vue/env/weex.js
+++ b/html5/render/vue/env/weex.js
@@ -45,6 +45,13 @@ const weex = {
if (!this.__vue__) {
return console.log('[Vue Render] Vue is not found. Please import Vue.js before register a component.')
}
+ if (component._css) {
+ const css = component._css.replace(/\b[+-]?[\d.]+rem;?\b/g, function (m) {
+ return parseFloat(m) * 75 * weex.config.env.scale + 'px'
+ })
+ utils.appendCss(css, `weex-cmp-${name}`)
+ delete component._css
+ }
this.__vue__.component(name, component)
},
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/index.js b/html5/render/vue/index.js
index e381d6c..c782293 100644
--- a/html5/render/vue/index.js
+++ b/html5/render/vue/index.js
@@ -26,20 +26,9 @@ function init (Vue/*, options = {}*/) {
// register sdk components.
for (const name in components) {
- Vue.component(name, components[name])
+ weex.registerComponent(name, components[name])
}
- // // get user extended plugins.
- // const { components: comps, modules } = options
- // // register user extended components.
- // for (const name in comps) {
- // Vue.components(name, comps[name])
- // }
- // // register user extended modules.
- // for (const mod in modules) {
- // this.registerModule(mod, modules[mod])
- // }
-
/* istanbul ignore next */
// if (process.env.NODE_ENV === 'development') {
// if (semver.lt(Vue.version, '2.1.5')) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/mixins/base.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/mixins/base.js b/html5/render/vue/mixins/base.js
index ca30e0c..8f0953e 100644
--- a/html5/render/vue/mixins/base.js
+++ b/html5/render/vue/mixins/base.js
@@ -57,16 +57,6 @@ export default {
},
methods: {
- _getTopContext () {
- let ctx = this
- let vnode = ctx.$options._parentVnode
- while (vnode) {
- ctx = vnode.context
- vnode = ctx.$options._parentVnode
- }
- return ctx
- },
-
_getScopeIds () {
const arr = []
let ctx = this
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/mixins/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/mixins/style.js b/html5/render/vue/mixins/style.js
index 051e6e3..1052501 100644
--- a/html5/render/vue/mixins/style.js
+++ b/html5/render/vue/mixins/style.js
@@ -1,68 +1,11 @@
import {
- camelizeKeys,
- hyphenateKeys,
- extend,
- trimComment
- // normalizeStyle
-} from '../utils'
-import { tagBegin, tagEnd } from '../utils/perf'
-import addPrefix from 'inline-style-prefixer/static'
+ getHeadStyleMap,
+ getComponentStyle,
+ extractComponentStyle
+} from '../core'
-function getHeadStyleMap () {
- if (process.env.NODE_ENV === 'development') {
- tagBegin('getHeadStyleMap')
- }
- const res = Array.from(document.styleSheets || [])
- .reduce((pre, styleSheet) => {
- // why not using styleSheet.rules || styleSheet.cssRules to get css rules ?
- // because weex's components defined non-standard style attributes, which is
- // auto ignored when access rule.cssText.
- const strArr = trimComment(styleSheet.ownerNode.textContent.trim()).split(/}/)
- const len = strArr.length
- const rules = []
- for (let i = 0; i < len; i++) {
- const str = strArr[i]
- if (!str || str.match(/^\s*$/)) {
- continue
- }
-
- const match = str.match(/((?:,?\s*\.[[\]\w-]+\s*)+)({[^}]+)/)
- if (!match) {
- // not the vue static class styles map. so acquire no rules for this styleSheet.
- // just jump through this styleSheet and go to analyzing next.
- return pre
- }
- const clsNms = match[1].split(',').map(n => n.trim())
- const cssText = match[2].replace(/[{}]/g, '').trim()
- let clsNmsIdx = 0
- const clsNmsLen = clsNms.length
- while (clsNmsIdx < clsNmsLen) {
- rules.push({
- selectorText: clsNms[clsNmsIdx],
- cssText
- })
- clsNmsIdx++
- }
- }
- Array.from(rules).forEach(rule => {
- const selector = rule.selectorText || ''
- pre[selector] = trimComment(rule.cssText).split(';')
- .reduce((styleObj, statement) => {
- statement = statement.trim()
- if (statement && statement.indexOf('/*') <= -1) {
- const resArr = statement.split(':').map((part) => part.trim())
- styleObj[resArr[0]] = resArr[1]
- }
- return styleObj
- }, {})
- })
- return pre
- }, {})
- if (process.env.NODE_ENV === 'development') {
- tagEnd('getHeadStyleMap')
- }
- return res
-}
+let warned = false
+const warnInfo = `[vue-render] after v0.11.3 there's no need to add $processStyle in vue-loader config anymore.`
export default {
beforeCreate () {
@@ -74,85 +17,15 @@ export default {
methods: {
$processStyle (style) {
- window._style_processing_added = true
- if (!style) {
- return
- }
- if (window._process_style) {
- return window._process_style(style)
- }
- if (style.display === 'flex') {
- this.$nextTick(() => {
- if (this.$el) {
- this.$el.classList.add('weex-flex-ct')
- }
- })
- }
- return hyphenateKeys(addPrefix(camelizeKeys(style)))
- },
-
- _mergeStyle (data) {
- const res = {}
- const style = data.style
- const staticStyle = data.staticStyle
- const classes = typeof data.class === 'string' ? data.class.split(' ') : (data.class || [])
- const staticClass = typeof data.staticClass === 'string' ? data.staticClass.split(' ') : (data.class || [])
- const clsNms = staticClass.concat(classes)
- extend(res, this._getScopeStyle(clsNms))
- extend(res, staticStyle)
- extend(res, style)
- return hyphenateKeys(addPrefix(camelizeKeys(res)))
- },
-
- _getScopeStyle (classNames) {
- const scopeIds = this._getScopeIds()
- const style = {}
- const styleMap = weex.styleMap
- let map
- let cls
- let clsNmsIdx
- let scpIdsIdx
- const clsNmsLen = classNames.length
- const scpIdsLen = scopeIds.length
- if (clsNmsLen <= 0) {
- return {}
- }
- clsNmsIdx = 0
- while (clsNmsIdx < clsNmsLen) {
- scpIdsIdx = 0
- while (scpIdsIdx < scpIdsLen) {
- cls = `.${classNames[clsNmsIdx]}[${scopeIds[scpIdsIdx]}]`
- map = styleMap[cls]
- if (!map) {
- scpIdsIdx++
- continue
- }
- for (const k in map) {
- style[k] = map[k]
- }
- scpIdsIdx++
- }
- clsNmsIdx++
+ if (!warned) {
+ warned = true
+ console.warn(warnInfo)
}
return style
},
- _getSize (data) {
- const wh = {}
- const style = data.style
- const staticStyle = data.staticStyle
- const classes = typeof data.class === 'string' ? data.class.split(' ') : (data.class || [])
- const staticClass = typeof data.staticClass === 'string' ? data.staticClass.split(' ') : (data.class || [])
- const clsNms = staticClass.concat(classes)
- function extendWHFrom (to, from) {
- if (!from) { return }
- from.width && (to.width = from.width)
- from.height && (to.height = from.height)
- }
- extendWHFrom(wh, this._getScopeStyle(clsNms))
- extendWHFrom(wh, staticStyle)
- extendWHFrom(wh, style)
- return wh
+ _extractComponentStyle () {
+ return extractComponentStyle(this)
},
/**
@@ -164,12 +37,7 @@ export default {
* 4. data.staticClass style (scoped styles or static classes).
*/
_getComponentStyle (data) {
- const staticClassNames = (typeof data.staticClass === 'string') ? data.staticClass.split(' ') : (data.staticClass || [])
- const classNames = (typeof data.class === 'string') ? data.class.split(' ') : (data.class || [])
- const clsNms = staticClassNames.concat(classNames)
- const style = this._getScopeStyle(clsNms)
- const res = extend(style, data.staticStyle, data.style)
- return res
+ return getComponentStyle(this)
},
_getParentRect () {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/modules/animation.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/animation.js b/html5/render/vue/modules/animation.js
index 1177827..bfcc159 100644
--- a/html5/render/vue/modules/animation.js
+++ b/html5/render/vue/modules/animation.js
@@ -1,4 +1,4 @@
-import { nextFrame, toCSSText } from '../utils'
+import { nextFrame, toCSSText, autoPrefix, camelizeKeys, normalizeStyle } from '../utils'
function transitionOnce (vnode, config, callback) {
const duration = config.duration || 1000 // ms
@@ -24,7 +24,8 @@ function transitionOnce (vnode, config, callback) {
dom.addEventListener('transitionend', transitionEndHandler)
nextFrame(() => {
- dom.style.cssText += toCSSText(config.styles || {})
+ dom.style.cssText
+ += toCSSText(autoPrefix(normalizeStyle(camelizeKeys(config.styles))) || {})
})
}
@@ -36,7 +37,7 @@ export default {
* @param {String} callback
*/
transition (vnode, config, callback) {
- // TODO: Make sure the transition is only run once
+ if (!config.styles) { return }
return transitionOnce(vnode, config, () => {
callback && callback()
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/modules/dom.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/dom.js b/html5/render/vue/modules/dom.js
index 1dd7c0f..b66c71a 100644
--- a/html5/render/vue/modules/dom.js
+++ b/html5/render/vue/modules/dom.js
@@ -1,4 +1,4 @@
-import { camelToKebab, appendStyle } from '../utils'
+import { camelToKebab, appendCss } from '../utils'
function getParentScroller (vnode) {
if (!vnode) return null
@@ -79,6 +79,7 @@ export default {
if (options) {
offset += Number(options.offset) || 0
+ offset *= weex.config.env.scale /* adapt offset to different screen scales. */
}
else if (process.env.NODE_ENV === 'development') {
console.warn('[Vue Render] The second parameter of "scrollToElement" is required, '
@@ -144,6 +145,6 @@ export default {
}
}
const styleText = `@${key}{${stylesText}}`
- appendStyle(styleText, 'dom-added-rules')
+ appendCss(styleText, 'dom-added-rules')
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/modules/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/index.js b/html5/render/vue/modules/index.js
index 917eea7..74fb95d 100644
--- a/html5/render/vue/modules/index.js
+++ b/html5/render/vue/modules/index.js
@@ -25,7 +25,6 @@ const legacyModules = {
const modules = {
animation,
dom,
- modal,
navigator,
webview
}
@@ -35,6 +34,7 @@ export default {
for (const k in legacyModules) {
weex.install(legacyModules[k])
}
+ weex.install(modal)
for (const k in modules) {
weex.registerModule(k, modules[k])
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/modules/modal/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/modal/index.js b/html5/render/vue/modules/modal/index.js
index 4551800..8a74d86 100644
--- a/html5/render/vue/modules/modal/index.js
+++ b/html5/render/vue/modules/modal/index.js
@@ -2,9 +2,10 @@ import toast from './toast'
import Alert from './alert'
import Confirm from './confirm'
import Prompt from './prompt'
+import _css from './style'
// TODO: rewrite the modal styles
-export default {
+const modal = {
// duration: default is 0.8 seconds.
toast: function (config) {
@@ -46,3 +47,10 @@ export default {
new Prompt(config).show()
}
}
+
+export default {
+ init: function (Weex) {
+ Weex.utils.appendCss(_css, 'weex-mud-modal')
+ Weex.registerModule('modal', modal)
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/modules/modal/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/modal/style.js b/html5/render/vue/modules/modal/style.js
new file mode 100644
index 0000000..f430ff4
--- /dev/null
+++ b/html5/render/vue/modules/modal/style.js
@@ -0,0 +1,146 @@
+export default `
+.weex-toast {
+ font-size: 0.426667rem;
+ line-height: 0.426667rem;
+ position: fixed;
+ z-index: 1999999999;
+ box-sizing: border-box;
+ max-width: 80%;
+ bottom: 50%;
+ left: 50%;
+ padding: 0.213333rem;
+ background-color: #000;
+ color: #fff;
+ text-align: center;
+ opacity: 0.6;
+ -webkit-transition: all 0.4s ease-in-out;
+ transition: all 0.4s ease-in-out;
+ border-radius: 0.066667rem;
+ -webkit-transform: translateX(-50%);
+ -ms-transform: translateX(-50%);
+ transform: translateX(-50%);
+}
+
+.weex-toast.hide {
+ opacity: 0;
+}
+
+.weex-alert .weex-alert-ok {
+ width: 100%;
+}
+
+.weex-confirm .btn-group .btn {
+ float: left;
+ width: 50%;
+}
+
+.weex-confirm .btn-group .btn.btn-ok {
+ border-right: 0.013333rem solid #ddd;
+}
+
+.weex-modal-wrap {
+ display: none;
+ position: fixed;
+ z-index: 999999999;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: #000;
+ opacity: 0.5;
+}
+
+.weex-modal-node {
+ position: fixed;
+ z-index: 9999999999;
+ top: 50%;
+ left: 50%;
+ width: 6.666667rem;
+ min-height: 2.666667rem;
+ border-radius: 0.066667rem;
+ -webkit-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ background-color: #fff;
+}
+
+.weex-modal-node.hide {
+ display: none;
+}
+
+.weex-modal-node .content {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ width: 100%;
+ min-height: 1.866667rem;
+ box-sizing: border-box;
+ font-size: 0.426667rem;
+ line-height: 0.426667rem;
+ padding: 0.213333rem;
+ border-bottom: 0.013333rem solid #ddd;
+}
+
+.weex-modal-node .btn-group {
+ width: 100%;
+ height: 0.8rem;
+ font-size: 0.373333rem;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ border: none;
+}
+
+.weex-modal-node .btn-group .btn {
+ text-align: center;
+}
+
+.weex-modal-node .btn-group .btn {
+ box-sizing: border-box;
+ height: 0.8rem;
+ line-height: 0.8rem;
+ margin: 0;
+ padding: 0;
+ border: none;
+ background: none;
+ text-align: center;
+}
+
+.weex-prompt .input-wrap {
+ box-sizing: border-box;
+ width: 100%;
+ margin-top: 0.133333rem;
+ height: 0.96rem;
+}
+
+.weex-prompt .input-wrap .input {
+ box-sizing: border-box;
+ width: 100%;
+ height: 0.56rem;
+ line-height: 0.56rem;
+ font-size: 0.426667rem;
+ border: 0.013333rem solid #999;
+}
+
+.weex-prompt .btn-group .btn {
+ float: left;
+ width: 50%;
+}
+
+.weex-prompt .btn-group .btn.btn-ok {
+ border-right: 0.013333rem solid #ddd;
+}
+`
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/styles/base.css
----------------------------------------------------------------------
diff --git a/html5/render/vue/styles/base.css b/html5/render/vue/styles/base.css
index 656f3b3..17d0738 100644
--- a/html5/render/vue/styles/base.css
+++ b/html5/render/vue/styles/base.css
@@ -64,169 +64,6 @@
min-width: 0;
}
-
-
-body > .weex-div {
- min-height: 100%;
-}
-
-.weex-input, .weex-textarea {
- font-size: 0.426667rem;
-}
-.weex-input:focus, .weex-textarea:focus {
- outline: none;
-}
-
-.weex-image, .weex-img {
- background-repeat: no-repeat;
- background-position: 50% 50%;
-}
-
-.weex-toast {
- font-size: 0.426667rem;
- line-height: 0.426667rem;
- position: fixed;
- z-index: 1999999999;
- box-sizing: border-box;
- max-width: 80%;
- bottom: 50%;
- left: 50%;
- padding: 0.213333rem;
- background-color: #000;
- color: #fff;
- text-align: center;
- opacity: 0.6;
- -webkit-transition: all 0.4s ease-in-out;
- transition: all 0.4s ease-in-out;
- border-radius: 0.066667rem;
- -webkit-transform: translateX(-50%);
- -ms-transform: translateX(-50%);
- transform: translateX(-50%);
-}
-
-.weex-toast.hide {
- opacity: 0;
-}
-
-.weex-alert .weex-alert-ok {
- width: 100%;
-}
-
-.weex-confirm .btn-group .btn {
- float: left;
- width: 50%;
-}
-
-.weex-confirm .btn-group .btn.btn-ok {
- border-right: 0.013333rem solid #ddd;
-}
-
-.weex-modal-wrap {
- display: none;
- position: fixed;
- z-index: 999999999;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background-color: #000;
- opacity: 0.5;
-}
-
-.weex-modal-node {
- position: fixed;
- z-index: 9999999999;
- top: 50%;
- left: 50%;
- width: 6.666667rem;
- min-height: 2.666667rem;
- border-radius: 0.066667rem;
- -webkit-transform: translate(-50%, -50%);
- -ms-transform: translate(-50%, -50%);
- transform: translate(-50%, -50%);
- background-color: #fff;
-}
-
-.weex-modal-node.hide {
- display: none;
-}
-
-.weex-modal-node .content {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-orient: vertical;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- width: 100%;
- min-height: 1.866667rem;
- box-sizing: border-box;
- font-size: 0.426667rem;
- line-height: 0.426667rem;
- padding: 0.213333rem;
- border-bottom: 0.013333rem solid #ddd;
-}
-
-.weex-modal-node .btn-group {
- width: 100%;
- height: 0.8rem;
- font-size: 0.373333rem;
- text-align: center;
- margin: 0;
- padding: 0;
- border: none;
-}
-
-.amfe-modal-node .btn-group .btn {
- text-align: center;
-}
-
-.weex-modal-node .btn-group .btn {
- box-sizing: border-box;
- height: 0.8rem;
- line-height: 0.8rem;
- margin: 0;
- padding: 0;
- border: none;
- background: none;
- text-align: center;
-}
-
-.weex-prompt .input-wrap {
- box-sizing: border-box;
- width: 100%;
- margin-top: 0.133333rem;
- height: 0.96rem;
-}
-
-.weex-prompt .input-wrap .input {
- box-sizing: border-box;
- width: 100%;
- height: 0.56rem;
- line-height: 0.56rem;
- font-size: 0.426667rem;
- border: 0.013333rem solid #999;
-}
-
-.weex-prompt .btn-group .btn {
- float: left;
- width: 50%;
-}
-
-.weex-prompt .btn-group .btn.btn-ok {
- border-right: 0.013333rem solid #ddd;
-}
-
body > .weex-list,
body > .weex-scroller {
max-height: 100%;
@@ -300,90 +137,6 @@ body > .weex-scroller {
overflow: hidden;
}
-.weex-slider-wrapper {
- overflow: hidden;
-}
-
-.weex-slider-inner {
- position: absolute;
- height: 100%;
- top: 0;
- left: 0;
-}
-
-.weex-slider-cell {
- display: block;
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- margin: 0;
- padding: 0;
- height: 100%;
- overflow: hidden;
-}
-
-.weex-indicator {
- position: absolute;
- z-index: 10;
- -webkit-flex-direction: row;
- -ms-flex-direction: row;
- flex-direction: row;
- -webkit-box-orient: horizontal;
- margin: 0;
- padding: 0;
-}
-
-.weex-indicator-item {
- display: inline-block;
- position: relative;
- border-radius: 50%;
- width: 0.266667rem;
- height: 0.266667rem;
- background-color: #BBBBBB;
-}
-.weex-indicator-item + .weex-indicator-item {
- margin-left: 0.133333rem;
-}
-
-.weex-indicator-item-active {
- background-color: blue;
-}
-
-.weex-refresh-indicator,
-.weex-loading-indicator {
- width: 1.0rem;
- height: 1.0rem;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- overflow: visible;
- background: none;
-}
-.weex-refresh-indicator:before,
-.weex-loading-indicator:before {
- display: block;
- content: '';
- font-size: 0.16rem;
- width: 1em;
- height: 1em;
- left: -60%;
- top: 40%;
- border-radius: 50%;
- position: relative;
- text-indent: -9999em;
- -webkit-animation: weex-spinner 1.1s infinite ease;
- animation: weex-spinner 1.1s infinite ease;
- -webkit-transform: translate3d(1.0rem, 0, 0);
- transform: translate3d(1.0rem, 0, 0);
-}
-
@-webkit-keyframes weex-spinner {
0%,
100% {
@@ -439,75 +192,3 @@ body > .weex-scroller {
box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.5), -2.6em 0em 0 0em rgba(255, 255, 255, 0.7), -1.8em -1.8em 0 0em #ffffff;
}
}
-.weex-switch {
- border: 0.013333rem solid #dfdfdf;
- cursor: pointer;
- display: inline-block;
- position: relative;
- vertical-align: middle;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- box-sizing: content-box;
- background-clip: content-box;
- color: #64bd63;
- width: 1.333333rem;
- height: 0.8rem;
- background-color: white;
- border-color: #dfdfdf;
- box-shadow: #dfdfdf 0 0 0 0 inset;
- border-radius: 0.8rem;
- -webkit-transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
- transition: border 0.4s, box-shadow 0.4s, background-color 1.2s;
-}
-
-.weex-switch-checked {
- background-color: #64bd63;
- border-color: #64bd63;
- box-shadow: #64bd63 0 0 0 0.533333rem inset;
-}
-
-.weex-switch-checked.weex-switch-disabled {
- background-color: #A0CCA0;
- box-shadow: #A0CCA0 0 0 0 0.533333rem inset;
-}
-
-.weex-switch-disabled {
- background-color: #EEEEEE;
-}
-
-.weex-switch-inner {
- width: 0.8rem;
- height: 0.8rem;
- background: #fff;
- border-radius: 100%;
- box-shadow: 0 0.013333rem 0.04rem rgba(0, 0, 0, 0.4);
- position: absolute;
- top: 0;
- left: 0;
- -webkit-transition: background-color 0.4s, left 0.2s;
- transition: background-color 0.4s, left 0.2s;
-}
-
-.weex-switch-checked > .weex-switch-inner {
- left: 0.533333rem;
-}
-
-.weex-text {
- display: -webkit-box;
- -webkit-box-orient: vertical;
- position: relative;
- white-space: pre-wrap; /* not using 'pre': support auto line feed. */
- font-size: 0.426667rem;
- word-wrap: break-word;
- overflow: hidden; /* it'll be clipped if the height is not high enough. */
-}
-
-.weex-web {
- position: relative;
- width: 100%;
- height: 100%;
- border: none;
- box-sizing: border-box;
-}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/html5/render/vue/utils/index.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/utils/index.js b/html5/render/vue/utils/index.js
index 46142a8..a010f10 100644
--- a/html5/render/vue/utils/index.js
+++ b/html5/render/vue/utils/index.js
@@ -58,17 +58,17 @@ export function hyphenateKeys (obj) {
return res
}
-// const vendorsReg = /webkit-|moz-|o-|ms-/
-// export function hyphenateStyleKeys (obj) {
-// const res = {}
-// for (const key in obj) {
-// const hk = hyphenate(key).replace(vendorsReg, function ($0) {
-// return '-' + $0
-// })
-// res[hk] = obj[key]
-// }
-// return res
-// }
+const vendorsReg = /webkit-|moz-|o-|ms-/
+export function hyphenateStyleKeys (obj) {
+ const res = {}
+ for (const key in obj) {
+ const hk = hyphenate(key).replace(vendorsReg, function ($0) {
+ return '-' + $0
+ })
+ res[hk] = obj[key]
+ }
+ return res
+}
export function camelToKebab (name) {
if (!name) { return '' }
@@ -77,8 +77,8 @@ export function camelToKebab (name) {
})
}
-export function appendStyle (css, styleId, replace) {
- let style = document.getElementById(styleId)
+export function appendCss (css, cssId, replace) {
+ let style = document.getElementById(cssId)
if (style && replace) {
style.parentNode.removeChild(style)
style = null
@@ -86,7 +86,7 @@ export function appendStyle (css, styleId, replace) {
if (!style) {
style = document.createElement('style')
style.type = 'text/css'
- styleId && (style.id = styleId)
+ cssId && (style.id = cssId)
document.getElementsByTagName('head')[0].appendChild(style)
}
style.appendChild(document.createTextNode(css))
@@ -100,11 +100,11 @@ export function nextFrame (callback) {
}
export function toCSSText (object) {
+ if (!object) { return }
+ const obj = hyphenateStyleKeys(object)
let cssText = ''
- if (object) {
- for (const key in object) {
- cssText += `${hyphenate(key)}:${object[key]};`
- }
+ for (const key in obj) {
+ cssText += `${key}:${obj[key]};`
}
return cssText
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index c60d18b..69aecaf 100644
--- a/package.json
+++ b/package.json
@@ -3,8 +3,8 @@
"version": "0.4.0",
"subversion": {
"browser": "0.5.0",
- "vue-render": "0.11.2",
"framework": "0.19.17",
+ "vue-render": "0.11.3",
"transformer": ">=0.1.5 <0.5"
},
"description": "A framework for building Mobile cross-platform UI",
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/packages/weex-vue-render/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-render/README.md b/packages/weex-vue-render/README.md
index 867b318..d41f777 100644
--- a/packages/weex-vue-render/README.md
+++ b/packages/weex-vue-render/README.md
@@ -6,29 +6,7 @@ It can be run on browser only based on Vue 2.x (without Weex).
## use vue-loader
-**NOTE: ** you should use `vue-loader` to bundle your `.vue` file, not using `weex-loader`.
-
-you should add config for `vue-loader` as below (`vue-loader` version should be `>= 11.2.0`)
-
-```javascript
-vue: {
- /**
- * important! should use postTransformNode to add $processStyle for
- * inline style prefixing.
- */
- compilerModules: [
- {
- postTransformNode: el => {
- el.staticStyle = `$processStyle(${el.staticStyle})`
- el.styleBinding = `$processStyle(${el.styleBinding})`
- }
- }
- ],
- autoprefixer: {
- browsers: ['last 7 versions']
- }
-},
-```
+**NOTE: ** after `v0.11.3` there's no need to add `$processStyle` and `autoprefixer` in your vue-loader config anymore. The runtime render will take care of it once for all.
## component -> dom map
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/501cde2f/packages/weex-vue-render/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-render/package.json b/packages/weex-vue-render/package.json
index 286ae02..48f8d95 100644
--- a/packages/weex-vue-render/package.json
+++ b/packages/weex-vue-render/package.json
@@ -1,6 +1,6 @@
{
"name": "weex-vue-render",
- "version": "0.11.2",
+ "version": "0.11.3",
"description": "Weex built-in components for Vue 2.x.",
"license": "Apache-2.0",
"main": "src/render/vue/index.js",
[12/23] incubator-weex git commit: * [html5] fix lint.
Posted by so...@apache.org.
* [html5] fix lint.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/8e6d31d9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/8e6d31d9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/8e6d31d9
Branch: refs/heads/0.12-dev
Commit: 8e6d31d9d9c51cb6bfa81347bf0a8f3436dd4263
Parents: ff76bfa
Author: MrRaindrop <te...@gmail.com>
Authored: Mon Apr 10 16:12:20 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Mon Apr 10 16:12:20 2017 +0800
----------------------------------------------------------------------
.eslintignore | 1 +
.../vue/components/scrollable/list/style.js | 2 +-
html5/test/render/vue/core/scope-style-map.js | 2 --
html5/test/render/vue/core/style.js | 35 ++++++++------------
html5/test/render/vue/helper/index.js | 35 +-------------------
html5/test/render/vue/helper/runtime.js | 11 ++----
html5/test/render/vue/utils/func.js | 1 -
html5/test/render/vue/utils/style.js | 10 +++---
8 files changed, 24 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8e6d31d9/.eslintignore
----------------------------------------------------------------------
diff --git a/.eslintignore b/.eslintignore
index ebc4e43..60ec529 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -2,6 +2,7 @@
html5/test/case/*/*.source.js
html5/test/case/*/*.output.js
html5/test/render/vue/vender/*
+html5/test/render/vue/data/*
*.css
doc/themes/weex/source/*/*.js
doc/themes/weex/source/*/*/*.js
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8e6d31d9/html5/render/vue/components/scrollable/list/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/scrollable/list/style.js b/html5/render/vue/components/scrollable/list/style.js
index c9122af..8db6b4c 100644
--- a/html5/render/vue/components/scrollable/list/style.js
+++ b/html5/render/vue/components/scrollable/list/style.js
@@ -13,4 +13,4 @@ body > .weex-list {
-webkit-overflow-scrolling: touch;
width: 100%;
}
-`
\ No newline at end of file
+`
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8e6d31d9/html5/test/render/vue/core/scope-style-map.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/core/scope-style-map.js b/html5/test/render/vue/core/scope-style-map.js
index 8968687..af3002c 100644
--- a/html5/test/render/vue/core/scope-style-map.js
+++ b/html5/test/render/vue/core/scope-style-map.js
@@ -25,7 +25,6 @@ function getStyleSheetNodes () {
}
describe('style map', () => {
-
let styleSheetNodes
before(function () {
@@ -56,7 +55,6 @@ describe('style map', () => {
for (const key in headMap) {
const expected = headMap[key]
const result = styleMap[key]
- debugger;
expect(expected).be.deep.equal(result)
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8e6d31d9/html5/test/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/core/style.js b/html5/test/render/vue/core/style.js
index 6b4a5ae..e0cdc65 100644
--- a/html5/test/render/vue/core/style.js
+++ b/html5/test/render/vue/core/style.js
@@ -1,33 +1,26 @@
import { init } from '../helper/runtime'
-import {
- getScopeIds,
- getScopeStyle,
- getComponentStyle,
- getSize
-} from '../../../../render/vue/core/style'
import div from '../../../../render/vue/components/div'
import image from '../../../../render/vue/components/image'
-import { init as initViewport, resetViewport } from '../../../../render/vue/env/viewport'
+import { init as initViewport } from '../../../../render/vue/env/viewport'
import scopedStyleBundle from '../data/build/dotvue/scoped-style'
-function toArray (arr) {
- return Array.prototype.slice.call(arr)
-}
+// function toArray (arr) {
+// return Array.prototype.slice.call(arr)
+// }
-function getVStyleSheetNodes () {
- const regVStyleSheets = /((?:,?\s*\.[\w-]+\[data-v-\w+\](?::\w+)?)+)\s*({[^}]+)/
- const nodes = toArray(document.styleSheets)
- .filter(function (styleSheet) {
- return regVStyleSheets.test(styleSheet.ownerNode.textContent)
- }).map(function (styleSheet) {
- return styleSheet.ownerNode
- })
- return nodes
-}
+// function getVStyleSheetNodes () {
+// const regVStyleSheets = /((?:,?\s*\.[\w-]+\[data-v-\w+\](?::\w+)?)+)\s*({[^}]+)/
+// const nodes = toArray(document.styleSheets)
+// .filter(function (styleSheet) {
+// return regVStyleSheets.test(styleSheet.ownerNode.textContent)
+// }).map(function (styleSheet) {
+// return styleSheet.ownerNode
+// })
+// return nodes
+// }
init('core style', (Vue, helper) => {
- const { compile, utils } = helper
const { scale } = initViewport()
before(() => {
helper.register('div', div)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8e6d31d9/html5/test/render/vue/helper/index.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper/index.js b/html5/test/render/vue/helper/index.js
index 90e7371..75a1976 100644
--- a/html5/test/render/vue/helper/index.js
+++ b/html5/test/render/vue/helper/index.js
@@ -14,7 +14,7 @@ import * as utils from './utils'
*/
export function init (title, fn) {
return describe(title, () => {
- let components = {}
+ // let components = {}
before(function () {
const htmlRegex = /^html:/i
@@ -71,36 +71,3 @@ export function init (title, fn) {
})
})
}
-
-// import vue200 from './vender/vue-2.0.0.js'
-// import vue210 from './vender/vue-2.1.0.js'
-// const Vues = [
-// vue200,
-// vue210
-// ]
-/**
- * Describe tests for multiple versions of Vue.
- */
-// export function multiDescribe (title, fn) {
-// return describe(title, () => {
-// Vues.forEach(Vue => {
-// let components = {}
-// Vue.config.isReservedTag = function () { return false }
-// describe(`Vue ${Vue.version}`, () => fn(Vue, {
-// register (name, component) {
-// components[name] = component
-// },
-// reset () {
-// components = {}
-// },
-// createVm (options = {}) {
-// options.components = components
-// return new Vue(options).$mount()
-// },
-// compile (template) {
-// return this.createVm({ template })
-// }
-// }))
-// })
-// })
-// }
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8e6d31d9/html5/test/render/vue/helper/runtime.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper/runtime.js b/html5/test/render/vue/helper/runtime.js
index 140405a..522b132 100644
--- a/html5/test/render/vue/helper/runtime.js
+++ b/html5/test/render/vue/helper/runtime.js
@@ -14,7 +14,7 @@ import * as utils from './utils'
*/
export function init (title, fn) {
return describe(title, () => {
- let components = {}
+ // let components = {}
before(function () {
const htmlRegex = /^html:/i
@@ -41,17 +41,10 @@ export function init (title, fn) {
*/
register (name, component) {
global.weex.registerComponent(name, component)
- components[name] = component
+ // components[name] = component
},
/**
- * reset registered components with empty object.
- */
- // reset () {
- // components = {}
- // },
-
- /**
* create a vm instance of Vue.
* @param {Object} options.
* @return {Vue} vue instance.
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8e6d31d9/html5/test/render/vue/utils/func.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/utils/func.js b/html5/test/render/vue/utils/func.js
index 17341f6..0aaa151 100644
--- a/html5/test/render/vue/utils/func.js
+++ b/html5/test/render/vue/utils/func.js
@@ -46,5 +46,4 @@ describe('utils', function () {
expect(abc).to.deep.equal({ name: 'x' })
})
})
-
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8e6d31d9/html5/test/render/vue/utils/style.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/utils/style.js b/html5/test/render/vue/utils/style.js
index af0d71a..77b85ac 100644
--- a/html5/test/render/vue/utils/style.js
+++ b/html5/test/render/vue/utils/style.js
@@ -1,15 +1,15 @@
import {
autoPrefix,
- normalizeStyle,
+ // normalizeStyle,
normalizeString,
normalizeNumber,
normalizeUnitsNum
} from '../../../../render/vue/utils/style'
-import { init, resetViewport } from '../../../../render/vue/env/viewport'
+import { init } from '../../../../render/vue/env/viewport'
describe('style', function () {
- const rect = document.documentElement.getBoundingClientRect()
- const info = {}
+ // const rect = document.documentElement.getBoundingClientRect()
+ // const info = {}
const { scale, dpr } = init()
it('should normalize units numbers', function () {
@@ -65,4 +65,4 @@ describe('autoPrefix', function () {
expect(transform).to.equal('translate3d(100px, 100px, 0)')
expect(width).to.equal('200px')
})
-})
\ No newline at end of file
+})
[20/23] incubator-weex git commit: Merge branch '0.12-dev' of
https://git-wip-us.apache.org/repos/asf/incubator-weex into 0.12-dev
Posted by so...@apache.org.
Merge branch '0.12-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into 0.12-dev
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/f5fa7737
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/f5fa7737
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/f5fa7737
Branch: refs/heads/0.12-dev
Commit: f5fa7737dc668be25d8c68f29252f2937d0bb4a6
Parents: 2c4d669 68acd19
Author: sospartan <so...@apache.org>
Authored: Thu Apr 13 10:18:48 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Thu Apr 13 10:18:48 2017 +0800
----------------------------------------------------------------------
ios/sdk/WeexSDK/Sources/Module/WXPickerModule.m | 32 +++++++++++++-------
1 file changed, 21 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
[15/23] incubator-weex git commit: * [html5] fix merging mutiple css
declaration for same classes.
Posted by so...@apache.org.
* [html5] fix merging mutiple css declaration for same classes.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/66e69b35
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/66e69b35
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/66e69b35
Branch: refs/heads/0.12-dev
Commit: 66e69b35c88407b2d9ef7d760ebc845dbf203dca
Parents: 9bf25f4
Author: MrRaindrop <te...@gmail.com>
Authored: Tue Apr 11 12:22:46 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Tue Apr 11 12:22:46 2017 +0800
----------------------------------------------------------------------
html5/render/vue/core/style.js | 9 +++++-
html5/test/render/vue/data/css/head13.css | 25 ++++++++++++++++
html5/test/render/vue/data/head-css.js | 1 +
html5/test/render/vue/data/head-map.js | 40 ++++++++++++++++++++++----
4 files changed, 68 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/66e69b35/html5/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/style.js b/html5/render/vue/core/style.js
index d5b5d83..341a5f6 100644
--- a/html5/render/vue/core/style.js
+++ b/html5/render/vue/core/style.js
@@ -67,7 +67,7 @@ export function getHeadStyleMap () {
}
Array.from(rules).forEach(rule => {
const selector = rule.selectorText || ''
- pre[selector] = trimComment(rule.cssText).split(';')
+ const styleObj = trimComment(rule.cssText).split(';')
.reduce((styleObj, statement) => {
statement = statement.trim()
if (statement && statement.indexOf('/*') <= -1) {
@@ -76,6 +76,13 @@ export function getHeadStyleMap () {
}
return styleObj
}, {})
+ const res = pre[selector]
+ if (!res) {
+ pre[selector] = styleObj
+ }
+ else {
+ extend(pre[selector], styleObj)
+ }
})
/**
* remove this styleSheet node since it's in the styleMap already. And this style
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/66e69b35/html5/test/render/vue/data/css/head13.css
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/css/head13.css b/html5/test/render/vue/data/css/head13.css
new file mode 100644
index 0000000..6cf748c
--- /dev/null
+++ b/html5/test/render/vue/data/css/head13.css
@@ -0,0 +1,25 @@
+.row[data-v-0dad7305] {
+ flex-direction: row;
+}
+.result[data-v-0dad7305] {
+ text-align: right;
+ background-color: #666;
+ font-size: 40px;
+ color: white;
+}
+.btn[data-v-0dad7305] {
+ flex: 1;
+ text-align: center;
+ background-color: #eee;
+ font-size: 36px;
+}
+.btn[data-v-0dad7305], .result[data-v-0dad7305] {
+ height: 100px;
+ padding: 30px;
+ margin: 5px;
+}
+.btn-operator[data-v-0dad7305] {
+ background-color: #669;
+ font-size: 40px;
+ color: white;
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/66e69b35/html5/test/render/vue/data/head-css.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/head-css.js b/html5/test/render/vue/data/head-css.js
index ca4aca6..28231b0 100644
--- a/html5/test/render/vue/data/head-css.js
+++ b/html5/test/render/vue/data/head-css.js
@@ -10,3 +10,4 @@ import './css/head9.css'
import './css/head10.css'
import './css/head11.css'
import './css/head12.css'
+import './css/head13.css'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/66e69b35/html5/test/render/vue/data/head-map.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/data/head-map.js b/html5/test/render/vue/data/head-map.js
index cde66c9..238d18d 100644
--- a/html5/test/render/vue/data/head-map.js
+++ b/html5/test/render/vue/data/head-map.js
@@ -1,5 +1,5 @@
export default {
- /*// 1 /////////////////////////////////////////////////*/
+ /*// head1.css /////////////////////////////////////////////////*/
".wrapper[data-v-67763bae]": {
"width": "375px",
"overflow": "hidden"
@@ -35,7 +35,7 @@ export default {
"bottom": "0"
},
- /*// 2 /////////////////////////////////////////////////*/
+ /*// head2.css /////////////////////////////////////////////////*/
".wrapper[data-v-16194ed9]": {
"color": "#353535"
},
@@ -46,7 +46,7 @@ export default {
"width": "375px"
},
- /*// 3 /////////////////////////////////////////////////*/
+ /*// head3.css /////////////////////////////////////////////////*/
".wrapper[data-v-6acf469e]": {
"background-color": "transparent",
"-webkit-box-pack": "center",
@@ -70,7 +70,7 @@ export default {
"flex-direction": "row"
},
- /*// 4 /////////////////////////////////////////////////*/
+ /*// head4.css /////////////////////////////////////////////////*/
".item[data-v-553d6ea0]": {
"width": "178px",
"height": "118px",
@@ -126,7 +126,7 @@ export default {
"top": "76px"
},
- /*// 5 /////////////////////////////////////////////////*/
+ /*// head5.css /////////////////////////////////////////////////*/
".wrapper[data-v-2c9fb3eb]": {
"background-color": "transparent"
},
@@ -243,5 +243,33 @@ export default {
"color": "#E71A17",
"font-size": "15px",
"font-weight": "bold"
+ },
+
+ /*// head13.css /////////////////////////////////////////////////*/
+ ".row[data-v-0dad7305]": {
+ "flex-direction": "row"
+ },
+ ".result[data-v-0dad7305]": {
+ "text-align": "right",
+ "background-color": "#666",
+ "font-size": "40px",
+ "color": "white",
+ "height": "100px",
+ "padding": "30px",
+ "margin": "5px"
+ },
+ ".btn[data-v-0dad7305]": {
+ "flex": "1",
+ "text-align": "center",
+ "background-color": "#eee",
+ "font-size": "36px",
+ "height": "100px",
+ "padding": "30px",
+ "margin": "5px"
+ },
+ ".btn-operator[data-v-0dad7305]": {
+ "background-color": "#669",
+ "font-size": "40px",
+ "color": "white"
}
-}
\ No newline at end of file
+}
[17/23] incubator-weex git commit: * [android] ignore caps on dialog
button
Posted by so...@apache.org.
* [android] ignore caps on dialog button
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/e0a0c72e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/e0a0c72e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/e0a0c72e
Branch: refs/heads/0.12-dev
Commit: e0a0c72e8c6b5f8507caf1d3b2102ecddbf66927
Parents: 094ade0
Author: moxun.ljf <fu...@foxmail.com>
Authored: Wed Apr 12 10:05:24 2017 +0800
Committer: moxun.ljf <fu...@foxmail.com>
Committed: Wed Apr 12 10:05:24 2017 +0800
----------------------------------------------------------------------
.../main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java | 2 ++
1 file changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e0a0c72e/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java b/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
index 292fba0..8e1b72c 100644
--- a/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
+++ b/android/sdk/src/main/java/com/taobao/weex/appfram/pickers/WXPickersModule.java
@@ -466,10 +466,12 @@ public class WXPickersModule extends WXModule {
if (confirmTitle != null) {
confirm.setText(confirmTitle);
+ confirm.setAllCaps(false);
}
if (confirmColor != Color.TRANSPARENT) {
confirm.setTextColor(confirmColor);
+ confirm.setAllCaps(false);
}
}