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/06/07 08:08:00 UTC

[01/50] incubator-weex git commit: Merge branch '0.13-dev-web' into 0.13-dev-web-slider-refactor

Repository: incubator-weex
Updated Branches:
  refs/heads/0.14-dev 26d2d8a29 -> 1704bcc27


Merge branch '0.13-dev-web' into 0.13-dev-web-slider-refactor


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/56177b35
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/56177b35
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/56177b35

Branch: refs/heads/0.14-dev
Commit: 56177b35c6b8c4307b2a69604f919faf2c46f384
Parents: 4853e3d e8e286b
Author: MrRaindrop <te...@gmail.com>
Authored: Thu May 25 15:35:51 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Thu May 25 15:35:51 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/README.md | 23 ++++++++++++++++++++++-
 html5/render/vue/index.js  |  2 ++
 2 files changed, 24 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[38/50] incubator-weex git commit: * [doc] update user App content

Posted by so...@apache.org.
* [doc] update user App content


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/648e272c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/648e272c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/648e272c

Branch: refs/heads/0.14-dev
Commit: 648e272cdc3c811046ac1139b56b38c96b04c933
Parents: 0aa1a6e
Author: tancy <ro...@gmail.com>
Authored: Tue Jun 6 13:33:31 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Tue Jun 6 13:33:31 2017 +0800

----------------------------------------------------------------------
 doc/themes/weex/languages/en.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/648e272c/doc/themes/weex/languages/en.yml
----------------------------------------------------------------------
diff --git a/doc/themes/weex/languages/en.yml b/doc/themes/weex/languages/en.yml
index 8fadf37..dae9090 100644
--- a/doc/themes/weex/languages/en.yml
+++ b/doc/themes/weex/languages/en.yml
@@ -52,7 +52,7 @@ index:
       content: Youku is one of China's top online video and streaming service platforms.
     taopiaopiao:
       title: Tao Tickets Pro
-      content: Tao Tickets Pro is a product for the film to provide valuable data. Through the combination of Ali and the amount of user data, for the film people to provide a second real-time box office, film, theater business, release calendar and user portraits and other data services.
+      content: Tao Tickets Pro is an intelligent data application which offers film industry practitioners with valuable data and information. Base on the huge data from Alibaba group, it provides services of realtime box office statistic and prediction,film schedule , cinema management information and user profile etc.
     fliggy:
       title: Fliggy
       content: Fliggy is Alibaba Group's travel brand, designed to provide users with convenient, more cost-effective travel services. 


[17/50] incubator-weex git commit: * [ios] try to fix text crash

Posted by so...@apache.org.
* [ios] try to fix text crash


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/b1070991
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/b1070991
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/b1070991

Branch: refs/heads/0.14-dev
Commit: b1070991edd41a2e78eb55d204a2df16efb83d4d
Parents: 3a98c09
Author: acton393 <zh...@gmail.com>
Authored: Thu Jun 1 14:47:54 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Jun 2 10:27:00 2017 +0800

----------------------------------------------------------------------
 .../WeexSDK/Sources/Component/WXTextComponent.m  | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b1070991/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
index d370964..f560aef 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
@@ -349,9 +349,9 @@ do {\
     });
 }
 
-- (NSMutableAttributedString *)buildCTAttributeString {
-    
-    NSString *string = [self text] ?: @"";
+- (NSMutableAttributedString *)buildCTAttributeString
+{
+    NSMutableString *string = [NSMutableString stringWithFormat:@"%@", [self text] ?: @""];
     NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string];
     if (_color) {
         [attributedString addAttribute:NSForegroundColorAttributeName value:_color range:NSMakeRange(0, string.length)];
@@ -745,7 +745,18 @@ do {\
         // default truncationType is kCTLineTruncationEnd
         CTLineTruncationType truncationType = kCTLineTruncationEnd;
         NSAttributedString *attributedString = [self buildCTAttributeString];
-        NSAttributedString * lastLineText = [attributedString attributedSubstringFromRange: WXNSRangeFromCFRange(CTLineGetStringRange(lastLine))];
+        NSAttributedString * lastLineText = nil;
+        @try {
+            lastLineText = [attributedString attributedSubstringFromRange: WXNSRangeFromCFRange(CTLineGetStringRange(lastLine))];
+        } @catch (NSException *exception) {
+            lastLineText = attributedString;
+        } @finally {
+            if (!lastLineText) {
+                lastLineText = attributedString;
+            }
+            //nothing
+        }
+        
         NSMutableAttributedString *mutableLastLineText = lastLineText.mutableCopy;
         [mutableLastLineText appendAttributedString:truncationToken];
         CTLineRef ctLastLineExtend = CTLineCreateWithAttributedString((__bridge CFAttributedStringRef)mutableLastLineText);


[24/50] incubator-weex git commit: * [html5] refactor slider & slider-neighbor.

Posted by so...@apache.org.
* [html5] refactor slider & slider-neighbor.


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/776a74a2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/776a74a2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/776a74a2

Branch: refs/heads/0.14-dev
Commit: 776a74a234c92dd386feb0ace9714ebd33063760
Parents: 804178a
Author: MrRaindrop <te...@gmail.com>
Authored: Fri Jun 2 11:47:29 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Fri Jun 2 11:47:29 2017 +0800

----------------------------------------------------------------------
 .../render/vue/components/slider/slideMixin.js  | 389 ++++++++-----------
 .../vue/components/slider/slider-neighbor.js    |   3 +-
 html5/render/vue/utils/style.js                 |   2 +-
 3 files changed, 159 insertions(+), 235 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/776a74a2/html5/render/vue/components/slider/slideMixin.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/slider/slideMixin.js b/html5/render/vue/components/slider/slideMixin.js
index 7938a10..907687e 100644
--- a/html5/render/vue/components/slider/slideMixin.js
+++ b/html5/render/vue/components/slider/slideMixin.js
@@ -25,16 +25,15 @@ import {
   fireLazyload,
   addTransform,
   copyTransform,
+  getTransformObj,
   bind
 } from '../../utils'
 import { extractComponentStyle, createEventMap } from '../../core'
 
-// const TRANSITION_TIME = 200
-const TRANSITION_TIME = 1000
+const TRANSITION_TIME = 100
+const NEIGHBOR_SCALE_TIME = 50
 const MAIN_SLIDE_OPACITY = 1
-
-// trigger scroll event frequency.
-// const scrollDam = 16
+const THROTTLE_SCROLL_TIME = 16
 
 export default {
   created () {
@@ -48,7 +47,6 @@ export default {
 
   beforeUpdate () {
     this._updateLayout()
-    // this._reorder()
   },
 
   updated () {
@@ -62,13 +60,16 @@ export default {
       }
     }
     fireLazyload(this.$el, true)
+    this._preIndex = this._showNodes[0].index
+    if (this._preIndex !== this.currentIndex) {
+      this._slideTo(this.currentIndex)
+    }
   },
 
   mounted () {
     this._updateLayout()
     this._startAutoPlay()
     this._slideTo(this.currentIndex)
-    // this._reorder()
     fireLazyload(this.$el, true)
   },
 
@@ -127,7 +128,8 @@ export default {
           on: extend(createEventMap(this, ['scroll', 'scrollstart', 'scrollend']), {
             touchstart: this._handleTouchStart,
             touchmove: throttle(bind(this._handleTouchMove, this), 25),
-            touchend: this._handleTouchEnd
+            touchend: this._handleTouchEnd,
+            touchcancel: this._handleTouchCancel
           }),
           staticClass: 'weex-slider weex-slider-wrapper weex-ct',
           staticStyle: extractComponentStyle(this)
@@ -179,7 +181,7 @@ export default {
       }
     },
 
-    _slideTo (index) {
+    _slideTo (index, isTouchScroll) {
       if (!this.infinite || this.infinite === 'false') {
         if (index === -1 || index > (this.frameCount - 1)) {
           this._slideTo(this.currentIndex)
@@ -187,87 +189,103 @@ export default {
         }
       }
 
-      const newIndex = this._normalizeIndex(index)
-      const inner = this.$refs.inner
-      let step = this._step = this.frameCount <= 1 ? 0 : this.currentIndex - index
-      // newIndex: 0 -> 1, sign: -1; newIndex: 1 -> 0, sign: 1.
-      const sign = step === 0 ? 0 : step > 0 ? 1 : -1
-
-      if (Math.abs(step) > 1) {
-        if (process.env.NODE_ENV === 'development') {
-          console.warn('[vue-render] slider step should be no more than 1.')
+      if (!this._preIndex && this._preIndex !== 0) {
+        if (this._showNodes && this._showNodes[0]) {
+          this._preIndex = this._showNodes[0].index
+        }
+        else {
+          this._preIndex = this.currentIndex
         }
-        step = sign
       }
 
+      if (this._sliding) {
+        return
+      }
+      this._sliding = true
+
+      const newIndex = this._normalizeIndex(index)
+      const inner = this.$refs.inner
+      const step = this._step = this.frameCount <= 1 ? 0 : this._preIndex - index
+
       if (inner) {
         this._prepareNodes()
-
-        this.innerOffset += sign * this.wrapperWidth
+        const translate = getTransformObj(inner).translate
+        const match = translate && translate.match(/translate[^(]+\(([+-\d.]+)/)
+        const innerX = match && match[1] || 0
+        const dist = innerX - this.innerOffset
+        this.innerOffset += step * this.wrapperWidth
         // transform the whole slides group.
-        // inner.style.webkitTransition = `-webkit-transform ${TRANSITION_TIME / 1000}s ease-in-out`
-        // inner.style.transition = `transform ${TRANSITION_TIME / 1000}s ease-in-out`
-        // inner.style.webkitTransform = `translate3d(${this.innerOffset}px, 0, 0)`
-        // inner.style.transform = `translate3d(${this.innerOffset}px, 0, 0)`
-
-        this._loopShowNodes(step)
-
-        if (this.isNeighbor) {
-          // set neighbors
-          setTimeout(this._setNeighbors.bind(this), 0)
+        inner.style.webkitTransition = `-webkit-transform ${TRANSITION_TIME / 1000}s ease-in-out`
+        inner.style.transition = `transform ${TRANSITION_TIME / 1000}s ease-in-out`
+        inner.style.webkitTransform = `translate3d(${this.innerOffset}px, 0, 0)`
+        inner.style.transform = `translate3d(${this.innerOffset}px, 0, 0)`
+
+        // emit scroll events.
+        if (!isTouchScroll) {
+          this._emitScrollEvent('scrollstart')
         }
+        setTimeout(() => {
+          this._throttleEmitScroll(dist, () => {
+            this._emitScrollEvent('scrollend')
+          })
+        }, THROTTLE_SCROLL_TIME)
 
-        // current arrange index changed since the slides position begin to change.
-        // this._currentIndexInArrangeArray = this._currentIndexInArrangeArray - step
+        this._loopShowNodes(step)
 
         setTimeout(() => {
-          // inner.style.webkitTransition = ''
-          // inner.style.transition = ''
-          for (let i = this._showStartIdx; i <= this._showEndIdx; i++) {
-            const node = this._showNodes[i]
-            if (!node) { continue }
-            const elm = node.firstElementChild
-            elm.style.webkitTransition = ''
-            elm.style.transition = ''
+          if (this.isNeighbor) {
+            this._setNeighbors()
           }
 
-          // this._loopShowNodes(step)
-
-          // clean cloned nodes and rearrange slide cells.
-          this._rearrangeNodes(newIndex)
+          setTimeout(() => {
+            inner.style.webkitTransition = ''
+            inner.style.transition = ''
+            for (let i = this._showStartIdx; i <= this._showEndIdx; i++) {
+              const node = this._showNodes[i]
+              if (!node) { continue }
+              const elm = node.firstElementChild
+              elm.style.webkitTransition = ''
+              elm.style.transition = ''
+            }
+            // this._loopShowNodes(step)
+            // clean cloned nodes and rearrange slide cells.
+            this._rearrangeNodes(newIndex)
+          }, NEIGHBOR_SCALE_TIME)
         }, TRANSITION_TIME)
       }
 
       // TODO: emit scroll event.
       // nextFrame()
 
-      if (newIndex !== this.currentIndex) {
+      if (newIndex !== this._preIndex) {
         // replace $el with { attr, style } is a legacy usage. Is it necessary to
         // do this ? Or just tell devers to use inline functions to access attrs ?
         this.$emit('change', createEvent(this.$el, 'change', {
           index: newIndex
         }))
-        // setTimeout(() => { this._reorder(newIndex) }, TRANSITION_TIME)
+      }
+    },
+
+    _clearNodesOffset () {
+      const end = this._showEndIdx
+      for (let i = this._showStartIdx; i <= end; i++) {
+        addTransform(this._showNodes[i].firstElementChild, {
+          translate: 'translate3d(0px, 0px, 0px)'
+        })
       }
     },
 
     _loopShowNodes (step) {
-      const sign = step > 0 ? 1 : -1
-      let val = Math.abs(step)
-      while (val--) {
-        let i = sign < 0 ? this._showStartIdx : this._showEndIdx
-        const end = sign < 0 ? this._showEndIdx : this._showStartIdx
-        for (; i !== end - sign; i -= sign) {
-          const nextIdx = i + sign
-          this._positionNode(this._showNodes[i], nextIdx)
-          // this._showNodes[nextIdx] = this._showNodes[i]
-          // this._showNodes[nextIdx]._showIndex = nextIdx
-          // this._positionNode(this._showNodes[nextIdx], nextIdx)
-        }
+      if (!step) {
+        return
       }
-      const begin = sign < 0 ? this._showEndIdx : this._showStartIdx
-      const end = begin - step
-      for (let i = begin; i !== end; i -= sign) {
+      const sign = step > 0 ? 1 : -1
+      let i = step <= 0 ? this._showStartIdx : this._showEndIdx
+      const end = step <= 0 ? this._showEndIdx : this._showStartIdx
+      for (; i !== end - sign; i -= sign) {
+        const nextIdx = i + step
+        this._showNodes[nextIdx] = this._showNodes[i]
+        this._showNodes[nextIdx]._showIndex = nextIdx
         delete this._showNodes[i]
       }
       this._showStartIdx += step
@@ -283,22 +301,11 @@ export default {
         this._initNodes()
         this._inited = true
         this._showNodes = {}
-      //   // prepare nodes for the first time.
-      //   // just generate the arrangeArray.
-      //   for (let i = 0; i < total; i++) {
-      //     const node = cells[i].elm
-      //     node.index = i
-      //     node.style.zIndex = 0
-      //     node.style.opacity = 0
-      //     node._showIndex = i
-      //   }
-      //   // this._positionNodes(start, end, cellBeginIndex)
       }
 
       const showCount = this._showCount = Math.abs(step) + 3
-
-      this._showStartIdx = step <= 0 ? -1 : 1
-      this._showEndIdx = step <= 0 ? showCount - 2 : 2 - showCount
+      this._showStartIdx = step <= 0 ? -1 : 2 - showCount
+      this._showEndIdx = step <= 0 ? showCount - 2 : 1
       this._positionNodes(this._showStartIdx, this._showEndIdx, step)
     },
 
@@ -314,11 +321,13 @@ export default {
       }
     },
 
-    _positionNodes (begin, end, step) {
+    _positionNodes (begin, end, step, anim) {
       const cells = this._cells
+      const start = step <= 0 ? begin : end
+      const stop = step <= 0 ? end : begin
       const sign = step <= 0 ? -1 : 1
-      let cellIndex = this.currentIndex + sign
-      for (let i = begin; i !== end - sign; i = i - sign) {
+      let cellIndex = this._preIndex + sign
+      for (let i = start; i !== stop - sign; i = i - sign) {
         const node = cells[this._normalizeIndex(cellIndex)].elm
         cellIndex = cellIndex - sign
         this._positionNode(node, i)
@@ -329,9 +338,6 @@ export default {
      * index: position index in the showing cells' view.
      */
     _positionNode (node, index) {
-      // if (this._showNodes[index]) {
-      //   return
-      // }
       if (node._inShow && this._showNodes[index] !== node) {
         node = this._getClone(node.index)
       }
@@ -397,6 +403,7 @@ export default {
     _clearNodes (begin, end) {
       for (let i = begin; i <= end; i++) {
         const node = this._showNodes[i]
+        if (!node) { return }
         if (node._isClone) {
           this._removeClone(node)
         }
@@ -419,11 +426,19 @@ export default {
       origNode.style.left = clone.style.left
       origNode.style.opacity = clone.style.opacity
       origNode.style.zIndex = clone.style.zIndex
-      copyTransform(clone, origNode)
-      origNode.firstElementChild.style.left = clone.firstElementChild.style.left
+      // copyTransform(clone, origNode)
+      const transObj = getTransformObj(clone)
+      transObj.translate = transObj.translate.replace(/[+-\d.]+[pw]x/, ($0) => {
+        return pos * this.wrapperWidth - this.innerOffset + 'px'
+      })
+      addTransform(origNode, transObj)
+      copyTransform(clone.firstElementChild, origNode.firstElementChild)
+      // origNode.firstElementChild.style.left = clone.firstElementChild.style.left
       this._removeClone(clone)
-      delete this._showNodes[clone._showIndex]
+      // delete this._showNodes[clone._showIndex]
+      delete this._showNodes[origNode._showIndex]
       this._showNodes[pos] = origNode
+      origNode._showIndex = pos
     },
 
     _rearrangeNodes (newIndex) {
@@ -447,22 +462,14 @@ export default {
       }
 
       this._clearNodes(this._showStartIdx, -2)
+      this._showStartIdx = -1
       this._clearNodes(2, this._showEndIdx)
-
-      // const curNode = shows[0]
-      // if (curNode._isClone) {
-      //   // replace this cloned node with the original node.
-      //   const idx = curNode.index
-      //   for (let i = 0; i < nodesLen; i++) {
-      //     if (nodes[i].index === idx) {
-      //       break
-      //     }
-      //   }
-      //   this._replaceCloneNode(curNode, i)
-      // }
+      this._showEndIdx = 1
+      this._sliding = false
 
       // set current index to the new index.
       this.currentIndex = newIndex
+      this._preIndex = newIndex
     },
 
     /**
@@ -478,147 +485,29 @@ export default {
 
       for (let i = this._showStartIdx; i <= this._showEndIdx; i++) {
         const elm = this._showNodes[i].firstElementChild
-        elm.style.webkitTransition = `all ${TRANSITION_TIME / 1000}s ease`
-        elm.style.transition = `all ${TRANSITION_TIME / 1000}s ease`
+        elm.style.webkitTransition = `all ${NEIGHBOR_SCALE_TIME / 1000}s ease`
+        elm.style.transition = `all ${NEIGHBOR_SCALE_TIME / 1000}s ease`
         const transObj = {
           scale: `scale(${i === 0 ? this.currentItemScale : this.neighborScale})`
         }
-        addTransform(elm, transObj)
+        let translateX
         if (!this._neighborWidth) {
           this._neighborWidth = parseFloat(elm.style.width) || elm.getBoundingClientRect().width
         }
         // calculate position offsets according to neighbor scales.
         if (Math.abs(i) === 1) {
-          const dist = (this.wrapperWidth - this._neighborWidth * this.neighborScale) / 2
-            + this.neighborSpace * weex.config.env.scale
-          elm.style.left = `${-i * dist}px`
+          const dist = ((this.wrapperWidth - this._neighborWidth * this.neighborScale) / 2
+            + this.neighborSpace * weex.config.env.scale) / this.neighborScale
+          translateX = -i * dist
         }
-        // clear position offsets.
         else {
-          elm.style.left = ''
-        }
-      }
-    },
-
-    _order () {
-      this.$nextTick(() => {
-        for (let i = 1, l = this._cells.length; i < l; i++) {
-          const nextElm = this._cells[i].elm
-          const nextOffset = this.wrapperWidth * i
-          nextElm.style.webkitTransform = `translate3d(${nextOffset}px, 0, 0)`
-          nextElm.style.transform = `translate3d(${nextOffset}px, 0, 0)`
-        }
-        // this._reorder()
-      })
-    },
-
-    _reorder (newIndex) {
-      if (!newIndex && newIndex !== 0) {
-        newIndex = this.currentIndex
-      }
-      // dir: 'current' | 'prev' | 'next'
-      const setPosition = (elm, dir) => {
-        const scale = window.weex.config.env.scale
-        let neighborScale = this.neighborScale
-        let opacity = this.neighborAlpha
-        let offsetX = -this.innerOffset
-        let offsetY = 0
-        if (dir === 'current') {
-          elm.style.zIndex = 1
-          neighborScale = this.currentItemScale
-          opacity = MAIN_SLIDE_OPACITY
-        }
-
-        elm.style.visibility = 'visible'
-
-        const origin = dir === 'prev' ? '100% 0' : '0 0'
-        elm.style.webkitTransformOrigin = origin
-        elm.style.transformOrigin = origin
-
-        const sign = dir === 'current' ? 0 : dir === 'prev' ? -1 : 1
-        offsetX = -this.innerOffset + sign * this.wrapperWidth
-        if (this.isNeighbor) {
-          offsetY = (1 - neighborScale) * this.wrapperHeight / 2
-          elm.style.opacity = opacity
-          if (dir === 'current') {
-            offsetX += this.wrapperWidth * (1 - neighborScale) / 2
-          }
-          else {
-            // offsetX = offsetX - sign * this.neighborSpace * scale
-            offsetX = offsetX - sign * (
-              (this.wrapperWidth - this._origItemWidth * this.currentItemScale) / 2
-              - this.neighborSpace * scale)
-          }
-        }
-
-        elm.style.width = this.wrapperWidth + 'px'
-        const transObj = {
-          translate: `translate3d(${offsetX}px, ${offsetY}px, 0px)`
-        }
-        if (this.isNeighbor) {
-          transObj.scale = `scale(${neighborScale})`
+          // clear position offsets.
+          translateX = 0
         }
+        transObj.translate = `translate3d(${translateX}px, 0px, 0px)`
         addTransform(elm, transObj)
+        elm.style.opacity = i === 0 ? MAIN_SLIDE_OPACITY : this.neighborAlpha
       }
-
-      const removeClone = (clone, prevElm) => {
-        // switch current page.
-        setPosition(prevElm, 'current')
-        // const curTransform = `translate3d(${-this.innerOffset}px, 0, 0)`
-        // prevElm.style.transform = curTransform
-        // prevElm.style.webkitTransform = curTransform
-        // remove clone node.
-        clone && clone.parentElement.removeChild(clone)
-      }
-
-      this.$nextTick(() => {
-        if (this._cells.length <= 1) {
-          return
-        }
-        if (!this.infinite || this.infinite === 'false') {
-          this._order()
-          return
-        }
-        const lastPrev = this._prevElm
-        const prevIndex = this._normalizeIndex(newIndex - 1)
-        const nextIndex = this._normalizeIndex(newIndex + 1)
-        let prevElm = this._prevElm = this._cells[prevIndex].elm
-        const nextElm = this._cells[nextIndex].elm
-        const currentElm = this._cells[newIndex].elm
-
-        if (!this._origItemWidth) {
-          this._origItemWidth = currentElm.firstElementChild.getBoundingClientRect().width
-        }
-
-        // put current slide on the top.
-        setPosition(currentElm, 'current')
-        currentElm.style.webkitBoxAlign = 'center'
-        currentElm.style.webkitAlignItems = 'center'
-        currentElm.style.AlignItems = 'center'
-
-        // clone prevCell if there are only tow slides.
-        if (this._cells.length === 2) {
-          this._clonePrev && removeClone(this._clonePrev, lastPrev)
-          this._clonePrev = prevElm.cloneNode(true)
-          this._clonePrev.classList.add('weex-slide-clone-prev')
-          prevElm.parentElement.insertBefore(this._clonePrev, currentElm)
-          if (!this._prevFired) {
-            fireLazyload(this._clonePrev, true)
-            this._prevFired = true
-          }
-          prevElm = this._clonePrev
-        }
-
-        setPosition(prevElm, 'prev')
-        prevElm.style.webkitBoxAlign = 'end'
-        prevElm.style.webkitAlignItems = 'flex-end'
-        prevElm.style.AlignItems = 'flex-end'
-        setPosition(nextElm, 'next')
-        nextElm.style.webkitBoxAlign = 'start'
-        nextElm.style.webkitAlignItems = 'flex-start'
-        nextElm.style.AlignItems = 'flex-start'
-        this.currentIndex = newIndex
-      })
     },
 
     _next () {
@@ -630,7 +519,6 @@ export default {
     },
 
     _handleTouchStart (event) {
-      // event.stopPropagation()
       const touch = event.changedTouches[0]
       this._stopAutoPlay()
       this._touchParams = {
@@ -643,9 +531,14 @@ export default {
     },
 
     _handleTouchMove (event) {
-      // event.stopPropagation()
       const tp = this._touchParams
       if (!tp) { return }
+      if (this._sliding) {
+        if (process.env.NODE_ENV === 'development') {
+          console.warn(`[vue-render] warn: can't scroll the slider during sliding.`)
+        }
+        return
+      }
       const { startX, startY } = this._touchParams
       const touch = event.changedTouches[0]
       const offsetX = touch.pageX - startX
@@ -656,7 +549,7 @@ export default {
       if (typeof isV === 'undefined') {
         isV = tp.isVertical = Math.abs(offsetX) < Math.abs(offsetY)
         if (!isV) {
-          this.$emit('scrollstart', createEvent(this.$el, 'scrollstart', {}))
+          this._emitScrollEvent('scrollstart')
         }
       }
       // vertical scroll. just ignore it.
@@ -667,17 +560,20 @@ export default {
       event.preventDefault()
       const inner = this.$refs.inner
       if (inner && offsetX) {
+        if (!this._nodesOffsetCleared) {
+          this._nodesOffsetCleared = true
+          this._clearNodesOffset()
+        }
         // TODO: add throttle.
-        this.$emit('scroll', createEvent(this.$el, 'scroll', {
+        this._emitScrollEvent('scroll', {
           offsetXRatio: offsetX / this.wrapperWidth
-        }))
+        })
         inner.style.transform = `translate3d(${this.innerOffset + offsetX}px, 0, 0)`
         inner.style.webkitTransform = `translate3d(${this.innerOffset + offsetX}px, 0, 0)`
       }
     },
 
     _handleTouchEnd (event) {
-      // event.stopPropagation()
       this._startAutoPlay()
       const tp = this._touchParams
       if (!tp) { return }
@@ -688,14 +584,43 @@ export default {
       const inner = this.$refs.inner
       const { offsetX } = tp
       if (inner) {
-        this.$emit('scrollend', createEvent(this.$el, 'scrollend'))
+        this._nodesOffsetCleared = false
         // TODO: test the velocity if it's less than 0.2.
         const reset = Math.abs(offsetX / this.wrapperWidth) < 0.2
         const direction = offsetX > 0 ? 1 : -1
         const newIndex = reset ? this.currentIndex : (this.currentIndex - direction)
-        this._slideTo(newIndex)
+        this._slideTo(newIndex, true)
       }
       delete this._touchParams
+    },
+
+    _handleTouchCancel (event) {
+      return this._handleTouchEnd(event)
+    },
+
+    _emitScrollEvent (type, data = {}) {
+      this.$emit(type, createEvent(this.$el, type, data))
+    },
+
+    _throttleEmitScroll (offset, callback) {
+      let i = 0
+      const throttleTime = THROTTLE_SCROLL_TIME
+      const cnt = parseInt(TRANSITION_TIME / throttleTime) - 1
+      const sign = offset > 0 ? 1 : -1
+      const r = Math.abs(offset / this.wrapperWidth)
+      const throttledScroll = () => {
+        if (++i > cnt) {
+          return callback && callback.call(this)
+        }
+        const ratio = this._step === 0
+          ? sign * r * (1 - i / cnt)
+          : sign * (r + (1 - r) * i / cnt)
+        this._emitScrollEvent('scroll', {
+          offsetXRatio: ratio
+        })
+        setTimeout(throttledScroll, THROTTLE_SCROLL_TIME)
+      }
+      throttledScroll()
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/776a74a2/html5/render/vue/components/slider/slider-neighbor.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/slider/slider-neighbor.js b/html5/render/vue/components/slider/slider-neighbor.js
index 07ec2a7..7d691e1 100644
--- a/html5/render/vue/components/slider/slider-neighbor.js
+++ b/html5/render/vue/components/slider/slider-neighbor.js
@@ -18,7 +18,6 @@
  */
 import slideMixin from './slideMixin'
 
-const DEFAULT_MAIN_SLIDE_SCALE = 0.9
 const DEFAULT_NEIGHBOR_SPACE = 20
 const DEFAULT_NEIGHBOR_ALPHA = 0.6
 const DEFAULT_NEIGHBOR_SCALE = 0.8
@@ -73,7 +72,7 @@ export default {
         val = parseFloat(val)
         return !isNaN(val) && val >= 0 && val <= 1
       },
-      default: DEFAULT_MAIN_SLIDE_SCALE
+      default: DEFAULT_CURRENT_ITEM_SCALE
     }
   },
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/776a74a2/html5/render/vue/utils/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/utils/style.js b/html5/render/vue/utils/style.js
index 0a66285..bb12934 100644
--- a/html5/render/vue/utils/style.js
+++ b/html5/render/vue/utils/style.js
@@ -242,7 +242,7 @@ export function addTranslateX (elm: HTMLElement, toAdd: number): void {
 export function copyTransform (from: HTMLElement, to: HTMLElement, key: string | void): void {
   let str
   if (!key) {
-    str = to.style.webkitTransform || to.style.transform
+    str = from.style.webkitTransform || from.style.transform
   }
   else {
     const fromObj = getTransformObj(from)


[26/50] incubator-weex git commit: * [ios] fix text trunk line

Posted by so...@apache.org.
* [ios] fix text trunk line


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/ee2cd690
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/ee2cd690
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/ee2cd690

Branch: refs/heads/0.14-dev
Commit: ee2cd69077f071307ec5a6f2eb44992325bc1d54
Parents: 1308ff1
Author: acton393 <zh...@gmail.com>
Authored: Fri Jun 2 12:46:19 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Jun 2 12:46:19 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ee2cd690/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
index f3fbd93..362fce6 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
@@ -754,7 +754,7 @@ do {\
         NSAttributedString *attributedString = [self buildCTAttributeString];
         NSAttributedString * lastLineText = nil;
         NSRange lastLineTextRange = WXNSRangeFromCFRange(CTLineGetStringRange(lastLine));
-        NSRange attributeStringRange = NSRangeFromString(attributedString.string);
+        NSRange attributeStringRange = NSMakeRange(0, attributedString.string.length);
         NSRange interSectionRange = NSIntersectionRange(lastLineTextRange, attributeStringRange);
         if (!NSEqualRanges(interSectionRange, lastLineTextRange)) {
             // out of bounds


[31/50] incubator-weex git commit: * [html5] release 0.11.44 & fix accessing stylesheet's cssRules causing error in firefox.

Posted by so...@apache.org.
* [html5] release 0.11.44 & fix accessing stylesheet's cssRules causing error in firefox.


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/19c0a78f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/19c0a78f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/19c0a78f

Branch: refs/heads/0.14-dev
Commit: 19c0a78f9215a2ca52211be26cb50629af55d8f7
Parents: 804178a
Author: MrRaindrop <te...@gmail.com>
Authored: Sun Jun 4 13:35:28 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Sun Jun 4 13:35:28 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/core/style.js        | 5 ++---
 package.json                          | 2 +-
 packages/weex-vue-render/package.json | 2 +-
 3 files changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19c0a78f/html5/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/style.js b/html5/render/vue/core/style.js
index 5ea83a1..07e6e7b 100644
--- a/html5/render/vue/core/style.js
+++ b/html5/render/vue/core/style.js
@@ -43,11 +43,10 @@ export function getHeadStyleMap () {
        * because weex's components defined non-standard style attributes, which is
        * auto ignored when access rule.cssText.
        */
-      if (!styleSheet.cssRules
-        || (styleSheet.ownerNode.tagName.toLowerCase() === 'link')
+      if ((styleSheet.ownerNode.tagName.toLowerCase() === 'link')
         || !styleSheet.ownerNode.textContent) {
         /**
-         * no rules, or in a link. just ignore this. probably a link stylesheet.
+         * css in a link. just ignore this. probably a link stylesheet.
          */
         return pre
       }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19c0a78f/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 502cede..0d543b7 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
   "subversion": {
     "browser": "0.5.0",
     "framework": "0.20.6",
-    "vue-render": "0.11.43",
+    "vue-render": "0.11.44",
     "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/19c0a78f/packages/weex-vue-render/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-render/package.json b/packages/weex-vue-render/package.json
index b165279..cac8980 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.43",
+  "version": "0.11.44",
   "description": "Weex built-in components for Vue 2.x.",
   "license": "Apache-2.0",
   "main": "dist/index.js",


[27/50] incubator-weex git commit: Merge branch '0.13-dev' of https://github.com/acton393/incubator-weex into wip-us-0.13-dev

Posted by so...@apache.org.
Merge branch '0.13-dev' of https://github.com/acton393/incubator-weex into wip-us-0.13-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/1216f81b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/1216f81b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/1216f81b

Branch: refs/heads/0.14-dev
Commit: 1216f81b192b6cf44f9ca6deaec5af66242a5a54
Parents: 3110422 ee2cd69
Author: acton393 <zh...@gmail.com>
Authored: Fri Jun 2 12:53:53 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Jun 2 12:53:53 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1216f81b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
----------------------------------------------------------------------


[18/50] incubator-weex git commit: * [ios] remove gesture in case of crash

Posted by so...@apache.org.
* [ios] remove gesture in case of crash


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/99a9bbd9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/99a9bbd9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/99a9bbd9

Branch: refs/heads/0.14-dev
Commit: 99a9bbd92d48c7afd0a8f27ba14d8a314dc4f6a0
Parents: 41ee7b2
Author: acton393 <zh...@gmail.com>
Authored: Thu May 25 21:46:09 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Jun 2 10:27:00 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/99a9bbd9/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m b/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m
index 85c767c..7dd496b 100644
--- a/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m
+++ b/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m
@@ -270,6 +270,8 @@ if ([removeEventName isEqualToString:@#eventName]) {\
 - (void)removeClickEvent
 {
     if (_tapGesture) {
+        [_tapGesture removeTarget:self action:@selector(onClick:)];
+        [self.view removeGestureRecognizer:_tapGesture];
         _tapGesture.delegate = nil;
         _tapGesture = nil;
     }
@@ -341,6 +343,8 @@ if ([removeEventName isEqualToString:@#eventName]) {\
     }
   
     for (UISwipeGestureRecognizer *recognizer in _swipeGestures) {
+        [recognizer removeTarget:self action:@selector(onSwipe:)];
+        [self.view removeGestureRecognizer:recognizer];
         recognizer.delegate = nil;
     }
     
@@ -394,6 +398,8 @@ if ([removeEventName isEqualToString:@#eventName]) {\
 - (void)removeLongPressEvent
 {
     if (_longPressGesture) {
+        [_longPressGesture removeTarget:self action:@selector(onLongPress:)];
+        [self.view removeGestureRecognizer:_longPressGesture];
         _longPressGesture.delegate = nil;
         _longPressGesture = nil;
     }
@@ -539,6 +545,8 @@ if ([removeEventName isEqualToString:@#eventName]) {\
         && !_listenPanStart && !_listenPanMove && !_listenPanEnd
         && !_listenHorizontalPan && !_listenVerticalPan
         ) {
+        [_panGesture removeTarget:self action:@selector(onPan:)];
+        [self.view removeGestureRecognizer:_panGesture];
         _panGesture.delegate = nil;
         _panGesture = nil;
     }


[48/50] incubator-weex git commit: Merge branch '0.13-dev' into dev

Posted by so...@apache.org.
Merge branch '0.13-dev' into 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/536c38a2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/536c38a2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/536c38a2

Branch: refs/heads/0.14-dev
Commit: 536c38a29abbece191987bfbf54c0bc0480a12ac
Parents: 3a39b78 404f3cc
Author: sospartan <so...@apache.org>
Authored: Wed Jun 7 16:04:24 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Wed Jun 7 16:04:24 2017 +0800

----------------------------------------------------------------------
 .gitignore                                      |   1 +
 .travis.yml                                     |  10 +-
 Dangerfile-ios                                  |   1 +
 WeexSDK.podspec                                 |   4 +-
 android/build.gradle                            |   9 +-
 android/commons/build.gradle                    |   1 +
 .../adapter/DefaultWebSocketAdapter.java        |  54 +-
 .../weex/commons/util/RequestIdGenerator.java   |  15 +
 .../weex/commons/util/WSEventReporter.java      | 192 ++++++
 .../gradle/wrapper/gradle-wrapper.properties    |   4 +-
 android/playground/app/build.gradle             |   4 +-
 .../java/com/alibaba/weex/WXApplication.java    |   2 +
 .../java/com/alibaba/weex/WXPageActivity.java   |   3 +-
 .../extend/adapter/InterceptWXHttpAdapter.java  |  57 +-
 .../weex/extend/module/WXEventModule.java       |  23 +-
 android/run-ci.sh                               |   5 +-
 android/sdk/assets/main.js                      |   8 -
 android/sdk/build.gradle                        |   6 +
 .../com/taobao/weex/LayoutFinishListener.java   |   8 +
 .../java/com/taobao/weex/WXEnvironment.java     |   1 +
 .../main/java/com/taobao/weex/WXSDKEngine.java  |   6 +
 .../java/com/taobao/weex/WXSDKInstance.java     |  48 ++
 .../main/java/com/taobao/weex/WXSDKManager.java |  15 +-
 .../taobao/weex/adapter/ICrashInfoReporter.java |   9 +
 .../taobao/weex/adapter/IDrawableLoader.java    |   3 +-
 .../weex/adapter/IWXUserTrackAdapter.java       |   2 +-
 .../com/taobao/weex/bridge/WXBridgeManager.java |  45 +-
 .../com/taobao/weex/bridge/WXModuleManager.java |  44 +-
 .../com/taobao/weex/common/WXPerformance.java   |   9 +-
 .../taobao/weex/dom/DOMActionContextImpl.java   |  15 +-
 .../com/taobao/weex/dom/TextDecorationSpan.java |  55 ++
 .../java/com/taobao/weex/dom/WXDomHandler.java  |   4 +
 .../java/com/taobao/weex/dom/WXDomManager.java  |  19 +
 .../main/java/com/taobao/weex/dom/WXStyle.java  |  32 +-
 .../com/taobao/weex/dom/WXSwitchDomObject.java  |  29 +-
 .../com/taobao/weex/dom/WXTextDomObject.java    |  11 +-
 .../com/taobao/weex/dom/action/Actions.java     |  12 +
 .../taobao/weex/dom/action/AnimationAction.java |   3 +
 .../weex/dom/action/CreateFinishAction.java     |  20 +
 .../weex/dom/action/ExecutableRenderAction.java |  30 +
 .../weex/dom/action/ModuleInvocationAction.java |  50 ++
 .../taobao/weex/ui/IExternalModuleGetter.java   |  30 +
 .../taobao/weex/ui/IExternalMoudleGetter.java   |  29 -
 .../ui/animation/DimensionUpdateListener.java   |  14 +
 .../weex/ui/animation/WXAnimationBean.java      |   1 +
 .../ui/component/AbstractEditComponent.java     |  16 +-
 .../taobao/weex/ui/component/WXComponent.java   |  60 +-
 .../weex/ui/component/WXTextDecoration.java     |   1 +
 .../ui/component/list/StickyHeaderHelper.java   |   2 +-
 .../taobao/weex/ui/module/WXTimerModule.java    |  42 +-
 .../com/taobao/weex/ui/view/WXImageView.java    |  31 +-
 .../weex/ui/view/border/BorderDrawable.java     |   3 +-
 .../taobao/weex/utils/WXSoInstallMgrSdk.java    |   4 +
 .../java/com/taobao/weex/utils/WXViewUtils.java |  34 +-
 .../java/com/taobao/weex/WXSDKEngineTest.java   |   1 -
 .../java/com/taobao/weex/utils/WXUtilsTest.java |  16 +-
 android/weex_debug/build.gradle                 |  10 +-
 build/config.js                                 |   4 +-
 build/webpack.examples.web.config.js            |  29 +-
 build/webpack.test.web.config.js                |  21 +-
 dangerfile.js                                   | 166 ++++-
 doc/source/cn/references/bubble.md              | 146 +++++
 doc/source/cn/references/downgrade.md           |  11 +
 doc/source/cn/references/index.md               |   4 +-
 doc/source/cn/v-0.10/references/bubble.md       | 150 +++++
 doc/source/references/bubble.md                 | 146 +++++
 doc/source/references/downgrade.md              |  11 +
 doc/source/references/index.md                  |   2 +
 doc/source/v-0.10/references/bubble.md          | 150 +++++
 examples/iconfont.we                            |  63 +-
 examples/index.we                               |   1 +
 examples/vue/iconfont.vue                       |  80 ++-
 examples/vue/index.vue                          |   3 +-
 examples/vue/market/gcanvas.vue                 |   2 +-
 html5/render/native/index.js                    |  33 +-
 html5/render/native/setup.js                    |  58 ++
 html5/render/vue/README.md                      |  23 +-
 html5/render/vue/components/a.js                |  19 +
 html5/render/vue/components/div.js              |   1 +
 html5/render/vue/components/image.js            |   1 +
 html5/render/vue/components/index.js            |   2 +-
 html5/render/vue/components/input.js            |   1 +
 .../render/vue/components/scrollable/header.js  |   1 +
 .../vue/components/scrollable/list/cell.js      |   1 +
 .../vue/components/scrollable/list/index.js     |   1 +
 .../components/scrollable/loading-indicator.js  |   1 +
 .../render/vue/components/scrollable/loading.js |   1 +
 .../render/vue/components/scrollable/refresh.js |   1 +
 .../vue/components/scrollable/scroller.js       |   1 +
 html5/render/vue/components/slider/index.js     | 155 +----
 html5/render/vue/components/slider/indicator.js |  37 +-
 .../render/vue/components/slider/slideMixin.js  | 646 +++++++++++++++----
 .../vue/components/slider/slider-neighbor.css   |  21 -
 .../vue/components/slider/slider-neighbor.js    | 138 +---
 html5/render/vue/components/slider/slider.css   |  34 +
 html5/render/vue/components/switch.js           |   1 +
 html5/render/vue/components/text.js             |   1 +
 html5/render/vue/components/textarea.js         |   1 +
 html5/render/vue/components/video.js            |  28 +-
 html5/render/vue/components/web.js              |   1 +
 html5/render/vue/core/node.js                   |  71 +-
 html5/render/vue/core/style.js                  |  33 +-
 html5/render/vue/env/index.js                   |   4 +-
 html5/render/vue/env/viewport.js                |   6 +-
 html5/render/vue/env/weex.js                    |  33 +-
 html5/render/vue/env/wx-env.js                  |   8 +-
 html5/render/vue/index.js                       |  15 +
 html5/render/vue/lib/envd/index.js              | 179 +++++
 html5/render/vue/lib/envd/params.js             |  17 +
 html5/render/vue/lib/envd/version.js            | 152 +++++
 html5/render/vue/lib/gesture.js                 | 512 +++++++++++++++
 html5/render/vue/mixins/base.js                 |  54 +-
 html5/render/vue/mixins/scrollable.js           |  13 +-
 html5/render/vue/mixins/style.js                |  22 +-
 html5/render/vue/modules/animation.js           |   3 +
 html5/render/vue/modules/dom.js                 |  40 +-
 html5/render/vue/modules/modal/style.js         |   2 +-
 html5/render/vue/modules/modal/toast.js         |   3 +-
 html5/render/vue/utils/component.js             |  20 +-
 html5/render/vue/utils/func.js                  |  19 +
 html5/render/vue/utils/lazyload.js              |  17 +-
 html5/render/vue/utils/perf.js                  | 123 +++-
 html5/render/vue/utils/style.js                 | 151 +++--
 html5/runtime/vdom/document.js                  |   4 +-
 html5/runtime/vdom/element.js                   |  25 +-
 .../render/vue/data/dotvue/event-bubble-bar.vue |  13 +-
 .../render/vue/data/dotvue/event-bubble.vue     |  17 +-
 html5/test/render/vue/utils/style.js            |   9 +-
 html5/test/unit/default/vm/vm.js                |   2 +-
 .../WeexDemo.xcodeproj/project.pbxproj          |   6 +
 ios/playground/WeexDemo/AppDelegate.m           |   4 +
 .../WeexDemo/WXConfigCenterDefaultImpl.h        |  25 +
 .../WeexDemo/WXConfigCenterDefaultImpl.m        |  45 ++
 ios/playground/WeexDemo/WXDemoViewController.m  |  16 +-
 .../WeexDemo/extend/module/WXEventModule.m      |  16 +
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       |  32 +-
 ios/sdk/WeexSDK/Resources/main.js               |   8 -
 .../WeexSDK/Sources/Bridge/WXBridgeContext.m    |   5 +
 ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m |  85 ++-
 ios/sdk/WeexSDK/Sources/Bridge/WXModuleMethod.m |  13 +-
 .../WeexSDK/Sources/Component/WXAComponent.m    |  13 +-
 .../Sources/Component/WXComponent_internal.h    |   2 -
 .../Sources/Component/WXCycleSliderComponent.m  |  17 +-
 .../Sources/Component/WXEmbedComponent.m        |   2 +-
 .../Sources/Component/WXImageComponent.m        |  27 +-
 .../Sources/Component/WXIndicatorComponent.m    |   3 +
 .../WeexSDK/Sources/Component/WXListComponent.m |  64 +-
 .../Sources/Component/WXScrollerComponent.m     |  39 +-
 .../Sources/Component/WXSliderComponent.m       |   1 +
 .../Component/WXSliderNeighborComponent.m       |   9 +-
 .../WeexSDK/Sources/Component/WXTextComponent.m |  67 +-
 .../Sources/Component/WXVideoComponent.m        |  12 +-
 .../WeexSDK/Sources/Component/WXWebComponent.m  |  10 +-
 .../Sources/Controller/WXBaseViewController.m   |  19 +-
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m    |  13 +-
 .../WeexSDK/Sources/Events/WXComponent+Events.m |  34 +-
 .../WeexSDK/Sources/Layout/WXComponent+Layout.m |  24 +-
 .../WeexSDK/Sources/Loader/WXResourceLoader.m   |   2 +
 .../WeexSDK/Sources/Manager/WXBridgeManager.h   |   2 +
 .../Sources/Manager/WXComponentManager.h        |   2 +-
 .../Sources/Manager/WXComponentManager.m        |  32 +-
 ios/sdk/WeexSDK/Sources/Manager/WXRuleManager.m |   8 +-
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m     |  33 +-
 ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.h   |  17 +-
 ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m   |  49 +-
 .../WeexSDK/Sources/Module/WXAnimationLayout.h  |  49 ++
 .../WeexSDK/Sources/Module/WXAnimationLayout.m  | 115 ++++
 .../WeexSDK/Sources/Module/WXAnimationModule.m  |  30 +-
 ios/sdk/WeexSDK/Sources/Module/WXDomModule.m    |   1 +
 .../WeexSDK/Sources/Module/WXModalUIModule.m    |   1 +
 .../WeexSDK/Sources/Module/WXPrerenderManager.h |  89 +++
 .../WeexSDK/Sources/Module/WXPrerenderManager.m | 314 +++++++++
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m |   6 +-
 .../Sources/Network/WXResourceRequestHandler.h  |   2 +
 .../WXResourceRequestHandlerDefaultImpl.m       |   5 +-
 .../Sources/Protocol/WXConfigCenterProtocol.h   |  20 +
 .../Sources/Protocol/WXScrollerProtocol.h       |   7 +
 .../Sources/Protocol/WXURLRewriteProtocol.h     |   5 +-
 ios/sdk/WeexSDK/Sources/Utility/WXConvert.m     |   6 +-
 ios/sdk/WeexSDK/Sources/Utility/WXDefine.h      |   4 +-
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.h     |   7 +
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.m     |  98 +--
 .../View/WXComponent+PseudoClassManagement.m    |   4 +-
 .../Sources/View/WXComponent+ViewManagement.m   |  96 ++-
 ios/sdk/WeexSDK/Sources/View/WXView.m           |   1 +
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |   3 +
 package.json                                    |  19 +-
 packages/weex-vue-render/README.md              |  23 +-
 packages/weex-vue-render/package.json           |   2 +-
 pre-build/native-bundle-main.js                 |   8 +
 test/.gitignore                                 |   3 +-
 test/mocha.opts                                 |   2 +-
 test/pages/components/hyperlink.vue             |  31 +
 test/pages/components/hyperlink_target.vue      |  22 +
 test/pages/components/scroller-fixed.vue        |  14 +-
 test/pages/components/slider-common.vue         | 229 +++++++
 test/pages/css/border.vue                       | 119 +++-
 test/pages/modules/globalEvent.vue              |  48 ++
 test/pages/modules/vue_timer.vue                |  75 +++
 test/pages/modules/we_timer.we                  |  73 +++
 test/screenshot/border-android.png              | Bin 0 -> 196752 bytes
 test/screenshot/border-ios.png                  | Bin 168396 -> 161202 bytes
 test/screenshot/compositing-ios.png             | Bin 228661 -> 228306 bytes
 test/scripts/components/hyperlink.test.js       |  44 ++
 test/scripts/components/recycler.test.js        |  16 +-
 test/scripts/components/scroller-fixed.test.js  |   5 +-
 test/scripts/components/slider-common.test.js   | 100 +++
 test/scripts/components/text.test.js            |   2 +-
 test/scripts/css/border.test.js                 |   7 +-
 test/scripts/modules/globalEvent.test.js        |  60 ++
 test/scripts/modules/timer.test.js              | 100 +++
 test/scripts/util.js                            |  30 +-
 212 files changed, 6404 insertions(+), 1174 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/536c38a2/.gitignore
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/536c38a2/android/build.gradle
----------------------------------------------------------------------
diff --cc android/build.gradle
index d5c17ec,746e508..3111d95
--- a/android/build.gradle
+++ b/android/build.gradle
@@@ -9,10 -9,6 +9,10 @@@ buildscript 
      }
  }
  
++
 +plugins {
 +    id "de.undercouch.download" version "3.2.0"
 +}
- 
  repositories {
          mavenCentral()
          jcenter()

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/536c38a2/android/sdk/build.gradle
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/536c38a2/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/536c38a2/android/sdk/src/main/java/com/taobao/weex/ui/component/list/StickyHeaderHelper.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/536c38a2/dangerfile.js
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/536c38a2/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/536c38a2/ios/sdk/WeexSDK/Sources/Component/WXEmbedComponent.m
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/536c38a2/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.m
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/536c38a2/package.json
----------------------------------------------------------------------


[02/50] incubator-weex git commit: * [html5] set one throttled scroll handler for every list/scroller instance.

Posted by so...@apache.org.
* [html5] set one throttled scroll handler for every list/scroller instance.


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/2ec3fa8e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/2ec3fa8e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/2ec3fa8e

Branch: refs/heads/0.14-dev
Commit: 2ec3fa8e5f8cf26cf88ff664ca1d60190b24d356
Parents: e8e286b
Author: MrRaindrop <te...@gmail.com>
Authored: Thu May 25 17:35:18 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Thu May 25 17:35:18 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/mixins/scrollable.js | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2ec3fa8e/html5/render/vue/mixins/scrollable.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/mixins/scrollable.js b/html5/render/vue/mixins/scrollable.js
index b0a84de..9eb1209 100644
--- a/html5/render/vue/mixins/scrollable.js
+++ b/html5/render/vue/mixins/scrollable.js
@@ -18,16 +18,15 @@
  */
 import { getThrottleLazyload, throttle } from '../utils'
 
-let throttleScroll
 function getThrottledScroll (context) {
-  if (!throttleScroll) {
+  if (!context._throttleScroll) {
     const wrapper = context.$refs.wrapper
     const inner = context.$refs.inner
     let preOffset = (context.scrollDirection === 'horizontal'
         ? wrapper.scrollLeft
         : wrapper.scrollTop)
       || 0
-    throttleScroll = throttle(function (evt) {
+    context._throttleScroll = throttle(function (evt) {
       const offset = context.scrollDirection === 'horizontal'
         ? wrapper.scrollLeft
         : wrapper.scrollTop
@@ -65,7 +64,7 @@ function getThrottledScroll (context) {
       }
     }, 16, true)
   }
-  return throttleScroll
+  return context._throttleScroll
 }
 
 export default {


[39/50] incubator-weex git commit: Merge branch 'dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into dev

Posted by so...@apache.org.
Merge branch 'dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into 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/c72b23ae
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/c72b23ae
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/c72b23ae

Branch: refs/heads/0.14-dev
Commit: c72b23aee30fd898d9764b506d8580e4c40afb2e
Parents: 648e272 38c4beb
Author: tancy <ro...@gmail.com>
Authored: Tue Jun 6 13:38:06 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Tue Jun 6 13:38:06 2017 +0800

----------------------------------------------------------------------
 .../cn/v-0.10/references/components/input.md    | 216 +++++++++++++++--
 doc/source/references/components/input.md       | 231 +++++++++++++++----
 2 files changed, 381 insertions(+), 66 deletions(-)
----------------------------------------------------------------------



[21/50] incubator-weex git commit: + [ios] fixbug: cycle slider

Posted by so...@apache.org.
+ [ios] fixbug: cycle 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/a4cc8dfd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/a4cc8dfd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/a4cc8dfd

Branch: refs/heads/0.14-dev
Commit: a4cc8dfd9745aeb3efc4eabbffd1a00e771d5067
Parents: 8a1653c
Author: 齐山 <su...@163.com>
Authored: Fri May 26 18:03:48 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Jun 2 11:10:04 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/a4cc8dfd/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m
index 3265308..517af72 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m
@@ -586,9 +586,10 @@ typedef NS_ENUM(NSInteger, Direction) {
 
 - (void)recycleSliderView:(WXRecycleSliderView *)recycleSliderView didScrollToItemAtIndex:(NSInteger)index
 {
-    self.currentIndex = index;
-    if (_sliderChangeEvent) {
+    
+    if (_sliderChangeEvent && index != self.currentIndex) {
         [self fireEvent:@"change" params:@{@"index":@(index)} domChanges:@{@"attrs": @{@"index": @(index)}}];
+        self.currentIndex = index;
     }
 }
 


[25/50] incubator-weex git commit: * [all] fix license problem

Posted by so...@apache.org.
* [all] fix license problem


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/dcf9a833
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/dcf9a833
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/dcf9a833

Branch: refs/heads/0.14-dev
Commit: dcf9a83360b4403ffbdbfb3e168a68d1ff7a2b38
Parents: 41e01d7
Author: sospartan <so...@apache.org>
Authored: Fri Jun 2 12:07:47 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Fri Jun 2 12:07:47 2017 +0800

----------------------------------------------------------------------
 LICENSE                                           |  2 +-
 .../ExtendedStaggeredGridLayoutManager.java       | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/dcf9a833/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
index ca146a6..8f1309a 100644
--- a/LICENSE
+++ b/LICENSE
@@ -187,7 +187,7 @@
       same "printed page" as the copyright notice for easier
       identification within third-party archives.
 
-   Copyright 2017 The Apache Software Foundation
+   Copyright [yyyy] [name of copyright owner]
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/dcf9a833/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/ExtendedStaggeredGridLayoutManager.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/ExtendedStaggeredGridLayoutManager.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/ExtendedStaggeredGridLayoutManager.java
index 0534df9..ee27ab2 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/ExtendedStaggeredGridLayoutManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/ExtendedStaggeredGridLayoutManager.java
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package com.taobao.weex.ui.view.listview;
 
 import android.support.v7.widget.RecyclerView;


[28/50] incubator-weex git commit: * [android] fix travis config

Posted by so...@apache.org.
* [android] fix travis config


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/d2f4cfe7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/d2f4cfe7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/d2f4cfe7

Branch: refs/heads/0.14-dev
Commit: d2f4cfe76ca0ec716a2c3182be34bcaf872292f1
Parents: 1216f81
Author: sospartan <so...@apache.org>
Authored: Fri Jun 2 12:19:11 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Fri Jun 2 14:00:34 2017 +0800

----------------------------------------------------------------------
 .travis.yml | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d2f4cfe7/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 132a085..d0b7675 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -41,6 +41,8 @@ matrix:
           components:
             - platform-tools
             - tools
+            - build-tools-23.0.2
+            - build-tools-23.0.3
             - build-tools-24.0.3
             - android-24
             - android-23


[16/50] incubator-weex git commit: * [ios] use range compare

Posted by so...@apache.org.
* [ios] use range compare


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/9778415e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/9778415e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/9778415e

Branch: refs/heads/0.14-dev
Commit: 9778415ebbaac9e0004a01d2e9843c062594f284
Parents: b107099
Author: acton393 <zh...@gmail.com>
Authored: Thu Jun 1 15:26:30 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Jun 2 10:27:00 2017 +0800

----------------------------------------------------------------------
 .../WeexSDK/Sources/Component/WXTextComponent.m    | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9778415e/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
index f560aef..90ab4ce 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
@@ -746,17 +746,16 @@ do {\
         CTLineTruncationType truncationType = kCTLineTruncationEnd;
         NSAttributedString *attributedString = [self buildCTAttributeString];
         NSAttributedString * lastLineText = nil;
-        @try {
-            lastLineText = [attributedString attributedSubstringFromRange: WXNSRangeFromCFRange(CTLineGetStringRange(lastLine))];
-        } @catch (NSException *exception) {
+        NSRange lastLineTextRange = WXNSRangeFromCFRange(CTLineGetStringRange(lastLine));
+        NSRange attributeStringRange = NSRangeFromString(attributedString.string);
+        if (!NSEqualRanges(NSUnionRange(lastLineTextRange, attributeStringRange), attributeStringRange)) {
+            // out of bounds
+            lastLineTextRange = NSMakeRange(attributeStringRange.location, attributeStringRange.length);
+        }
+        lastLineText = [attributedString attributedSubstringFromRange: lastLineTextRange];
+        if (!lastLineText) {
             lastLineText = attributedString;
-        } @finally {
-            if (!lastLineText) {
-                lastLineText = attributedString;
-            }
-            //nothing
         }
-        
         NSMutableAttributedString *mutableLastLineText = lastLineText.mutableCopy;
         [mutableLastLineText appendAttributedString:truncationToken];
         CTLineRef ctLastLineExtend = CTLineCreateWithAttributedString((__bridge CFAttributedStringRef)mutableLastLineText);


[41/50] incubator-weex git commit: * [doc] fix users app layout bug

Posted by so...@apache.org.
* [doc] fix users app layout bug


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/9c73ec8c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/9c73ec8c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/9c73ec8c

Branch: refs/heads/0.14-dev
Commit: 9c73ec8ca3a0e3f0ec50a11580e39cf4dc30c10d
Parents: c72b23a
Author: tancy <ro...@gmail.com>
Authored: Tue Jun 6 16:14:38 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Tue Jun 6 16:14:38 2017 +0800

----------------------------------------------------------------------
 doc/themes/weex/source/css/index.scss | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9c73ec8c/doc/themes/weex/source/css/index.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/index.scss b/doc/themes/weex/source/css/index.scss
index 7b5454f..e1e744b 100644
--- a/doc/themes/weex/source/css/index.scss
+++ b/doc/themes/weex/source/css/index.scss
@@ -48,7 +48,7 @@
 
 .horizon{
   .textbox {
-    flex: 2;
+    flex: 1;
     display: flex;
     flex-direction: column;
     justify-content: center;


[37/50] incubator-weex git commit: + [ios] update input doc

Posted by so...@apache.org.
+ [ios] update input doc


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/6baccbca
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/6baccbca
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/6baccbca

Branch: refs/heads/0.14-dev
Commit: 6baccbca96e0f1afec5de673ca3002ad46ee1c22
Parents: 38c4beb
Author: 齐山 <su...@163.com>
Authored: Tue Jun 6 13:03:40 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Tue Jun 6 13:03:40 2017 +0800

----------------------------------------------------------------------
 doc/source/cn/references/components/input.md | 239 ++++++++++++++++++----
 1 file changed, 194 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6baccbca/doc/source/cn/references/components/input.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/components/input.md b/doc/source/cn/references/components/input.md
index 83cea39..796fb1f 100644
--- a/doc/source/cn/references/components/input.md
+++ b/doc/source/cn/references/components/input.md
@@ -64,7 +64,7 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
   事件中 event 对象属性:
 
   - `value`: 触发事件的组件;
-  - `timestamp`: 事件发生时的时间戳。
+  - `timestamp`: 事件发生时的时间戳,仅支持Android。
 
 - `change`: 当用户输入完成时触发。通常在 `blur` 事件之后。
 
@@ -72,19 +72,19 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
 
   - `value`: 触发事件的组件;
 
-  - `timestamp`: 事件发生时的时间戳。
+  - `timestamp`: 事件发生时的时间戳,仅支持Android。
 
 - `focus`: 组件获得输入焦点。
 
   事件中 event 对象属性:
 
-  - `timestamp`: 事件发生时的时间戳。
+  - `timestamp`: 事件发生时的时间戳,仅支持Android。
 
 - `blur`: 组件失去输入焦点。
 
   事件中 event 对象属性:
 
-  - `timestamp`: 事件发生时的时间戳。
+  - `timestamp`: 事件发生时的时间戳,仅支持Android。
 - `return`: 键盘点击返回键。
 
     事件中 event 对象属性:
@@ -130,64 +130,213 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
 
 ```html
 <template>
-  <div class="wrapper">
-    <input ref="input" class="input" type="text" @input="oninput" @change="onchange" @focus="onfocus" @blur="onblur"></input>
+  <div>
+    <div>
+      <text style="font-size: 40px">oninput: {{txtInput}}</text>
+      <text style="font-size: 40px">onchange: {{txtChange}}</text>
+      <text style="font-size: 40px">onreturntype: {{txtReturnType}}</text>
+    </div>
+    <scroller>
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = text</text>
+        </div>
+        <input type="text" placeholder="Input Text" class="input" :autofocus=true value="" @change="onchange" @input="oninput" @focus="onfocus" @blur="onblur"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = password</text>
+        </div>
+        <input type="password" placeholder="Input Password" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = url</text>
+        </div>
+        <input type="url" placeholder="Input URL" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = email</text>
+        </div>
+        <input type="email" placeholder="Input Email" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = tel</text>
+        </div>
+        <input type="tel" placeholder="Input Tel" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = time</text>
+        </div>
+        <input type="time" placeholder="Input Time" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = date</text>
+        </div>
+        <input type="date" placeholder="Input Date" class="input" @change="onchange" @input="oninput" max="2017-12-12" min="2015-01-01"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = default</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="default" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = go</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="go" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = next</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="next" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = search</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="search" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = send</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="send" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = done</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="done" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">function focus() & blur()</text>
+        </div>
+        <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
+          <text class="button" value="Focus" type="primary" @click="focus"></text>
+          <text class="button" value="Blur" type="primary" @click="blur"></text>
+        </div>
+
+        <input type="text" placeholder="Input1" class="input" value="" ref="input1"/>
+      </div>
+
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input selection</text>
+        </div>
+        <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
+          <text class="button" value="setRange" type="primary" @click="setRange"></text>
+        </div>
+        <input type="text"  ref="inputselection" placeholder="please input" value="123456789"  class="input" @change="onchange" @return = "onreturn" @input="oninput"/>
+      </div>
+
+
+
+    </scroller>
   </div>
 </template>
 
+<style scoped>
+  .input {
+    font-size: 60px;
+    height: 80px;
+    width: 750px;
+  }
+  .button {
+    font-size: 36;
+    width: 200;
+    color: #41B883;
+    text-align: center;
+    padding-top: 10;
+    padding-bottom: 10;
+    border-width: 2;
+    border-style: solid;
+    margin-right: 20;
+    border-color: rgb(162, 217, 192);
+    background-color: rgba(162, 217, 192, 0.2);
+  }
+</style>
+
 <script>
   const modal = weex.requireModule('modal')
-
-  export default {
+  module.exports = {
+    data: function () {
+      return {
+        txtInput: '',
+        txtChange: '',
+        txtReturnType: '',
+        txtSelection:'',
+        autofocus: false
+      };
+    },
     methods: {
-      oninput (event) {
-        console.log('oninput:', event.value)
-        modal.toast({
-          message: `oninput: ${event.value}`,
-          duration: 0.8
-        })
+      ready: function () {
+        var self = this;
+        setTimeout(function () {
+          self.autofocus = true;
+        }, 1000);
       },
-      onchange (event) {
-        console.log('onchange:', event.value)
-        modal.toast({
-          message: `onchange: ${event.value}`,
-          duration: 0.8
-        })
+      onchange: function (event) {
+        this.txtChange = event.value;
+        console.log('onchange', event.value);
+      },
+      onreturn: function (event) {
+        this.txtReturnType = event.returnKeyType;
+        console.log('onreturn', event.type);
+      },
+      oninput: function (event) {
+        this.txtInput = event.value;
+        console.log('oninput', event.value);
+      },
+      focus: function () {
+        this.$refs['input1'].focus();
+      },
+      blur: function () {
+        this.$refs['input1'].blur();
+      },
+      setRange: function() {
+        console.log(this.$refs["inputselection"]);
+        this.$refs["inputselection"].setSelectionRange(2, 6);
       },
-      onfocus (event) {
-        console.log('onfocus:', event.value)
+      onfocus () {
+        console.log('onfocus:');
         modal.toast({
-          message: `onfocus: ${event.value}`,
+          message: 'onfocus',
           duration: 0.8
         })
       },
-      onblur (event) {
-        console.log('onblur:', event.value)
+      onblur () {
+        console.log('onblur:');
         modal.toast({
-          message: `input blur: ${event.value}`,
+          message: 'input blur',
           duration: 0.8
         })
       }
     }
-  }
+  };
 </script>
-
-<style>
-  .input {
-    font-size: 50px;
-    width: 650px;
-    margin-top: 50px;
-    margin-left: 50px;
-    padding-top: 20px;
-    padding-bottom: 20px;
-    padding-left: 20px;
-    padding-right: 20px;
-    color: #666666;
-    border-width: 2px;
-    border-style: solid;
-    border-color: #41B883;
-  }
-</style>
 ```
 
-[try it](http://dotwe.org/vue/e56d9ebeede8f80bbc8b53637395d22f)
+[体验一下](http://dotwe.org/vue/dd83d941d2364f2849e45dc3c5d91ab4)


[06/50] incubator-weex git commit: * [html5] fix dom.getComponentRect.

Posted by so...@apache.org.
* [html5] fix dom.getComponentRect.


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/948452fa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/948452fa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/948452fa

Branch: refs/heads/0.14-dev
Commit: 948452faebd7b83c6f6f21a9bf0a05af297723b6
Parents: 5350069
Author: MrRaindrop <te...@gmail.com>
Authored: Sat May 27 15:19:32 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Sat May 27 15:19:32 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/modules/dom.js | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/948452fa/html5/render/vue/modules/dom.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/modules/dom.js b/html5/render/vue/modules/dom.js
index 2efccfc..8280ab5 100644
--- a/html5/render/vue/modules/dom.js
+++ b/html5/render/vue/modules/dom.js
@@ -160,22 +160,32 @@ export default {
       vnode = vnode[0]
     }
 
+    const scale = window.weex.config.env.scale
     const info = { result: false }
+    const rectKeys = ['width', 'height', 'top', 'bottom', 'left', 'right']
+
+    function recalc (rect) {
+      const res = {}
+      rectKeys.forEach(key => {
+        res[key] = rect[key] / scale
+      })
+      return res
+    }
 
     if (vnode && vnode === 'viewport') {
       info.result = true
-      info.size = {
+      info.size = recalc({
         width: document.documentElement.clientWidth,
         height: document.documentElement.clientHeight,
         top: 0,
         left: 0,
         right: document.documentElement.clientWidth,
         bottom: document.documentElement.clientHeight
-      }
+      })
     }
     else if (vnode && vnode.$el) {
       info.result = true
-      info.size = vnode.$el.getBoundingClientRect()
+      info.size = recalc(vnode.$el.getBoundingClientRect())
     }
 
     const message = info.result ? info : {


[49/50] incubator-weex git commit: Merge branch 'dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into dev

Posted by so...@apache.org.
Merge branch 'dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into 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/a6edb3fa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/a6edb3fa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/a6edb3fa

Branch: refs/heads/0.14-dev
Commit: a6edb3fad304b8bb837df3ba94d0e50e4ea6e6d9
Parents: 536c38a 2505d08
Author: sospartan <so...@apache.org>
Authored: Wed Jun 7 16:05:15 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Wed Jun 7 16:05:15 2017 +0800

----------------------------------------------------------------------
 doc/source/cn/references/modules/animation.md |  4 ++--
 doc/source/references/modules/animation.md    | 12 ++++++------
 2 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------



[09/50] incubator-weex git commit: Merge branch '0.13-dev-web' into 0.13-dev-web-slider-refactor

Posted by so...@apache.org.
Merge branch '0.13-dev-web' into 0.13-dev-web-slider-refactor


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/804178a8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/804178a8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/804178a8

Branch: refs/heads/0.14-dev
Commit: 804178a836cab9747cc03a0734deab8087e56dee
Parents: f2bd128 b3f49bf
Author: MrRaindrop <te...@gmail.com>
Authored: Sat May 27 15:21:53 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Sat May 27 15:21:53 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/env/viewport.js |  6 ++----
 html5/render/vue/modules/dom.js  | 16 +++++++++++++---
 html5/render/vue/utils/style.js  |  2 +-
 3 files changed, 16 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/804178a8/html5/render/vue/utils/style.js
----------------------------------------------------------------------


[36/50] incubator-weex git commit: + [example] update input demo

Posted by so...@apache.org.
+ [example] update input demo


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/38c4bebb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/38c4bebb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/38c4bebb

Branch: refs/heads/0.14-dev
Commit: 38c4bebb3cf51d201a235f3ec502ff3d03e57e32
Parents: 1c0d992
Author: 齐山 <su...@163.com>
Authored: Tue Jun 6 12:43:55 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Tue Jun 6 12:43:55 2017 +0800

----------------------------------------------------------------------
 .../cn/v-0.10/references/components/input.md    | 216 +++++++++++++++--
 doc/source/references/components/input.md       | 231 +++++++++++++++----
 2 files changed, 381 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38c4bebb/doc/source/cn/v-0.10/references/components/input.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/references/components/input.md b/doc/source/cn/v-0.10/references/components/input.md
index a1964f1..9a7b8ff 100644
--- a/doc/source/cn/v-0.10/references/components/input.md
+++ b/doc/source/cn/v-0.10/references/components/input.md
@@ -54,7 +54,7 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
   事件中 event 对象属性:
 
   - `value`: 触发事件的组件;
-  - `timestamp`: 事件发生时的时间戳。
+  - `timestamp`: 事件发生时的时间戳,仅支持Android。
   
 - `change`: 当用户输入完成时触发。通常在 `blur` 事件之后。
 
@@ -62,19 +62,19 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
 
   - `value`: 触发事件的组件;
   
-  - `timestamp`: 事件发生时的时间戳。
+  - `timestamp`: 事件发生时的时间戳,仅支持Android。
   
 - `focus`: 组件获得输入焦点。
 
   事件中 event 对象属性:
 
-  - `timestamp`: 事件发生时的时间戳。
+  - `timestamp`: 事件发生时的时间戳,仅支持Android。
   
 - `blur`: 组件失去输入焦点。
 
   事件中 event 对象属性:
 
-  - `timestamp`: 事件发生时的时间戳。
+  - `timestamp`: 事件发生时的时间戳,仅支持Android。
   
 - 通用事件
 
@@ -98,46 +98,212 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
 ```html
 <template>
   <div>
-    <input
-      type="text"
-      placeholder="Input Something"
-      class="input"
-      autofocus="true"
-      value=""
-      onchange="onchange"
-      oninput="oninput" 
-    />
-    <text>oninput: {{txtInput}}</text>
-    <text>onchange: {{txtChange}}</text>
+    <div>
+      <text style="font-size: 40px">oninput: {{txtInput}}</text>
+      <text style="font-size: 40px">onchange: {{txtChange}}</text>
+      <text style="font-size: 40px">onreturntype: {{txtReturnType}}</text>
+    </div>
+    <scroller>
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = text</text>
+        </div>
+        <input type="text" placeholder="Input Text" class="input" :autofocus=true value="" @change="onchange" @input="oninput" @focus="onfocus" @blur="onblur"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = password</text>
+        </div>
+        <input type="password" placeholder="Input Password" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = url</text>
+        </div>
+        <input type="url" placeholder="Input URL" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = email</text>
+        </div>
+        <input type="email" placeholder="Input Email" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = tel</text>
+        </div>
+        <input type="tel" placeholder="Input Tel" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = time</text>
+        </div>
+        <input type="time" placeholder="Input Time" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = date</text>
+        </div>
+        <input type="date" placeholder="Input Date" class="input" @change="onchange" @input="oninput" max="2017-12-12" min="2015-01-01"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = default</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="default" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = go</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="go" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = next</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="next" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = search</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="search" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = send</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="send" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = done</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="done" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">function focus() & blur()</text>
+        </div>
+        <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
+          <text class="button" value="Focus" type="primary" @click="focus"></text>
+          <text class="button" value="Blur" type="primary" @click="blur"></text>
+        </div>
+
+        <input type="text" placeholder="Input1" class="input" value="" ref="input1"/>
+      </div>
+
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input selection</text>
+        </div>
+        <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
+          <text class="button" value="setRange" type="primary" @click="setRange"></text>
+        </div>
+        <input type="text"  ref="inputselection" placeholder="please input" value="123456789"  class="input" @change="onchange" @return = "onreturn" @input="oninput"/>
+      </div>
+
+
+
+    </scroller>
   </div>
 </template>
 
-<style>
+<style scoped>
   .input {
-    font-size: 60;
-    height: 80;
-    width: 400;
+    font-size: 60px;
+    height: 80px;
+    width: 750px;
+  }
+  .button {
+    font-size: 36;
+    width: 200;
+    color: #41B883;
+    text-align: center;
+    padding-top: 10;
+    padding-bottom: 10;
+    border-width: 2;
+    border-style: solid;
+    margin-right: 20;
+    border-color: rgb(162, 217, 192);
+    background-color: rgba(162, 217, 192, 0.2);
   }
 </style>
 
 <script>
+  const modal = weex.requireModule('modal')
   module.exports = {
-    data: {
-      txtInput: '',
-      txtChange: ''
+    data: function () {
+      return {
+        txtInput: '',
+        txtChange: '',
+        txtReturnType: '',
+        txtSelection:'',
+        autofocus: false
+      };
     },
     methods: {
-      onchange: function(event) {
+      ready: function () {
+        var self = this;
+        setTimeout(function () {
+          self.autofocus = true;
+        }, 1000);
+      },
+      onchange: function (event) {
         this.txtChange = event.value;
         console.log('onchange', event.value);
       },
-      oninput: function(event) {
+      onreturn: function (event) {
+        this.txtReturnType = event.returnKeyType;
+        console.log('onreturn', event.type);
+      },
+      oninput: function (event) {
         this.txtInput = event.value;
         console.log('oninput', event.value);
+      },
+      focus: function () {
+        this.$refs['input1'].focus();
+      },
+      blur: function () {
+        this.$refs['input1'].blur();
+      },
+      setRange: function() {
+        console.log(this.$refs["inputselection"]);
+        this.$refs["inputselection"].setSelectionRange(2, 6);
+      },
+      onfocus () {
+        console.log('onfocus:');
+        modal.toast({
+          message: 'onfocus',
+          duration: 0.8
+        })
+      },
+      onblur () {
+        console.log('onblur:');
+        modal.toast({
+          message: 'input blur',
+          duration: 0.8
+        })
       }
     }
   };
 </script>
 ```
 
-[体验一下](http://dotwe.org/ccf22bec1766abca6a81fd4b658c8827)
+[体验一下](http://dotwe.org/vue/dd83d941d2364f2849e45dc3c5d91ab4)

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/38c4bebb/doc/source/references/components/input.md
----------------------------------------------------------------------
diff --git a/doc/source/references/components/input.md b/doc/source/references/components/input.md
index 13d7469..0864817 100644
--- a/doc/source/references/components/input.md
+++ b/doc/source/references/components/input.md
@@ -108,64 +108,213 @@ does not support the common-event 'click'. Please listen to the 'input' or '
 
 ```html
 <template>
-  <div class="wrapper">
-    <input ref="input" class="input" type="text" @input="oninput" @change="onchange" @focus="onfocus" @blur="onblur"></input>
+  <div>
+    <div>
+      <text style="font-size: 40px">oninput: {{txtInput}}</text>
+      <text style="font-size: 40px">onchange: {{txtChange}}</text>
+      <text style="font-size: 40px">onreturntype: {{txtReturnType}}</text>
+    </div>
+    <scroller>
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = text</text>
+        </div>
+        <input type="text" placeholder="Input Text" class="input" :autofocus=true value="" @change="onchange" @input="oninput" @focus="onfocus" @blur="onblur"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = password</text>
+        </div>
+        <input type="password" placeholder="Input Password" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = url</text>
+        </div>
+        <input type="url" placeholder="Input URL" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = email</text>
+        </div>
+        <input type="email" placeholder="Input Email" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = tel</text>
+        </div>
+        <input type="tel" placeholder="Input Tel" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = time</text>
+        </div>
+        <input type="time" placeholder="Input Time" class="input" @change="onchange" @input="oninput"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = date</text>
+        </div>
+        <input type="date" placeholder="Input Date" class="input" @change="onchange" @input="oninput" max="2017-12-12" min="2015-01-01"/>
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = default</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="default" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = go</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="go" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = next</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="next" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = search</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="search" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = send</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="send" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = done</text>
+        </div>
+        <input type="text" placeholder="please input" return-key-type="done" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
+      </div>
+
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">function focus() & blur()</text>
+        </div>
+        <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
+          <text class="button" value="Focus" type="primary" @click="focus"></text>
+          <text class="button" value="Blur" type="primary" @click="blur"></text>
+        </div>
+
+        <input type="text" placeholder="Input1" class="input" value="" ref="input1"/>
+      </div>
+
+
+      <div>
+        <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input selection</text>
+        </div>
+        <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
+          <text class="button" value="setRange" type="primary" @click="setRange"></text>
+        </div>
+        <input type="text"  ref="inputselection" placeholder="please input" value="123456789"  class="input" @change="onchange" @return = "onreturn" @input="oninput"/>
+      </div>
+
+
+
+    </scroller>
   </div>
 </template>
 
+<style scoped>
+  .input {
+    font-size: 60px;
+    height: 80px;
+    width: 750px;
+  }
+  .button {
+    font-size: 36;
+    width: 200;
+    color: #41B883;
+    text-align: center;
+    padding-top: 10;
+    padding-bottom: 10;
+    border-width: 2;
+    border-style: solid;
+    margin-right: 20;
+    border-color: rgb(162, 217, 192);
+    background-color: rgba(162, 217, 192, 0.2);
+  }
+</style>
+
 <script>
   const modal = weex.requireModule('modal')
-
-  export default {
+  module.exports = {
+    data: function () {
+      return {
+        txtInput: '',
+        txtChange: '',
+        txtReturnType: '',
+        txtSelection:'',
+        autofocus: false
+      };
+    },
     methods: {
-      oninput (event) {
-        console.log('oninput:', event.value)
-        modal.toast({
-          message: `oninput: ${event.value}`,
-          duration: 0.8
-        })
+      ready: function () {
+        var self = this;
+        setTimeout(function () {
+          self.autofocus = true;
+        }, 1000);
       },
-      onchange (event) {
-        console.log('onchange:', event.value)
-        modal.toast({
-          message: `onchange: ${event.value}`,
-          duration: 0.8
-        })
+      onchange: function (event) {
+        this.txtChange = event.value;
+        console.log('onchange', event.value);
+      },
+      onreturn: function (event) {
+        this.txtReturnType = event.returnKeyType;
+        console.log('onreturn', event.type);
+      },
+      oninput: function (event) {
+        this.txtInput = event.value;
+        console.log('oninput', event.value);
+      },
+      focus: function () {
+        this.$refs['input1'].focus();
+      },
+      blur: function () {
+        this.$refs['input1'].blur();
+      },
+      setRange: function() {
+        console.log(this.$refs["inputselection"]);
+        this.$refs["inputselection"].setSelectionRange(2, 6);
       },
-      onfocus (event) {
-        console.log('onfocus:', event.value)
+      onfocus () {
+        console.log('onfocus:');
         modal.toast({
-          message: `onfocus: ${event.value}`,
+          message: 'onfocus',
           duration: 0.8
         })
       },
-      onblur (event) {
-        console.log('onblur:', event.value)
+      onblur () {
+        console.log('onblur:');
         modal.toast({
-          message: `input blur: ${event.value}`,
+          message: 'input blur',
           duration: 0.8
         })
       }
     }
-  }
+  };
 </script>
-
-<style>
-  .input {
-    font-size: 50px;
-    width: 650px;
-    margin-top: 50px;
-    margin-left: 50px;
-    padding-top: 20px;
-    padding-bottom: 20px;
-    padding-left: 20px;
-    padding-right: 20px;
-    color: #666666;
-    border-width: 2px;
-    border-style: solid;
-    border-color: #41B883;
-  }
-</style>
 ```
 
-[try it](http://dotwe.org/vue/e56d9ebeede8f80bbc8b53637395d22f)
+[try it](http://dotwe.org/vue/dd83d941d2364f2849e45dc3c5d91ab4)


[19/50] incubator-weex git commit: * [ios] fix text description about coretext

Posted by so...@apache.org.
* [ios] fix text description about coretext


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/3a98c094
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/3a98c094
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/3a98c094

Branch: refs/heads/0.14-dev
Commit: 3a98c094aa2d3667d13e4730030e6dd0584e0820
Parents: 99a9bbd
Author: acton393 <zh...@gmail.com>
Authored: Fri May 26 11:58:24 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Jun 2 10:27:00 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3a98c094/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
index e6be027..d370964 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
@@ -64,7 +64,11 @@
 {
     NSString *superDescription = super.description;
     NSRange semicolonRange = [superDescription rangeOfString:@";"];
-    NSString *replacement = [NSString stringWithFormat:@"; text: %@; frame:%f,%f,%f,%f", _textStorage.string, self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.height];
+    NSString * content = _textStorage.string;
+    if ([(WXTextComponent*)self.wx_component useCoreText]) {
+        content = [(WXTextComponent*)self.wx_component valueForKey:@"_text"];
+    }
+    NSString *replacement = [NSString stringWithFormat:@"; text: %@; frame:%f,%f,%f,%f", content, self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.height];
     return [superDescription stringByReplacingCharactersInRange:semicolonRange withString:replacement];
 }
 


[08/50] incubator-weex git commit: + [html5] add style util for css transform

Posted by so...@apache.org.
+ [html5] add style util for css transform


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/b3f49bf6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/b3f49bf6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/b3f49bf6

Branch: refs/heads/0.14-dev
Commit: b3f49bf69becb6082b7ab55c61f8f6e32861e22c
Parents: 4b856ae
Author: MrRaindrop <te...@gmail.com>
Authored: Sat May 27 15:20:34 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Sat May 27 15:20:34 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/utils/style.js | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b3f49bf6/html5/render/vue/utils/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/utils/style.js b/html5/render/vue/utils/style.js
index c4f7d18..013ca82 100644
--- a/html5/render/vue/utils/style.js
+++ b/html5/render/vue/utils/style.js
@@ -162,6 +162,35 @@ export function normalizeStyle (style: {}) {
 }
 
 /**
+ * get transformObj
+ */
+export function getTransformObj (elm: HTMLElement): any {
+  let styleObj = {}
+  if (!elm) { return styleObj }
+  const transformStr = elm.style.webkitTransform || elm.style.transform
+  if (transformStr && transformStr.match(/(?: *(?:translate|rotate|scale)[^(]*\([^(]+\))+/i)) {
+    styleObj = transformStr.trim().replace(/, +/g, ',').split(' ').reduce(function (pre, str) {
+      ['translate', 'scale', 'rotate'].forEach(function (name) {
+        if (new RegExp(name, 'i').test(str)) {
+          pre[name] = str
+        }
+      })
+      return pre
+    }, {})
+  }
+  return styleObj
+}
+
+/**
+ * translate a transform string from a transformObj.
+ */
+export function getTransformStr (obj: {}): string {
+  return Object.keys(obj).reduce(function (pre, key) {
+    return pre + obj[key] + ' '
+  }, '')
+}
+
+/**
  * add transform style to element.
  * @param {HTMLElement} elm
  * @param {object} style: transform object, format is like this:


[40/50] incubator-weex git commit: Merge branch 'dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into example-bugfix-input-dev

Posted by so...@apache.org.
Merge branch 'dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into example-bugfix-input-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/466c4ee8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/466c4ee8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/466c4ee8

Branch: refs/heads/0.14-dev
Commit: 466c4ee8a7d9876a96ce11cf42bccf27a0d906a6
Parents: 6baccbc c72b23a
Author: 齐山 <su...@163.com>
Authored: Tue Jun 6 13:46:29 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Tue Jun 6 13:46:29 2017 +0800

----------------------------------------------------------------------
 doc/themes/weex/languages/cn.yml              |  12 +++++++++
 doc/themes/weex/languages/en.yml              |  13 +++++++++-
 doc/themes/weex/layout/index.ejs              |  28 +++++++++++++++++++++
 doc/themes/weex/source/css/index.scss         |  17 ++++++++++++-
 doc/themes/weex/source/images/fliggy.png      | Bin 0 -> 19329 bytes
 doc/themes/weex/source/images/juhuasuan.png   | Bin 0 -> 46340 bytes
 doc/themes/weex/source/images/qianniu.png     | Bin 0 -> 19852 bytes
 doc/themes/weex/source/images/taopiaopiao.png | Bin 0 -> 12460 bytes
 8 files changed, 68 insertions(+), 2 deletions(-)
----------------------------------------------------------------------



[30/50] 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/c2a853b5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/c2a853b5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/c2a853b5

Branch: refs/heads/0.14-dev
Commit: c2a853b55d76b2a90c7497c2cdfe5bf52e823af0
Parents: 776a74a
Author: MrRaindrop <te...@gmail.com>
Authored: Sat Jun 3 11:16:55 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Sat Jun 3 11:16:55 2017 +0800

----------------------------------------------------------------------
 .../render/vue/components/slider/slideMixin.js  | 145 ++++++++++---------
 html5/render/vue/components/slider/slider.css   |   6 +-
 2 files changed, 83 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c2a853b5/html5/render/vue/components/slider/slideMixin.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/slider/slideMixin.js b/html5/render/vue/components/slider/slideMixin.js
index 907687e..2655fbb 100644
--- a/html5/render/vue/components/slider/slideMixin.js
+++ b/html5/render/vue/components/slider/slideMixin.js
@@ -21,35 +21,34 @@ import {
   throttle,
   extend,
   createEvent,
-  /* nextFrame, */
   fireLazyload,
   addTransform,
   copyTransform,
   getTransformObj,
-  bind
+  bind,
+  extendKeys
 } from '../../utils'
 import { extractComponentStyle, createEventMap } from '../../core'
 
-const TRANSITION_TIME = 100
-const NEIGHBOR_SCALE_TIME = 50
+const TRANSITION_TIME = 400
+const NEIGHBOR_SCALE_TIME = 100
 const MAIN_SLIDE_OPACITY = 1
-const THROTTLE_SCROLL_TIME = 16
+const THROTTLE_SCROLL_TIME = 25
+const INTERVAL_MINIMUM = 200
 
 export default {
   created () {
     this._clones = []
     this.innerOffset = 0
     this._indicator = null
-    this.$nextTick(() => {
-      this._updateLayout()
-    })
   },
 
   beforeUpdate () {
-    this._updateLayout()
+    this._getWrapperSize()
   },
 
   updated () {
+    this._startAutoPlay()
     const children = this.$children
     const len = children && children.length
     if (children && len > 0) {
@@ -67,14 +66,14 @@ export default {
   },
 
   mounted () {
-    this._updateLayout()
+    this._getWrapperSize()
     this._startAutoPlay()
     this._slideTo(this.currentIndex)
     fireLazyload(this.$el, true)
   },
 
   methods: {
-    _computeWrapperSize () {
+    _getWrapperSize () {
       const wrapper = this.$refs.wrapper
       if (wrapper) {
         const rect = wrapper.getBoundingClientRect()
@@ -83,14 +82,6 @@ export default {
       }
     },
 
-    _updateLayout () {
-      this._computeWrapperSize()
-      // const inner = this.$refs.inner
-      // if (inner) {
-      //   inner.style.width = this.wrapperWidth * this.frameCount + 'px'
-      // }
-    },
-
     _formatChildren (createElement) {
       const children = this.$slots.default || []
       let indicatorVnode
@@ -104,7 +95,7 @@ export default {
       }).map(vnode => {
         return createElement('li', {
           ref: 'cells',
-          staticClass: 'weex-slider-cell weex-ct'
+          staticClass: `weex-slider-cell weex-ct${this.isNeighbor ? ' neighbor-cell' : ''}`
         }, [vnode])
       })
       if (indicatorVnode) {
@@ -158,20 +149,9 @@ export default {
         clearTimeout(this._autoPlayTimer)
         this._autoPlayTimer = null
       }
-      const interval = parseInt(this.interval)
-      this._lastSlideTime = Date.now()
-
-      const autoPlayFn = bind(function () {
-        clearTimeout(this._autoPlayTimer)
-        const now = Date.now()
-        let nextTick = this._lastSlideTime + interval - now
-        nextTick = nextTick > 100 ? nextTick : interval
-        this._next()
-        this._lastSlideTime = now
-        this._autoPlayTimer = setTimeout(autoPlayFn, nextTick)
-      }, this)
-
-      this._autoPlayTimer = setTimeout(autoPlayFn, interval)
+      let interval = parseInt(this.interval - TRANSITION_TIME - NEIGHBOR_SCALE_TIME)
+      interval = interval > INTERVAL_MINIMUM ? interval : INTERVAL_MINIMUM
+      this._autoPlayTimer = setTimeout(bind(this._next, this), interval)
     },
 
     _stopAutoPlay () {
@@ -247,19 +227,13 @@ export default {
               elm.style.webkitTransition = ''
               elm.style.transition = ''
             }
-            // this._loopShowNodes(step)
             // clean cloned nodes and rearrange slide cells.
             this._rearrangeNodes(newIndex)
           }, NEIGHBOR_SCALE_TIME)
         }, TRANSITION_TIME)
       }
 
-      // TODO: emit scroll event.
-      // nextFrame()
-
       if (newIndex !== this._preIndex) {
-        // replace $el with { attr, style } is a legacy usage. Is it necessary to
-        // do this ? Or just tell devers to use inline functions to access attrs ?
         this.$emit('change', createEvent(this.$el, 'change', {
           index: newIndex
         }))
@@ -269,6 +243,9 @@ export default {
     _clearNodesOffset () {
       const end = this._showEndIdx
       for (let i = this._showStartIdx; i <= end; i++) {
+        let node = this._showNodes[i]
+        node = node && node.firstElementChild
+        if (!node) { continue }
         addTransform(this._showNodes[i].firstElementChild, {
           translate: 'translate3d(0px, 0px, 0px)'
         })
@@ -276,7 +253,7 @@ export default {
     },
 
     _loopShowNodes (step) {
-      if (!step) {
+      if (!step || this.frameCount <= 1) {
         return
       }
       const sign = step > 0 ? 1 : -1
@@ -302,10 +279,21 @@ export default {
         this._inited = true
         this._showNodes = {}
       }
-
+      if (this.frameCount <= 1) {
+        this._showStartIdx = this._showEndIdx = 0
+        const node = this._cells[0].elm
+        node.style.opacity = 1
+        node.style.zIndex = 99
+        node.index = 0
+        this._showNodes[0] = node
+        node._inShow = true
+        node._showIndex = 0
+        return
+      }
       const showCount = this._showCount = Math.abs(step) + 3
       this._showStartIdx = step <= 0 ? -1 : 2 - showCount
       this._showEndIdx = step <= 0 ? showCount - 2 : 1
+      this._clearNodesOffset()
       this._positionNodes(this._showStartIdx, this._showEndIdx, step)
     },
 
@@ -338,7 +326,9 @@ export default {
      * index: position index in the showing cells' view.
      */
     _positionNode (node, index) {
-      if (node._inShow && this._showNodes[index] !== node) {
+      const holder = this._showNodes[index]
+      if (node._inShow && holder !== node) {
+        if (holder) { this._removeClone(holder) }
         node = this._getClone(node.index)
       }
       else if (node._inShow) {
@@ -346,15 +336,10 @@ export default {
       }
 
       node._inShow = true
-      // else if (!this._showNodes[index]) {
-        // node = this._getClone(node.index)
-      // }
       const translateX = index * this.wrapperWidth - this.innerOffset
       addTransform(node, {
         translate: `translate3d(${translateX}px, 0px, 0px)`
       })
-      // node.style.left = (index + this._step) * this.wrapperWidth - this.innerOffset + 'px'
-      // node.style.left = index * this.wrapperWidth + 'px'
       node.style.zIndex = 99 - Math.abs(index)
       node.style.opacity = 1
       node._showIndex = index
@@ -372,7 +357,6 @@ export default {
         clone._isClone = true
         clone._inShow = origNode._inShow
         clone.index = origNode.index
-        clone.style.left = 0
         clone.style.opacity = 0
         clone.style.zIndex = 0
         const ct = this.$refs.inner
@@ -392,7 +376,6 @@ export default {
     _hideNode (node) {
       node._inShow = false
       node.style.opacity = 0
-      node.style.left = 0
       node.style.zIndex = 0
     },
 
@@ -415,6 +398,23 @@ export default {
     },
 
     /**
+     * copy node style props (opacity and zIndex) and transform status from
+     * one element to another.
+     */
+    _copyStyle (from, to, styles = ['opacity', 'zIndex'], transformExtra = {}) {
+      extendKeys(to.style, from.style, styles)
+      const transObj = getTransformObj(from)
+      for (const k in transformExtra) {
+        transObj[k] = transformExtra[k]
+      }
+      addTransform(to, transObj)
+      const fromInner = from.firstElementChild
+      const toInner = to.firstElementChild
+      toInner.style.opacity = fromInner.style.opacity
+      copyTransform(fromInner, toInner)
+    },
+
+    /**
      * replace a clone node with the original node if it's not in use.
      */
     _replaceClone (clone, pos) {
@@ -422,32 +422,40 @@ export default {
       if (origNode._inShow) {
         return
       }
+      const origShowIndex = origNode._showIndex
+      const styleProps = ['opacity', 'zIndex']
+      let cl
+      if (Math.abs(origShowIndex) <= 1) {
+        // leave a clone to replace the origNode in the show zone(-1 ~ 1).
+        cl = this._getClone(origNode.index)
+        this._copyStyle(origNode, cl)
+        this._showNodes[origShowIndex] = cl
+      }
       origNode._inShow = true
-      origNode.style.left = clone.style.left
-      origNode.style.opacity = clone.style.opacity
-      origNode.style.zIndex = clone.style.zIndex
-      // copyTransform(clone, origNode)
       const transObj = getTransformObj(clone)
       transObj.translate = transObj.translate.replace(/[+-\d.]+[pw]x/, ($0) => {
         return pos * this.wrapperWidth - this.innerOffset + 'px'
       })
-      addTransform(origNode, transObj)
-      copyTransform(clone.firstElementChild, origNode.firstElementChild)
-      // origNode.firstElementChild.style.left = clone.firstElementChild.style.left
+      this._copyStyle(clone, origNode, styleProps, transObj)
       this._removeClone(clone)
-      // delete this._showNodes[clone._showIndex]
-      delete this._showNodes[origNode._showIndex]
+      if (!cl) {
+        delete this._showNodes[origShowIndex]
+      }
       this._showNodes[pos] = origNode
       origNode._showIndex = pos
     },
 
     _rearrangeNodes (newIndex) {
+      if (this.frameCount <= 1) {
+        this._sliding = false
+        this.currentIndex = 0
+        return
+      }
       /**
        * clean nodes. replace current node with non-cloned node.
        * set current index to the new index.
        */
       const shows = this._showNodes
-
       for (let i = this._showStartIdx; i <= this._showEndIdx; i++) {
         shows[i]._inShow = false
       }
@@ -479,10 +487,6 @@ export default {
      * 3. set other cells' scale and alpha.
      */
     _setNeighbors () {
-      // const curIdx = this._currentIndexInArrangeArray
-      // const step = this._step
-      // const newBegin = -1 - step
-
       for (let i = this._showStartIdx; i <= this._showEndIdx; i++) {
         const elm = this._showNodes[i].firstElementChild
         elm.style.webkitTransition = `all ${NEIGHBOR_SCALE_TIME / 1000}s ease`
@@ -511,11 +515,19 @@ export default {
     },
 
     _next () {
-      this._slideTo(this.currentIndex + 1)
+      let next = this.currentIndex + 1
+      if (this.frameCount <= 1) {
+        next--
+      }
+      this._slideTo(next)
     },
 
     _prev () {
-      this._slideTo(this.currentIndex - 1)
+      let prev = this.currentIndex - 1
+      if (this.frameCount <= 1) {
+        prev++
+      }
+      this._slideTo(prev)
     },
 
     _handleTouchStart (event) {
@@ -564,7 +576,6 @@ export default {
           this._nodesOffsetCleared = true
           this._clearNodesOffset()
         }
-        // TODO: add throttle.
         this._emitScrollEvent('scroll', {
           offsetXRatio: offsetX / this.wrapperWidth
         })

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c2a853b5/html5/render/vue/components/slider/slider.css
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/slider/slider.css b/html5/render/vue/components/slider/slider.css
index dbcb999..4e0f9c2 100644
--- a/html5/render/vue/components/slider/slider.css
+++ b/html5/render/vue/components/slider/slider.css
@@ -20,7 +20,7 @@
   top: 0px;
   left: 0px;
   background: transparent !important;
-  overflow: visible !important;
+  overflow: hidden;
   -webkit-box-align: center;
   -webkit-align-items: center;
   align-items: center;
@@ -28,3 +28,7 @@
   -webkit-justify-content: center;
   justify-content: center;
 }
+
+.neighbor-cell {
+  overflow: visible !important;
+}
\ No newline at end of file


[20/50] incubator-weex git commit: + [ios] fix bug: when add IndicatorView lazy . the IndicatorView can not create in slider successfully

Posted by so...@apache.org.
+ [ios] fix bug: when add IndicatorView  lazy . the IndicatorView can not create in slider successfully


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/8a1653c0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/8a1653c0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/8a1653c0

Branch: refs/heads/0.14-dev
Commit: 8a1653c0cbf382a543bde5b9ac431b73b0d24e2c
Parents: 7274bdd
Author: 齐山 <su...@163.com>
Authored: Thu Jun 1 21:43:39 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Jun 2 11:09:51 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m | 1 +
 ios/sdk/WeexSDK/Sources/Component/WXSliderComponent.m      | 1 +
 2 files changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8a1653c0/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m
index 3b8adf8..3265308 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.m
@@ -431,6 +431,7 @@ typedef NS_ENUM(NSInteger, Direction) {
         if ([view isKindOfClass:[WXIndicatorView class]]) {
             ((WXIndicatorComponent *)subcomponent).delegate = self;
             [recycleSliderView addSubview:view];
+            [self setIndicatorView:(WXIndicatorView *)view];
             return;
         }
         

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8a1653c0/ios/sdk/WeexSDK/Sources/Component/WXSliderComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXSliderComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXSliderComponent.m
index 1077bc8..f6451cd 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXSliderComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXSliderComponent.m
@@ -449,6 +449,7 @@
         if ([view isKindOfClass:[WXIndicatorView class]]) {
             ((WXIndicatorComponent *)subcomponent).delegate = self;
             [sliderView addSubview:view];
+            [self setIndicatorView:(WXIndicatorView *)view];
             return;
         }
         


[05/50] incubator-weex git commit: Merge branch '0.13-dev-web' into 0.13-dev-web-slider-refactor

Posted by so...@apache.org.
Merge branch '0.13-dev-web' into 0.13-dev-web-slider-refactor


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/f2bd1280
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/f2bd1280
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/f2bd1280

Branch: refs/heads/0.14-dev
Commit: f2bd1280fd8885835e19c17da83b62010a4ef2ec
Parents: 56177b3 5350069
Author: MrRaindrop <te...@gmail.com>
Authored: Sat May 27 11:02:47 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Sat May 27 11:02:47 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/mixins/scrollable.js |  7 +++----
 package.json                          |  2 +-
 packages/weex-vue-render/README.md    | 23 ++++++++++++++++++++++-
 packages/weex-vue-render/package.json |  2 +-
 4 files changed, 27 insertions(+), 7 deletions(-)
----------------------------------------------------------------------



[22/50] incubator-weex git commit: * [ios] remove notification for text if needs

Posted by so...@apache.org.
* [ios] remove notification for text if needs


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/1308ff19
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/1308ff19
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/1308ff19

Branch: refs/heads/0.14-dev
Commit: 1308ff195c4710a4aed7689fbb275f2aae31895a
Parents: a4cc8df
Author: acton393 <zh...@gmail.com>
Authored: Fri Jun 2 11:30:03 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Jun 2 11:30:03 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1308ff19/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
index deeddd6..f3fbd93 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
@@ -116,6 +116,8 @@ CGFloat WXTextDefaultLineThroughWidth = 1.2;
     CGFloat _lineHeight;
     CGFloat _letterSpacing;
     BOOL _truncationLine; // support trunk tail
+    
+    BOOL _needsRemoveObserver;
 }
 
 + (void)setRenderUsingCoreText:(BOOL)usingCoreText
@@ -138,6 +140,7 @@ CGFloat WXTextDefaultLineThroughWidth = 1.2;
     self = [super initWithRef:ref type:type styles:styles attributes:attributes events:events weexInstance:weexInstance];
     if (self) {
         // just for coretext and textkit render replacement
+        _needsRemoveObserver = NO;
         if ([attributes objectForKey:@"coretext"]) {
             _useCoreTextAttr = [WXConvert NSString:attributes[@"coretext"]];
         } else {
@@ -169,7 +172,9 @@ CGFloat WXTextDefaultLineThroughWidth = 1.2;
 
 - (void)dealloc
 {
-    [[NSNotificationCenter defaultCenter] removeObserver:self];
+    if (_needsRemoveObserver) {
+        [[NSNotificationCenter defaultCenter] removeObserver:self name:WX_ICONFONT_DOWNLOAD_NOTIFICATION object:nil];
+    }
 }
 
 #define WX_STYLE_FILL_TEXT(key, prop, type, needLayout)\
@@ -365,6 +370,7 @@ do {\
         //custom localSrc is cached
         if (!fontLocalSrc && fontSrc) {
             // if use custom font, when the custom font download finish, refresh text.
+            _needsRemoveObserver = YES;
             [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(repaintText:) name:WX_ICONFONT_DOWNLOAD_NOTIFICATION object:nil];
         }
     }
@@ -443,6 +449,7 @@ do {\
         //custom localSrc is cached
         if (!fontLocalSrc && fontSrc) {
             // if use custom font, when the custom font download finish, refresh text.
+            _needsRemoveObserver = YES;
             [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(repaintText:) name:WX_ICONFONT_DOWNLOAD_NOTIFICATION object:nil];
         }
     }


[43/50] incubator-weex git commit: Merge branch 'dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into dev

Posted by so...@apache.org.
Merge branch 'dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into 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/2fca48bf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/2fca48bf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/2fca48bf

Branch: refs/heads/0.14-dev
Commit: 2fca48bfac161bcc8be11fd82bbafce910b8054f
Parents: 9c73ec8 a643ded
Author: tancy <ro...@gmail.com>
Authored: Tue Jun 6 18:44:00 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Tue Jun 6 18:44:00 2017 +0800

----------------------------------------------------------------------
 doc/source/cn/references/components/input.md | 241 +++++++++++++++++-----
 doc/source/references/components/input.md    |   2 +-
 2 files changed, 196 insertions(+), 47 deletions(-)
----------------------------------------------------------------------



[29/50] incubator-weex git commit: * [doc] fix list demo bug

Posted by so...@apache.org.
* [doc] fix list demo bug


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/1c0d992c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/1c0d992c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/1c0d992c

Branch: refs/heads/0.14-dev
Commit: 1c0d992c31d55f0057660f95f5c91399d2d6e285
Parents: dcf9a83
Author: tancy <ro...@gmail.com>
Authored: Fri Jun 2 17:27:59 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Fri Jun 2 17:27:59 2017 +0800

----------------------------------------------------------------------
 doc/source/cn/references/components/list.md | 2 +-
 doc/source/references/components/list.md    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1c0d992c/doc/source/cn/references/components/list.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/components/list.md b/doc/source/cn/references/components/list.md
index 7c8b2b2..2175bfc 100644
--- a/doc/source/cn/references/components/list.md
+++ b/doc/source/cn/references/components/list.md
@@ -76,7 +76,7 @@ version: 2.1
 
 - `scroll` <sup class="wx-v">0.12+</sup>:列表滚动时触发这个事件。此事件回调中会给出当前`contentOffset`值。
 
-  [体验一下](http://dotwe.org/weex/5837c1b7f1f69e5adf1fc4cac0747c34)
+  [体验一下](http://dotwe.org/weex/7ba3b6222d912b4b0b4aafb8248ca22f)
 
 - 通用事件
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1c0d992c/doc/source/references/components/list.md
----------------------------------------------------------------------
diff --git a/doc/source/references/components/list.md b/doc/source/references/components/list.md
index fe7455e..1e69b94 100644
--- a/doc/source/references/components/list.md
+++ b/doc/source/references/components/list.md
@@ -93,7 +93,7 @@ onloadmore  0.5 used with loadmoreoffset attribute. if the view has less than lo
 
 scroll  <sup class="wx-v">0.12+</sup> used with offset-accuracy attribute. This event is fired when the list scrolls. The current contentOffset value is given in this event callback.
 
-[try](http://dotwe.org/weex/5837c1b7f1f69e5adf1fc4cac0747c34)
+[try](http://dotwe.org/weex/7ba3b6222d912b4b0b4aafb8248ca22f)
 
 common events: check out the [common events](../common-event.html)
 


[35/50] incubator-weex git commit: + [doc] add Users App

Posted by so...@apache.org.
+ [doc] add Users App


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/0aa1a6e4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/0aa1a6e4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/0aa1a6e4

Branch: refs/heads/0.14-dev
Commit: 0aa1a6e495de39e2ef7f5222fbfaeb4d7d51fc38
Parents: 1c0d992
Author: tancy <ro...@gmail.com>
Authored: Tue Jun 6 12:00:24 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Tue Jun 6 12:00:24 2017 +0800

----------------------------------------------------------------------
 doc/themes/weex/languages/cn.yml              |  12 +++++++++
 doc/themes/weex/languages/en.yml              |  13 +++++++++-
 doc/themes/weex/layout/index.ejs              |  28 +++++++++++++++++++++
 doc/themes/weex/source/css/index.scss         |  17 ++++++++++++-
 doc/themes/weex/source/images/fliggy.png      | Bin 0 -> 19329 bytes
 doc/themes/weex/source/images/juhuasuan.png   | Bin 0 -> 46340 bytes
 doc/themes/weex/source/images/qianniu.png     | Bin 0 -> 19852 bytes
 doc/themes/weex/source/images/taopiaopiao.png | Bin 0 -> 12460 bytes
 8 files changed, 68 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/0aa1a6e4/doc/themes/weex/languages/cn.yml
----------------------------------------------------------------------
diff --git a/doc/themes/weex/languages/cn.yml b/doc/themes/weex/languages/cn.yml
index 23b209a..5c87cc1 100644
--- a/doc/themes/weex/languages/cn.yml
+++ b/doc/themes/weex/languages/cn.yml
@@ -50,6 +50,18 @@ index:
     youku:
       title: 优酷
       content: 中国领先的视频服务平台,提供视频播放,视频发布,视频分享等服务。
+    taopiaopiao:
+      title: 淘票票
+      content: 淘票票专业版是一款为电影人提供有价值数据的产品。通过和阿里海量用户数据相结合,为电影人提供了秒级实时票房、排片、影院经营、上映日历和用户画像等数据服务。
+    fliggy:
+      title: 飞猪
+      content: 飞猪是阿里巴巴集团旗下旅行品牌,旨在为用户提供便捷、更高性价比的出行服务。 
+    juhuasuan:
+      title: 聚划算
+      content: 聚划算是阿里巴巴集团旗下平台,供淘宝、天猫商家从8亿商品中精挑细选优质商品,自主开展网络精选特卖活动,以更高的服务标准为你提供高性价比的商品。
+    qianniu: 
+      title: 千牛
+      content: 阿里巴巴官方出品的卖家移动工作台,服务淘宝、天猫、1688、线下门店等众多商家用户,商家管店必备。
   feedback:
     title: 他们说
     user1:

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/0aa1a6e4/doc/themes/weex/languages/en.yml
----------------------------------------------------------------------
diff --git a/doc/themes/weex/languages/en.yml b/doc/themes/weex/languages/en.yml
index 6eea9fd..8fadf37 100644
--- a/doc/themes/weex/languages/en.yml
+++ b/doc/themes/weex/languages/en.yml
@@ -50,7 +50,18 @@ index:
     youku:
       title: Youku
       content: Youku is one of China's top online video and streaming service platforms.
-
+    taopiaopiao:
+      title: Tao Tickets Pro
+      content: Tao Tickets Pro is a product for the film to provide valuable data. Through the combination of Ali and the amount of user data, for the film people to provide a second real-time box office, film, theater business, release calendar and user portraits and other data services.
+    fliggy:
+      title: Fliggy
+      content: Fliggy is Alibaba Group's travel brand, designed to provide users with convenient, more cost-effective travel services. 
+    juhuasuan:
+      title: Juhuasuan
+      content: Juhuasuan is Alibaba Group's platform for Taobao, Lynx business from 800 million commodities in the carefully selected high-quality goods, independent network to carry out activities to sell, with higher service standards to provide you with cost-effective goods.
+    qianniu: 
+      title: Qianniu
+      content:  Alibaba produced for the seller stop working units, for the seller the integration of the shop management tools, business information and news, business partnerships, in order to enhance the operational efficiency of the sellers, in order to promote cooperation between the two win, so that the seller can...
   feedback:
     title: People say
     user1:

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/0aa1a6e4/doc/themes/weex/layout/index.ejs
----------------------------------------------------------------------
diff --git a/doc/themes/weex/layout/index.ejs b/doc/themes/weex/layout/index.ejs
index 01c964a..4a1ad87 100644
--- a/doc/themes/weex/layout/index.ejs
+++ b/doc/themes/weex/layout/index.ejs
@@ -184,6 +184,34 @@
           <p><%= _p('index.users.youku.content') %></p>
         </div>
       </div>
+      <div class="user-logo taopiaopiao-logo">
+        <h3><%= _p('index.users.taopiaopiao.title') %></h3>
+        <div class="user-info">
+          <h4><%= _p('index.users.taopiaopiao.title') %></h4>
+          <p><%= _p('index.users.taopiaopiao.content') %></p>
+        </div>
+      </div>
+      <div class="user-logo fliggy-logo">
+        <h3><%= _p('index.users.fliggy.title') %></h3>
+        <div class="user-info">
+          <h4><%= _p('index.users.fliggy.title') %></h4>
+          <p><%= _p('index.users.fliggy.content') %></p>
+        </div>
+      </div>
+      <div class="user-logo juhuasuan-logo">
+        <h3><%= _p('index.users.juhuasuan.title') %></h3>
+        <div class="user-info">
+          <h4><%= _p('index.users.juhuasuan.title') %></h4>
+          <p><%= _p('index.users.juhuasuan.content') %></p>
+        </div>
+      </div>
+      <div class="user-logo qianniu-logo">
+        <h3><%= _p('index.users.qianniu.title') %></h3>
+        <div class="user-info">
+          <h4><%= _p('index.users.qianniu.title') %></h4>
+          <p><%= _p('index.users.qianniu.content') %></p>
+        </div>
+      </div>
     </div>
     <!--<div class="more">
       <a class="more" href="">More</a>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/0aa1a6e4/doc/themes/weex/source/css/index.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/index.scss b/doc/themes/weex/source/css/index.scss
index 8eb4e76..7b5454f 100644
--- a/doc/themes/weex/source/css/index.scss
+++ b/doc/themes/weex/source/css/index.scss
@@ -426,11 +426,26 @@
       background: $bg-light-blue url("../images/youku.png") 50% 50% / 64px 64px no-repeat;
       background-origin: content-box;
     }
-
     .ding-logo {
       background: $bg-light-blue url("../images/ding.png") 50% 50% / 64px 64px no-repeat;
       background-origin: content-box;
     }
+    .taopiaopiao-logo {
+      background: $bg-light-blue url("../images/taopiaopiao.png") 50% 50% / 64px 64px no-repeat;
+      background-origin: content-box;
+    }
+    .fliggy-logo {
+      background: $bg-light-blue url("../images/fliggy.png") 50% 50% / 64px 64px no-repeat;
+      background-origin: content-box;
+    }
+    .juhuasuan-logo {
+      background: $bg-light-blue url("../images/juhuasuan.png") 50% 50% / 64px 64px no-repeat;
+      background-origin: content-box;
+    }
+    .qianniu-logo {
+      background: $bg-light-blue url("../images/qianniu.png") 50% 50% / 64px 64px no-repeat;
+      background-origin: content-box;
+    }
   }
 
   .user-info {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/0aa1a6e4/doc/themes/weex/source/images/fliggy.png
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/images/fliggy.png b/doc/themes/weex/source/images/fliggy.png
new file mode 100644
index 0000000..5f290bb
Binary files /dev/null and b/doc/themes/weex/source/images/fliggy.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/0aa1a6e4/doc/themes/weex/source/images/juhuasuan.png
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/images/juhuasuan.png b/doc/themes/weex/source/images/juhuasuan.png
new file mode 100644
index 0000000..948807d
Binary files /dev/null and b/doc/themes/weex/source/images/juhuasuan.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/0aa1a6e4/doc/themes/weex/source/images/qianniu.png
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/images/qianniu.png b/doc/themes/weex/source/images/qianniu.png
new file mode 100644
index 0000000..138ae03
Binary files /dev/null and b/doc/themes/weex/source/images/qianniu.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/0aa1a6e4/doc/themes/weex/source/images/taopiaopiao.png
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/images/taopiaopiao.png b/doc/themes/weex/source/images/taopiaopiao.png
new file mode 100644
index 0000000..ed52a66
Binary files /dev/null and b/doc/themes/weex/source/images/taopiaopiao.png differ


[44/50] incubator-weex git commit: + [ios] update websocket doc

Posted by so...@apache.org.
+ [ios] update websocket doc


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/c7dc1250
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/c7dc1250
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/c7dc1250

Branch: refs/heads/0.14-dev
Commit: c7dc1250af3f9b7470d8704c3474338d5c894db4
Parents: 2fca48b
Author: 齐山 <su...@163.com>
Authored: Wed Jun 7 14:21:34 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Wed Jun 7 14:21:34 2017 +0800

----------------------------------------------------------------------
 doc/source/cn/references/modules/websocket.md | 1 -
 doc/source/references/modules/websocket.md    | 1 -
 2 files changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c7dc1250/doc/source/cn/references/modules/websocket.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/modules/websocket.md b/doc/source/cn/references/modules/websocket.md
index e83c15f..50223da 100644
--- a/doc/source/cn/references/modules/websocket.md
+++ b/doc/source/cn/references/modules/websocket.md
@@ -17,7 +17,6 @@ WebSockets 是一种先进的技术, 这使得在用户的 H5/iOS/Android 和一
   - [DefaultWebSocketAdapterFactory.java](https://github.com/apache/incubator-weex/blob/dev/android/commons/src/main/java/com/alibaba/weex/commons/adapter/DefaultWebSocketAdapterFactory.java);
   - 集成例子参考weex [playground](https://github.com/apache/incubator-weex/tree/dev/android/playground)
 
-- 只在.we文件支持,不支持vue2.0
 
 ## API
 ### `WebSocket(url, protocol)`

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c7dc1250/doc/source/references/modules/websocket.md
----------------------------------------------------------------------
diff --git a/doc/source/references/modules/websocket.md b/doc/source/references/modules/websocket.md
index 6edc8d8..295ee25 100644
--- a/doc/source/references/modules/websocket.md
+++ b/doc/source/references/modules/websocket.md
@@ -16,7 +16,6 @@ WebSockets is an advanced technology that makes it possible to open an interacti
   - [DefaultWebSocketAdapter.java](https://github.com/apache/incubator-weex/blob/dev/android/commons/src/main/java/com/alibaba/weex/commons/adapter/DefaultWebSocketAdapter.java);
   - [DefaultWebSocketAdapterFactory.java](https://github.com/apache/incubator-weex/blob/dev/android/commons/src/main/java/com/alibaba/weex/commons/adapter/DefaultWebSocketAdapterFactory.java);
   - refer:  [weex playground](https://github.com/apache/incubator-weex/tree/dev/android/playground)
-- only support in .we file,not support in vue2.0
 
 ## API
 ### `WebSocket(url, protocol)`


[04/50] incubator-weex git commit: * [html5] release v0.11.43 & fix init multiple times.

Posted by so...@apache.org.
* [html5] release v0.11.43 & fix init multiple times.


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/5350069b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/5350069b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/5350069b

Branch: refs/heads/0.14-dev
Commit: 5350069bee1a4295c0552b19a3262b64e810caad
Parents: 2ec3fa8
Author: MrRaindrop <te...@gmail.com>
Authored: Fri May 26 16:14:35 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Fri May 26 16:14:35 2017 +0800

----------------------------------------------------------------------
 package.json                          |  2 +-
 packages/weex-vue-render/README.md    | 23 ++++++++++++++++++++++-
 packages/weex-vue-render/package.json |  2 +-
 3 files changed, 24 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5350069b/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 421ada9..502cede 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
   "subversion": {
     "browser": "0.5.0",
     "framework": "0.20.6",
-    "vue-render": "0.11.42",
+    "vue-render": "0.11.43",
     "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/5350069b/packages/weex-vue-render/README.md
----------------------------------------------------------------------
diff --git a/packages/weex-vue-render/README.md b/packages/weex-vue-render/README.md
index d41f777..e2f39d0 100644
--- a/packages/weex-vue-render/README.md
+++ b/packages/weex-vue-render/README.md
@@ -4,7 +4,28 @@ This is a group of Vue 2.x components for Weex, which have the same behavior wit
 
 It can be run on browser only based on Vue 2.x (without Weex).
 
-## use vue-loader
+## how to use
+
+If you prefer npm way, you should manually call `init` function to pass Vue constructor to weex.
+
+```javascript
+import Vue from 'vue'
+import weex from 'weex-vue-render'
+weex.init(Vue)
+
+import App from 'App.vue'
+new Vue(App)
+```
+
+If you perfer cdn way, and use script tag to import a script link, just import it into your html file, it will auto-init and you can just ignore it.
+
+```html
+<script>{{Vue}}</script>
+<script>{{weex-vue-render}}</script>
+<script>{{your js bundle}}</script>
+```
+
+## use vue-loader to bundle .vue file
 
 **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.
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5350069b/packages/weex-vue-render/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-render/package.json b/packages/weex-vue-render/package.json
index 8cc0c47..b165279 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.42",
+  "version": "0.11.43",
   "description": "Weex built-in components for Vue 2.x.",
   "license": "Apache-2.0",
   "main": "dist/index.js",


[11/50] incubator-weex git commit: * [ios] move SRWebSocket's header back to BSD license

Posted by so...@apache.org.
* [ios] move SRWebSocket's header back to BSD license


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/a0d25dc9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/a0d25dc9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/a0d25dc9

Branch: refs/heads/0.14-dev
Commit: a0d25dc98471de1bd783f3d2944a649ca385b317
Parents: 553c1f5
Author: yinfeng <cx...@apache.org>
Authored: Thu Jun 1 14:57:32 2017 +0800
Committer: yinfeng <cx...@apache.org>
Committed: Thu Jun 1 14:57:32 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/dependency/SRWebSocket.h | 17 ++++++-----------
 ios/sdk/WeexSDK/dependency/SRWebSocket.m | 18 ++++++------------
 2 files changed, 12 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/a0d25dc9/ios/sdk/WeexSDK/dependency/SRWebSocket.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/dependency/SRWebSocket.h b/ios/sdk/WeexSDK/dependency/SRWebSocket.h
index 5f8bca1..094a39d 100644
--- a/ios/sdk/WeexSDK/dependency/SRWebSocket.h
+++ b/ios/sdk/WeexSDK/dependency/SRWebSocket.h
@@ -1,17 +1,12 @@
 //
-//   Copyright 2012 Square Inc.
+// Copyright 2012 Square Inc.
+// Portions Copyright (c) 2016-present, Facebook, Inc.
 //
-//   Licensed 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
+// All rights reserved.
 //
-//       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.
+// This source code is licensed under the BSD-style license found in the
+// LICENSE file in the root directory of this source tree. An additional grant
+// of patent rights can be found in the PATENTS file in the same directory.
 //
 
 #import <Foundation/Foundation.h>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/a0d25dc9/ios/sdk/WeexSDK/dependency/SRWebSocket.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/dependency/SRWebSocket.m b/ios/sdk/WeexSDK/dependency/SRWebSocket.m
index 3ba577b..03ad557 100644
--- a/ios/sdk/WeexSDK/dependency/SRWebSocket.m
+++ b/ios/sdk/WeexSDK/dependency/SRWebSocket.m
@@ -1,19 +1,13 @@
 //
-//   Copyright 2012 Square Inc.
+// Copyright 2012 Square Inc.
+// Portions Copyright (c) 2016-present, Facebook, Inc.
 //
-//   Licensed 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
+// All rights reserved.
 //
-//       http://www.apache.org/licenses/LICENSE-2.0
+// This source code is licensed under the BSD-style license found in the
+// LICENSE file in the root directory of this source tree. An additional grant
+// of patent rights can be found in the PATENTS file in the same directory.
 //
-//   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 "SRWebSocket.h"
 


[32/50] 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/6ddbab85
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/6ddbab85
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/6ddbab85

Branch: refs/heads/0.14-dev
Commit: 6ddbab858458dc4c697bd06182d1940766a19d24
Parents: 19c0a78
Author: MrRaindrop <te...@gmail.com>
Authored: Sun Jun 4 13:39:39 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Sun Jun 4 13:39:39 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/core/style.js | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6ddbab85/html5/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/style.js b/html5/render/vue/core/style.js
index 07e6e7b..8bb3029 100644
--- a/html5/render/vue/core/style.js
+++ b/html5/render/vue/core/style.js
@@ -42,6 +42,8 @@ export function getHeadStyleMap () {
        * 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.
+       * another reason not to use cssRules directy:
+       * @issue: https://stackoverflow.com/questions/21642277/security-error-the-operation-is-insecure-in-firefox-document-stylesheets
        */
       if ((styleSheet.ownerNode.tagName.toLowerCase() === 'link')
         || !styleSheet.ownerNode.textContent) {


[47/50] incubator-weex git commit: * [doc] update document for animation

Posted by so...@apache.org.
* [doc] update document for animation


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/2505d084
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/2505d084
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/2505d084

Branch: refs/heads/0.14-dev
Commit: 2505d08400a5ec114665248a32d6435df0f703a9
Parents: 3a39b78
Author: acton393 <zh...@gmail.com>
Authored: Wed Jun 7 16:01:13 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Wed Jun 7 16:01:13 2017 +0800

----------------------------------------------------------------------
 doc/source/cn/references/modules/animation.md |  4 ++--
 doc/source/references/modules/animation.md    | 12 ++++++------
 2 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2505d084/doc/source/cn/references/modules/animation.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/modules/animation.md b/doc/source/cn/references/modules/animation.md
index 7e6def6..38f9bec 100644
--- a/doc/source/cn/references/modules/animation.md
+++ b/doc/source/cn/references/modules/animation.md
@@ -15,7 +15,7 @@ version: 2.1
 
 #### 参数
 
-* `el {Element}`:将要执行动画的元素,通常可以通过调用 [`this.$el(id)`](../api.html) 来获取元素的引用。
+* `el {Element}`:将要执行动画的元素,例如指定动画的元素 `ref` 属性为 `test` , 可以通过调用 `this.refs.test` 来获取元素的引用。
 * `options {Object}`:描述动画过程的对象。
   * `options.duration {number}`:指定动画的持续时间 (单位是毫秒),默认值是 `0`,表示没有动画效果。
   * `options.delay {number}`:指定请求动画操作到执行动画之间的时间间隔 (单位是毫秒),默认值是 `0`,表示没有延迟,在请求后立即执行动画。
@@ -44,7 +44,7 @@ version: 2.1
 
 | 名称 | 描述 | 值类型 | 默认值 | 示例 |
 | ---- | ---- | ---- | ---- | ---- |
-| `translate`/`translateX`/`translateY` | 指定元素移动的偏移量 | 像素值或百分比 | 无 |
+| `translate`/`translateX`/`translateY` | 指定元素要移动到的位置 | 像素值或百分比 | 无 |
 | `rotate` | 指定元素将被旋转的角度,单位是度 | number | 无 |
 | `scale`/`scaleX`/`scaleY` | 按比例放大或缩小元素 | number | 无 |
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2505d084/doc/source/references/modules/animation.md
----------------------------------------------------------------------
diff --git a/doc/source/references/modules/animation.md b/doc/source/references/modules/animation.md
index 4a9b7ec..2904898 100644
--- a/doc/source/references/modules/animation.md
+++ b/doc/source/references/modules/animation.md
@@ -13,13 +13,13 @@ Smooth and meaningful animation is very effective for enhancing the user experie
 ### transition(node, options, callback)
 
 #### Arguments
-##### node    
+- node
 
 **type:** node
 
-**position:** An element that will be animated, normally you can get this by calling `this.$el(id)`.   
+**position:** An element that will be animated, for example , specify the `ref` attribute for the element you want to animated as `element`, so you can get this element by calling `this.refs.element`.
 
-##### options    
+- options
 
 **type:** object   
 
@@ -51,11 +51,11 @@ properties of `transform`:
 
 | name | description | value type | default value |
 | :--- | :--- | :--- | :--- |
-|translate/translateX/translateY|Specifies the location of which the element will be translated.|pixel or percent|none|
+|translate/translateX/translateY|Specifies the location of which the element will be translated to.|pixel or percent|none|
 |rotate|Specifies the angle of which the element will be rotated, the unit is degree.|number|none|
 |scale/scaleX/scaleY|Stretch or shrink the element.|number|none|  
 
-#### callback    
+- callback
 **type:** function
 
 **position:** Callback which is called after the completion of transition.
@@ -103,4 +103,4 @@ properties of `transform`:
 </style>
 ```
 
-[try it](http://dotwe.org/vue/2d1b61bef061448c1a5a13eac9624410)
\ No newline at end of file
+[try it](http://dotwe.org/vue/2d1b61bef061448c1a5a13eac9624410)


[50/50] incubator-weex git commit: Merge branch 'dev' into 0.14-dev

Posted by so...@apache.org.
Merge branch 'dev' into 0.14-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/1704bcc2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/1704bcc2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/1704bcc2

Branch: refs/heads/0.14-dev
Commit: 1704bcc27b5acec85558ceff01e4f8a33f29a775
Parents: 26d2d8a a6edb3f
Author: sospartan <so...@apache.org>
Authored: Wed Jun 7 16:07:37 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Wed Jun 7 16:07:37 2017 +0800

----------------------------------------------------------------------
 HOW-TO-BUILD.md                                 |  80 +++
 LICENSE                                         |   2 +-
 README_RELEASE.md                               |  74 ---
 RUN-RAT.md                                      |  12 +
 .../ExtendedStaggeredGridLayoutManager.java     |  18 +
 dangerfile.js                                   |   3 +-
 doc/source/cn/references/components/input.md    | 241 +++++--
 doc/source/cn/references/components/list.md     |   2 +-
 doc/source/cn/references/modules/animation.md   |   4 +-
 doc/source/cn/references/modules/websocket.md   |   2 +-
 .../cn/v-0.10/references/components/input.md    | 216 ++++++-
 doc/source/guide/index.md                       |   6 +-
 doc/source/references/components/input.md       | 233 +++++--
 doc/source/references/components/list.md        |   2 +-
 doc/source/references/modules/animation.md      |  12 +-
 doc/source/references/modules/websocket.md      |   2 +-
 doc/themes/weex/languages/cn.yml                |  12 +
 doc/themes/weex/languages/en.yml                |  13 +-
 doc/themes/weex/layout/index.ejs                |  28 +
 doc/themes/weex/source/css/index.scss           |  19 +-
 doc/themes/weex/source/images/fliggy.png        | Bin 0 -> 19329 bytes
 doc/themes/weex/source/images/juhuasuan.png     | Bin 0 -> 46340 bytes
 doc/themes/weex/source/images/qianniu.png       | Bin 0 -> 19852 bytes
 doc/themes/weex/source/images/taopiaopiao.png   | Bin 0 -> 12460 bytes
 html5/render/vue/README.md                      |  23 +-
 html5/render/vue/components/slider/index.js     | 137 +---
 .../render/vue/components/slider/slideMixin.js  | 647 ++++++++++++++-----
 .../vue/components/slider/slider-neighbor.css   |  19 -
 .../vue/components/slider/slider-neighbor.js    | 116 +---
 html5/render/vue/components/slider/slider.css   |  34 +
 html5/render/vue/core/style.js                  |   7 +-
 html5/render/vue/env/viewport.js                |   6 +-
 html5/render/vue/index.js                       |   6 +
 html5/render/vue/mixins/scrollable.js           |   7 +-
 html5/render/vue/modules/dom.js                 |  16 +-
 html5/render/vue/utils/style.js                 |  85 ++-
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       |   4 -
 .../Sources/Component/WXLoadingComponent.m      |   7 -
 .../WeexSDK/Sources/Module/WXNavigatorModule.m  |   7 -
 ios/sdk/WeexSDK/dependency/SRWebSocket.h        |  17 +-
 ios/sdk/WeexSDK/dependency/SRWebSocket.m        |  18 +-
 ios/sdk/WeexSDKTests/WXURLRewriteTests.m        |  21 -
 ios/sdk/WeexSDKTests/dependency/libOCMock.a     | Bin 2098920 -> 0 bytes
 package.json                                    |   2 +-
 packages/weex-vue-render/README.md              |  23 +-
 packages/weex-vue-render/package.json           |   2 +-
 scripts/release_files.rules                     |   3 +-
 47 files changed, 1473 insertions(+), 715 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1704bcc2/dangerfile.js
----------------------------------------------------------------------
diff --cc dangerfile.js
index 7ed6d5f,49b52e3..e7d39a3
--- a/dangerfile.js
+++ b/dangerfile.js
@@@ -238,10 -171,11 +238,11 @@@ const ignoreCopyrightVerifyPath = 
    'android/sdk/assets',
    'ios/playground/bundlejs',
    'ios/sdk/WeexSDK/Resources',
-   'ios/sdk/WeexSDK/Sources/Layout'
+   'ios/sdk/WeexSDK/Sources/Layout',
+   'ios/sdk/WeexSDK/dependency/SRWebSocket'
  ]
  
 -codefiles.forEach(filepath => {
 +filesToVerifySrcHeader.forEach(filepath => {
    for(var i=ignoreCopyrightVerifyPath.length-1;i>=0;i--){
      if(filepath.startsWith(ignoreCopyrightVerifyPath[i])){
        return

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1704bcc2/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------


[14/50] incubator-weex git commit: * [all] update build instruction

Posted by so...@apache.org.
* [all] update build instruction


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/41e01d78
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/41e01d78
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/41e01d78

Branch: refs/heads/0.14-dev
Commit: 41e01d780091cebadb0315cbe2238575bcafe201
Parents: b3e1fcb
Author: sospartan <so...@apache.org>
Authored: Thu Jun 1 18:03:57 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Thu Jun 1 18:03:57 2017 +0800

----------------------------------------------------------------------
 HOW-TO-BUILD.md             | 80 ++++++++++++++++++++++++++++++++++++++++
 README_RELEASE.md           | 74 -------------------------------------
 RUN-RAT.md                  | 12 ++++++
 scripts/release_files.rules |  3 +-
 4 files changed, 94 insertions(+), 75 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/41e01d78/HOW-TO-BUILD.md
----------------------------------------------------------------------
diff --git a/HOW-TO-BUILD.md b/HOW-TO-BUILD.md
new file mode 100644
index 0000000..278d3e7
--- /dev/null
+++ b/HOW-TO-BUILD.md
@@ -0,0 +1,80 @@
+# Weex Apache Source Release   
+Weex produce SDKs to integrate to iOS/Android/Mobile web applications. This file will cover how to build Weex from source. You can either use the script we provided or manually build from source step by step.   
+See `README.md` for further information about Weex Framework.
+
+Weex SDK produce 3 different SDKs to use in corresponding system/browser: 
+* Android SDK
+* iOS SDK
+* Mobile Web SDK
+
+See our [guide in our website](http://weex.apache.org/guide/integrate-to-your-app.html) to learn more about how to integrate Weex SDK to your app.
+
+## Build Environment
+The environment required to build weex as follow:   
+* Android SDK:   
+    * NodeJS 4.0+
+    * JDK 1.6+
+    * Android SDK(`$ANDROID_HOME` must be set properly) 
+    * Gradle 2.0+
+* iOS SDK:   
+    * NodeJS 4.0+
+    * XCode & Command Tools 8.0+  
+* Mobile web SDK:
+    * NodeJS 4.0+
+
+This article was tested in MacOSX system.
+
+# Build All by Script
+
+This script will build all 3 SDKs:   
+> `$ bash scripts/build_from_source.sh`
+
+This's may take a while. After that, you can look into `dist/`, `android/sdk/build/output/` and `ios/sdk/Products` for Web/Android/iOS SDK artifacts.
+
+
+# Build for Platforms
+
+You can build all SDKs by one script as described above, or just build for a single platform you want step by step.
+
+## Build Javascript Framework and Html5 SDK
+Javascript Framework is required by native SDKs. **So this must be built first.**  
+Install npm dependencies(You must have node&npm installed):   
+> `$ npm install --production`
+
+Install build tools:   
+> `$ npm run install:buildtools`
+
+Build the javascript libraries:   
+> `$ npm run build:source`
+
+The artifacts are under `dist/`.
+> ```
+> $ ls dist 
+> browser.js        browser.min.js    browser.min.js.gz    
+> native.js         native.min.js     native.min.js.gz
+>```
+
+### Before build Native SDK
+Move `min` version to Native SDK folder, which will be used by native SDK build.   
+> `cp dist/native.min.js ios_sdk/WeexSDK/Resources/main.js`   
+> `cp dist/native.min.js android_sdk/assets/main.js`
+
+## Build Android SDK    
+Make sure you have install gradle, see more details about 'how to install gradle' in [gradle website](https://gradle.org/install).   
+execute root folder of project   
+> `$ gradle wrapper --gradle-version 2.14.1`   
+
+Create a Gradle setting file
+> `$ echo 'include ":android_sdk"'>settings.gradle`
+
+Build the SDK   
+> `$ ./gradlew :android_sdk:assemble -PasfRelease`
+
+Now, you can see the artifacts under `android_sdk/build/output/`.    
+You can now import the aar file to your android project.
+
+## Build iOS SDK 
+Execute command below to compile iOS SDK:   
+> `$ xcodebuild -project ios_sdk/WeexSDK.xcodeproj -target WeexSDK_MTL`
+
+Then you'll found iOS library(Framework file) under `ios_sdk/Products`.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/41e01d78/README_RELEASE.md
----------------------------------------------------------------------
diff --git a/README_RELEASE.md b/README_RELEASE.md
deleted file mode 100644
index b46abbc..0000000
--- a/README_RELEASE.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# Weex Apache Source Release   
-Weex produce SDKs to integrate to iOS/Android/Mobile web applications. This file will cover how to build Weex from source. You can either use the script we provided or manually build from source step by step.   
-See `README.md` for further information about Weex Framework.
-
-## Build Environment
-The environment required to build weex as follow:   
-* NodeJs 4.0+
-* Gradle 2.0+
-* XCode & Command Tools 8.0+ 
-
-## Build with Script
-
-Run build script:   
-> `$ bash scripts/build_from_source.sh`
-
-This's may take a while. After that, you can look into `dist/`, `android/sdk/build/output/` and `ios/sdk/Products` for Web/Android/iOS SDK artifacts.
-
-## Build Step by Step
-
-### Build Javascript Framework and Html5 SDK
-Javascript Framework is required by SDKs. **So this must be built first.**  
-Install npm dependencies(You must have node&npm installed):   
-> `$ npm install --production`
-
-Install build tools:   
-> `$ npm run install:buildtools`
-
-Build the javascript libraries:   
-> `$ npm run build:source`
-
-The artifacts are under `dist/`.
-> ```
-> $ ls dist 
-> browser.js        browser.min.js    browser.min.js.gz    
-> native.js         native.min.js     native.min.js.gz
->```
-
-### Before build Native SDK
-Move `min` version to Native SDK folder, which will be used by native SDK build.   
-> `cp dist/native.min.js ios_sdk/WeexSDK/Resources/main.js`   
-> `cp dist/native.min.js android_sdk/assets/main.js`
-
-### Build Android SDK    
-Make sure you have install gradle, see more details about 'how to install gradle' in [gradle website](https://gradle.org/install).   
-execute root folder of project   
-> `$ gradle wrapper --gradle-version 2.14.1`   
-
-Create a Gradle setting file
-> `$ echo 'include ":android_sdk"'>settings.gradle`
-
-Build the SDK   
-> `$ ./gradlew :android_sdk:assemble -PasfRelease`
-
-Now, you can see the artifacts under `android_sdk/build/output/`.    
-You can now import the aar file to your android project.
-
-### Build iOS SDK 
-Execute command below to compile iOS SDK:   
-> `$ xcodebuild -project ios_sdk/WeexSDK.xcodeproj -target WeexSDK_MTL`
-
-Then you'll found iOS library(Framework file) under `ios_sdk/Products`.
-
-## Run Apache-Rat
-
-### Download Apache Rat
-Download the binary from [Rat's website](https://creadur.apache.org/rat/download_rat.cgi), decompress it somewhere.   
-We've tested using v0.12.
-
-### Run Rat against Release files
-Just execute in your termial:
-
-> `$ ant -buildfile scripts/rat-ant-build.xml -lib path_to_the_folder_you_place_rat/apache-rat-0.12.jar`
-
-See '`scripts/rat-ant-build.xml`' for details about rules we use.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/41e01d78/RUN-RAT.md
----------------------------------------------------------------------
diff --git a/RUN-RAT.md b/RUN-RAT.md
new file mode 100644
index 0000000..225519e
--- /dev/null
+++ b/RUN-RAT.md
@@ -0,0 +1,12 @@
+# Run Apache-Rat
+
+### Download Apache Rat
+Download the binary from [Rat's website](https://creadur.apache.org/rat/download_rat.cgi), decompress it somewhere.   
+We've tested using v0.12.
+
+### Run Rat against Release files
+Just execute in your termial:
+
+> `$ ant -buildfile scripts/rat-ant-build.xml -lib path_to_the_folder_you_place_rat/apache-rat-0.12.jar`
+
+See '`scripts/rat-ant-build.xml`' for details about rules we use.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/41e01d78/scripts/release_files.rules
----------------------------------------------------------------------
diff --git a/scripts/release_files.rules b/scripts/release_files.rules
index 14190ca..bfc0958 100644
--- a/scripts/release_files.rules
+++ b/scripts/release_files.rules
@@ -20,7 +20,8 @@
 + /POSSIBLE-NOTICES-FOR-BIN-DIST
 + /DISCLAIMER
 + /README.MD
-+ /README_RELEASE.md
++ /HOW-TO-BUILD.md
++ /RUN-RAT.md
 + /package.json
 + /.wwprc
 + /.flowconfig


[42/50] incubator-weex git commit: + [doc] update input doc

Posted by so...@apache.org.
+ [doc] update input doc


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/a643dedf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/a643dedf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/a643dedf

Branch: refs/heads/0.14-dev
Commit: a643dedf2b6421629218270d899acd95dd714e7b
Parents: 466c4ee
Author: 齐山 <su...@163.com>
Authored: Tue Jun 6 17:04:06 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Tue Jun 6 17:04:06 2017 +0800

----------------------------------------------------------------------
 doc/source/cn/references/components/input.md | 2 +-
 doc/source/references/components/input.md    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/a643dedf/doc/source/cn/references/components/input.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/components/input.md b/doc/source/cn/references/components/input.md
index 796fb1f..a0aecf8 100644
--- a/doc/source/cn/references/components/input.md
+++ b/doc/source/cn/references/components/input.md
@@ -19,7 +19,7 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
 
 ## 特性
 
-- `type {string}`:控件的类型,默认值是 `<text>`。`type` 值可以是 `text`,`password`,`url`,`email`,`tel` 。每个 `type` 值都符合 W3C 标准。
+- `type {string}`:控件的类型,默认值是 `<text>`。`type` 值可以是 `text`,`password`,`url`,`email`,`tel` ,`number` 。每个 `type` 值都符合 W3C 标准。
 - `value {string}`:组件的接收到的输入字符。
 - `placeholder {string}`:提示用户可以输入什么。 提示文本不能有回车或换行。
 - `disabled {boolean}`:布尔类型的数据,表示是否支持输入。通常 `click` 事件在 `disabled` 控件上是失效的。

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/a643dedf/doc/source/references/components/input.md
----------------------------------------------------------------------
diff --git a/doc/source/references/components/input.md b/doc/source/references/components/input.md
index 0864817..8eea2ad 100644
--- a/doc/source/references/components/input.md
+++ b/doc/source/references/components/input.md
@@ -17,7 +17,7 @@ This component supports no child components.
 
 ## Attributes
 
-* `type`: the type of controls to display. The default value is `text`, if this attribute is not specified. Possible values are `text`, `password`, `tel`, `email`, `url` etc. each of which has the same meaning with W3C standard.
+* `type`: the type of controls to display. The default value is `text`, if this attribute is not specified. Possible values are `text`, `password`, `tel`, `email`, `url` , `number` etc. each of which has the same meaning with W3C standard.
 
 * `value`: the value(text) of the control.
 


[33/50] incubator-weex git commit: Merge branch '0.13-dev-web-no-slider-refactor' into 0.13-dev-web

Posted by so...@apache.org.
Merge branch '0.13-dev-web-no-slider-refactor' into 0.13-dev-web


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/8b2ee21e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/8b2ee21e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/8b2ee21e

Branch: refs/heads/0.14-dev
Commit: 8b2ee21e0d688e4c57462fba4cd2c8a1c26f42f6
Parents: c2a853b 6ddbab8
Author: MrRaindrop <te...@gmail.com>
Authored: Sun Jun 4 13:40:54 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Sun Jun 4 13:40:54 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/core/style.js        | 7 ++++---
 package.json                          | 2 +-
 packages/weex-vue-render/package.json | 2 +-
 3 files changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------



[34/50] incubator-weex git commit: Merge branch '0.13-dev' of https://github.com/MrRaindrop/incubator-weex into 0.13-dev

Posted by so...@apache.org.
Merge branch '0.13-dev' of https://github.com/MrRaindrop/incubator-weex into 0.13-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/404f3cc1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/404f3cc1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/404f3cc1

Branch: refs/heads/0.14-dev
Commit: 404f3cc149836932011c082c32552aafc51d5c3b
Parents: d2f4cfe 8b2ee21
Author: tancy <ro...@gmail.com>
Authored: Sun Jun 4 14:04:42 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Sun Jun 4 14:04:42 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/README.md                      |  23 +-
 html5/render/vue/components/slider/index.js     | 137 +---
 .../render/vue/components/slider/slideMixin.js  | 647 ++++++++++++++-----
 .../vue/components/slider/slider-neighbor.css   |  19 -
 .../vue/components/slider/slider-neighbor.js    | 116 +---
 html5/render/vue/components/slider/slider.css   |  34 +
 html5/render/vue/core/style.js                  |   7 +-
 html5/render/vue/env/viewport.js                |   6 +-
 html5/render/vue/index.js                       |   6 +
 html5/render/vue/mixins/scrollable.js           |   7 +-
 html5/render/vue/modules/dom.js                 |  16 +-
 html5/render/vue/utils/style.js                 |  85 ++-
 package.json                                    |   2 +-
 packages/weex-vue-render/README.md              |  23 +-
 packages/weex-vue-render/package.json           |   2 +-
 15 files changed, 685 insertions(+), 445 deletions(-)
----------------------------------------------------------------------



[03/50] incubator-weex git commit: Fix some typos

Posted by so...@apache.org.
Fix some typos

Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/227cf223
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/227cf223
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/227cf223

Branch: refs/heads/0.14-dev
Commit: 227cf223488f431c36d3f874dd4fde76589a8f82
Parents: 10254ec
Author: Mohamed Oun <mo...@gmail.com>
Authored: Thu May 25 15:06:32 2017 +0200
Committer: GitHub <no...@github.com>
Committed: Thu May 25 15:06:32 2017 +0200

----------------------------------------------------------------------
 doc/source/guide/index.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/227cf223/doc/source/guide/index.md
----------------------------------------------------------------------
diff --git a/doc/source/guide/index.md b/doc/source/guide/index.md
index c43176a..1af7a7d 100644
--- a/doc/source/guide/index.md
+++ b/doc/source/guide/index.md
@@ -12,7 +12,7 @@ Weex is a framework for building Mobile cross-platform high performance UI. Deve
 
 ## What is Vue?
 
-[Vue.js](https://vuejs.org/) is an excellent progressive JavaScript framework written by [Evan You](https://twitter.com/youyuxi). Now Weex and Vue has supported each other officially. Weex put Vue 2.x as its built-in JS Framework, and Vue has already been able to develop native mobile app.
+[Vue.js](https://vuejs.org/) is an excellent progressive JavaScript framework written by [Evan You](https://twitter.com/youyuxi). Now Weex and Vue has supported each other officially. Weex put Vue 2.x as its built-in JS Framework, and Vue has already been able to develop native mobile apps.
 
 ## Hello world
 
@@ -21,7 +21,7 @@ The easiest way to try Weex is to use the [Playground App](../playground.html) a
 - Install the [Playground App](../playground.html) for your phone.
 - Open [the Hello World example](http://dotwe.org/vue/4d5a0471ece3daabd4681bc6d703c4c1) in a new tab, click run, and then use the Playground App to scan the QR code.
 
-Nailed it! In this case, We can see HTML semantic tags, CSS styles and Javascript code. This is one of the simplest Weex examples. It rendered a "Hello World" in the page. Please note that this is not a Web page.
+Nailed it! In this case, We can see HTML semantic tags, CSS styles and Javascript code. This is one of the simplest Weex examples. It renders a "Hello World" in the page. Please note that this is not a web page.
 
 ![mobile_preview](https://img.alicdn.com/tps/TB1Ymw3OpXXXXcvXpXXXXXXXXXX-500-1013.jpg)
 
@@ -53,6 +53,6 @@ As shown in the following code:
 </script>
 ```
 
-It's too easy,right? Let's focus on the syntax, obviously this is vue.
+It's too easy, right? Let's focus on the syntax, obviously this is vue.
 
 You can try to modify the Hello World, then generate a new QR code to scan.


[45/50] incubator-weex git commit: + [doc] update websocket doc

Posted by so...@apache.org.
+ [doc] update websocket doc


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/c0dc1a6e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/c0dc1a6e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/c0dc1a6e

Branch: refs/heads/0.14-dev
Commit: c0dc1a6eed8163742b4957a0bea6b335c49ee29b
Parents: c7dc125
Author: 齐山 <su...@163.com>
Authored: Wed Jun 7 14:34:01 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Wed Jun 7 14:34:01 2017 +0800

----------------------------------------------------------------------
 doc/source/cn/references/modules/websocket.md | 1 +
 doc/source/references/modules/websocket.md    | 1 +
 2 files changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c0dc1a6e/doc/source/cn/references/modules/websocket.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/modules/websocket.md b/doc/source/cn/references/modules/websocket.md
index 50223da..701af41 100644
--- a/doc/source/cn/references/modules/websocket.md
+++ b/doc/source/cn/references/modules/websocket.md
@@ -6,6 +6,7 @@ version: 2.1
 ---
 
 # WebSocket
+<span class="weex-version">v0.12+</span>
 
 ## Summary
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c0dc1a6e/doc/source/references/modules/websocket.md
----------------------------------------------------------------------
diff --git a/doc/source/references/modules/websocket.md b/doc/source/references/modules/websocket.md
index 295ee25..cb36ed1 100644
--- a/doc/source/references/modules/websocket.md
+++ b/doc/source/references/modules/websocket.md
@@ -6,6 +6,7 @@ version: 2.1
 ---
 
 # WebSocket
+<span class="weex-version">v0.12+</span>
 
 ## Summary
 


[46/50] incubator-weex git commit: Merge branch 'Mohamed3on-patch-1' of http://github.com/Mohamed3on/incubator-weex into dev This closes #398

Posted by so...@apache.org.
Merge branch 'Mohamed3on-patch-1' of http://github.com/Mohamed3on/incubator-weex into dev
This closes #398


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/3a39b78f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/3a39b78f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/3a39b78f

Branch: refs/heads/0.14-dev
Commit: 3a39b78f173a19cde9f8c59b752359a4ce9e3a0e
Parents: c0dc1a6 227cf22
Author: sospartan <so...@apache.org>
Authored: Wed Jun 7 15:54:37 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Wed Jun 7 15:54:37 2017 +0800

----------------------------------------------------------------------
 doc/source/guide/index.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------



[23/50] incubator-weex git commit: Merge branch '0.13-dev' of https://github.com/acton393/incubator-weex into wip-us-0.13-dev

Posted by so...@apache.org.
Merge branch '0.13-dev' of https://github.com/acton393/incubator-weex into wip-us-0.13-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/31104224
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/31104224
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/31104224

Branch: refs/heads/0.14-dev
Commit: 311042242f3718daa8ed6a217e7d156345f30960
Parents: d273d67 1308ff1
Author: acton393 <zh...@gmail.com>
Authored: Fri Jun 2 11:35:53 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Jun 2 11:35:53 2017 +0800

----------------------------------------------------------------------
 .../Sources/Component/WXCycleSliderComponent.m  |  6 ++--
 .../Sources/Component/WXSliderComponent.m       |  1 +
 .../WeexSDK/Sources/Component/WXTextComponent.m | 34 ++++++++++++++++----
 .../WeexSDK/Sources/Events/WXComponent+Events.m |  8 +++++
 4 files changed, 41 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/31104224/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/31104224/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m
----------------------------------------------------------------------


[15/50] incubator-weex git commit: * [ios] use intersectionRange compare

Posted by so...@apache.org.
* [ios] use intersectionRange compare


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/7274bdd7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/7274bdd7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/7274bdd7

Branch: refs/heads/0.14-dev
Commit: 7274bdd726451deb8257c96d646ce02259e89419
Parents: 9778415
Author: acton393 <zh...@gmail.com>
Authored: Thu Jun 1 15:37:04 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Jun 2 10:27:00 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7274bdd7/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
index 90ab4ce..deeddd6 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
@@ -748,9 +748,10 @@ do {\
         NSAttributedString * lastLineText = nil;
         NSRange lastLineTextRange = WXNSRangeFromCFRange(CTLineGetStringRange(lastLine));
         NSRange attributeStringRange = NSRangeFromString(attributedString.string);
-        if (!NSEqualRanges(NSUnionRange(lastLineTextRange, attributeStringRange), attributeStringRange)) {
+        NSRange interSectionRange = NSIntersectionRange(lastLineTextRange, attributeStringRange);
+        if (!NSEqualRanges(interSectionRange, lastLineTextRange)) {
             // out of bounds
-            lastLineTextRange = NSMakeRange(attributeStringRange.location, attributeStringRange.length);
+            lastLineTextRange = interSectionRange;
         }
         lastLineText = [attributedString attributedSubstringFromRange: lastLineTextRange];
         if (!lastLineText) {


[07/50] incubator-weex git commit: * [html5] use clientWidth to get documentElement's width or height

Posted by so...@apache.org.
* [html5] use clientWidth to get documentElement's width or height


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/4b856aec
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/4b856aec
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/4b856aec

Branch: refs/heads/0.14-dev
Commit: 4b856aecf37a5d4a8de15918e4e08b87206eaedb
Parents: 948452f
Author: MrRaindrop <te...@gmail.com>
Authored: Sat May 27 15:20:01 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Sat May 27 15:20:01 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/env/viewport.js | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4b856aec/html5/render/vue/env/viewport.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/env/viewport.js b/html5/render/vue/env/viewport.js
index 278dbef..33efd6a 100644
--- a/html5/render/vue/env/viewport.js
+++ b/html5/render/vue/env/viewport.js
@@ -46,7 +46,6 @@ if (metaWidth && !isNaN(metaWidth) && metaWidth > 0) {
 }
 
 let dpr: number = 0
-let deRect: mixed = null
 let screenWidth: number = 0
 let screenHeight: number = 0
 
@@ -116,9 +115,8 @@ export function init (viewportWidth: number = width): ?{
     }
 
     dpr = info.dpr = window.devicePixelRatio
-    deRect = doc.documentElement.getBoundingClientRect()
-    screenWidth = deRect.width
-    screenHeight = deRect.height
+    screenWidth = doc.documentElement.clientWidth
+    screenHeight = doc.documentElement.clientHeight
 
     // set root font for rem.
     setRootFont(screenWidth)


[12/50] incubator-weex git commit: - [ios] remove OCMock dependency

Posted by so...@apache.org.
- [ios] remove OCMock dependency


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/552f0f70
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/552f0f70
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/552f0f70

Branch: refs/heads/0.14-dev
Commit: 552f0f7010ae57383efcaea462d4470fde35d8d5
Parents: a0d25dc
Author: yinfeng <cx...@apache.org>
Authored: Thu Jun 1 15:08:34 2017 +0800
Committer: yinfeng <cx...@apache.org>
Committed: Thu Jun 1 15:08:34 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj   |   4 ----
 ios/sdk/WeexSDKTests/WXURLRewriteTests.m    |  21 ---------------------
 ios/sdk/WeexSDKTests/dependency/libOCMock.a | Bin 2098920 -> 0 bytes
 3 files changed, 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/552f0f70/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
index d211f5f..6a315d0 100644
--- a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
+++ b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
@@ -196,7 +196,6 @@
 		74EF31AE1DE58BE200667A07 /* WXURLRewriteDefaultImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 74EF31AC1DE58BE200667A07 /* WXURLRewriteDefaultImpl.m */; };
 		74EF31C01DE5ED6F00667A07 /* libstdc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 74EF31BE1DE5ED5900667A07 /* libstdc++.tbd */; };
 		74EF31C31DE6935600667A07 /* WXURLRewriteTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 74EF31C21DE6935600667A07 /* WXURLRewriteTests.m */; };
-		74EF31C51DE6AADD00667A07 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 74EF31C41DE6AADD00667A07 /* libOCMock.a */; };
 		74F7BFF51DC782EC004D0871 /* testRootView.js in Resources */ = {isa = PBXBuildFile; fileRef = 74F7BFF41DC782EC004D0871 /* testRootView.js */; };
 		74FD6E041C7C0E9600DBEB6D /* WXScrollerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 74FD6E031C7C0E9600DBEB6D /* WXScrollerProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		775BEE4E1C16F993008D1629 /* WXDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 775BEE4D1C16F993008D1629 /* WXDefine.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -508,7 +507,6 @@
 		74EF31AC1DE58BE200667A07 /* WXURLRewriteDefaultImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXURLRewriteDefaultImpl.m; sourceTree = "<group>"; };
 		74EF31BE1DE5ED5900667A07 /* libstdc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libstdc++.tbd"; path = "usr/lib/libstdc++.tbd"; sourceTree = SDKROOT; };
 		74EF31C21DE6935600667A07 /* WXURLRewriteTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXURLRewriteTests.m; sourceTree = "<group>"; };
-		74EF31C41DE6AADD00667A07 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = WeexSDKTests/dependency/libOCMock.a; sourceTree = "<group>"; };
 		74F7BFF41DC782EC004D0871 /* testRootView.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = testRootView.js; sourceTree = "<group>"; };
 		74FD6E031C7C0E9600DBEB6D /* WXScrollerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXScrollerProtocol.h; sourceTree = "<group>"; };
 		775BEE4D1C16F993008D1629 /* WXDefine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXDefine.h; sourceTree = "<group>"; };
@@ -614,7 +612,6 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				74EF31C51DE6AADD00667A07 /* libOCMock.a in Frameworks */,
 				74EF31C01DE5ED6F00667A07 /* libstdc++.tbd in Frameworks */,
 				DC9867441D826D1E000AF388 /* GLKit.framework in Frameworks */,
 				740938FB1D3D0E1700DBB801 /* AVKit.framework in Frameworks */,
@@ -1150,7 +1147,6 @@
 		A5818E244F9E235722E3B938 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
-				74EF31C41DE6AADD00667A07 /* libOCMock.a */,
 				74EF31BE1DE5ED5900667A07 /* libstdc++.tbd */,
 				DC9867431D826D1E000AF388 /* GLKit.framework */,
 				740938FA1D3D0E1700DBB801 /* AVKit.framework */,

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/552f0f70/ios/sdk/WeexSDKTests/WXURLRewriteTests.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDKTests/WXURLRewriteTests.m b/ios/sdk/WeexSDKTests/WXURLRewriteTests.m
index eb6a5fe..f1111e3 100644
--- a/ios/sdk/WeexSDKTests/WXURLRewriteTests.m
+++ b/ios/sdk/WeexSDKTests/WXURLRewriteTests.m
@@ -22,7 +22,6 @@
 #import "WXHandlerFactory.h"
 #import "WXSDKInstance.h"
 #import "WXSDKEngine.h"
-#import <OCMock/OCMock.h>
 
 @interface WXURLRewriteTests : XCTestCase
 
@@ -31,8 +30,6 @@
 
 @end
 
-static id _mockNSBundle;
-
 @implementation WXURLRewriteTests
 
 - (void)setUp {
@@ -41,10 +38,6 @@ static id _mockNSBundle;
     _rewriteHandler = [WXHandlerFactory handlerForProtocol:@protocol(WXURLRewriteProtocol)];
     _instance = [[WXSDKInstance alloc] init];
     _instance.scriptURL = [NSURL URLWithString:@"https://www.weex.com/test/test.js"];
-    
-    _mockNSBundle = [OCMockObject niceMockForClass:[NSBundle class]];
-    NSBundle *correctMainBundle = [NSBundle bundleForClass:self.class];
-    [[[_mockNSBundle stub] andReturn:correctMainBundle] mainBundle];
 }
 
 - (void)tearDown {
@@ -87,19 +80,5 @@ static id _mockNSBundle;
     XCTAssertEqualObjects(@"https://www.weex.com/test/test.jpg", rewriteURL4.absoluteString);
 }
 
-- (void)testFileURL {
-    NSBundle *bundle = [NSBundle bundleForClass:[self class]];
-    NSURL *fileURL = [bundle URLForResource:@"testRootView" withExtension:@"js"];
-    NSURL *rewriteURL = [_rewriteHandler rewriteURL:fileURL.absoluteString withResourceType:WXResourceTypeMainBundle withInstance:_instance];
-    XCTAssertEqualObjects(fileURL.absoluteString, [rewriteURL absoluteString]);
-}
-
-- (void)testLocalURL {
-    NSString *testURL = @"local://testRootView.js";
-    NSBundle *bundle = [NSBundle bundleForClass:[self class]];
-    NSURL *fileURL = [bundle URLForResource:@"testRootView" withExtension:@"js"];
-    NSURL *rewriteURL = [_rewriteHandler rewriteURL:testURL withResourceType:WXResourceTypeMainBundle withInstance:_instance];
-    XCTAssertEqualObjects(fileURL.absoluteString, [rewriteURL absoluteString]);
-}
 
 @end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/552f0f70/ios/sdk/WeexSDKTests/dependency/libOCMock.a
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDKTests/dependency/libOCMock.a b/ios/sdk/WeexSDKTests/dependency/libOCMock.a
deleted file mode 100644
index 8edb6e3..0000000
Binary files a/ios/sdk/WeexSDKTests/dependency/libOCMock.a and /dev/null differ


[10/50] incubator-weex git commit: - [ios] remove redundant headers

Posted by so...@apache.org.
- [ios] remove redundant headers


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/553c1f50
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/553c1f50
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/553c1f50

Branch: refs/heads/0.14-dev
Commit: 553c1f50aa6a643e7120287f51496be8ebb089a4
Parents: cfaf7d2
Author: yinfeng <cx...@apache.org>
Authored: Thu Jun 1 14:53:21 2017 +0800
Committer: yinfeng <cx...@apache.org>
Committed: Thu Jun 1 14:53:21 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXLoadingComponent.m | 7 -------
 ios/sdk/WeexSDK/Sources/Module/WXNavigatorModule.m     | 7 -------
 2 files changed, 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/553c1f50/ios/sdk/WeexSDK/Sources/Component/WXLoadingComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXLoadingComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXLoadingComponent.m
index 66bf08c..d57fa9a 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXLoadingComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXLoadingComponent.m
@@ -16,13 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
- /**
- * Created by Weex.
- * Copyright (c) 2016, Alibaba, Inc. All rights reserved.
- *
- * This source code is licensed under the Apache Licence 2.0.
- * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
- */
 
 #import "WXLoadingComponent.h"
 #import "WXScrollerComponent.h"

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/553c1f50/ios/sdk/WeexSDK/Sources/Module/WXNavigatorModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXNavigatorModule.m b/ios/sdk/WeexSDK/Sources/Module/WXNavigatorModule.m
index 4bcca98..0a58c1f 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXNavigatorModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXNavigatorModule.m
@@ -16,13 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
- /**
- * Created by Weex.
- * Copyright (c) 2016, Alibaba, Inc. All rights reserved.
- *
- * This source code is licensed under the Apache Licence 2.0.
- * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
- */
 
 #import "WXNavigatorModule.h"
 #import "WXSDKManager.h"


[13/50] incubator-weex git commit: * [ios] ignore SRWebSocket for copyright header checking

Posted by so...@apache.org.
* [ios] ignore SRWebSocket for copyright header checking


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/b3e1fcbb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/b3e1fcbb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/b3e1fcbb

Branch: refs/heads/0.14-dev
Commit: b3e1fcbbad2f98fd8373e2a6f25fe8c1417d48b5
Parents: 552f0f7
Author: yinfeng <cx...@apache.org>
Authored: Thu Jun 1 15:16:48 2017 +0800
Committer: yinfeng <cx...@apache.org>
Committed: Thu Jun 1 15:16:48 2017 +0800

----------------------------------------------------------------------
 dangerfile.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b3e1fcbb/dangerfile.js
----------------------------------------------------------------------
diff --git a/dangerfile.js b/dangerfile.js
index 114571d..0d4b0f5 100644
--- a/dangerfile.js
+++ b/dangerfile.js
@@ -169,7 +169,8 @@ const ignoreCopyrightVerifyPath = [
   'android/sdk/assets',
   'ios/playground/bundlejs',
   'ios/sdk/WeexSDK/Resources',
-  'ios/sdk/WeexSDK/Sources/Layout'
+  'ios/sdk/WeexSDK/Sources/Layout',
+  'ios/sdk/WeexSDK/dependency/SRWebSocket'
 ]
 
 codefiles.forEach(filepath => {