You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by zs...@apache.org on 2017/08/01 02:29:10 UTC

[01/50] [abbrv] incubator-weex git commit: + [example] update maraca

Repository: incubator-weex
Updated Branches:
  refs/heads/master 6d395f5d5 -> af717020c


+ [example] update maraca


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

Branch: refs/heads/master
Commit: f4b0b46fa8ef470f8d02044c4049a91fb5ccdc03
Parents: 41cd8dc
Author: 齐山 <su...@163.com>
Authored: Sat Jun 24 18:59:43 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Sat Jun 24 18:59:43 2017 +0800

----------------------------------------------------------------------
 test/scripts/util.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/f4b0b46f/test/scripts/util.js
----------------------------------------------------------------------
diff --git a/test/scripts/util.js b/test/scripts/util.js
index 6e1b581..74d966e 100644
--- a/test/scripts/util.js
+++ b/test/scripts/util.js
@@ -125,7 +125,7 @@ module.exports = {
         return ( isRunInCI ? 60 : 10 ) * 60 * 1000;
     },
     getGETActionWaitTimeMills:function(){
-        return (isRunInCI ? 120 : 5 ) * 1000;
+        return (isRunInCI ? 5 : 1 ) * 1000;
     },
     diffImage, 
     createDriver:function(wd){


[02/50] [abbrv] incubator-weex git commit: + [example] revert to before

Posted by zs...@apache.org.
+ [example] revert to before


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

Branch: refs/heads/master
Commit: f60456cbce41d2c00a98d6b7ea0f7fd6a01e78a5
Parents: f4b0b46
Author: 齐山 <su...@163.com>
Authored: Sat Jun 24 19:05:45 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Sat Jun 24 19:05:45 2017 +0800

----------------------------------------------------------------------
 test/scripts/util.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/f60456cb/test/scripts/util.js
----------------------------------------------------------------------
diff --git a/test/scripts/util.js b/test/scripts/util.js
index 74d966e..6e1b581 100644
--- a/test/scripts/util.js
+++ b/test/scripts/util.js
@@ -125,7 +125,7 @@ module.exports = {
         return ( isRunInCI ? 60 : 10 ) * 60 * 1000;
     },
     getGETActionWaitTimeMills:function(){
-        return (isRunInCI ? 5 : 1 ) * 1000;
+        return (isRunInCI ? 120 : 5 ) * 1000;
     },
     diffImage, 
     createDriver:function(wd){


[27/50] [abbrv] incubator-weex git commit: closes #169: invalid.

Posted by zs...@apache.org.
closes #169: invalid.


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

Branch: refs/heads/master
Commit: 1a957f1dfb4dc6a595f465ffc1d917bd7f6e843e
Parents: dd60d65
Author: MrRaindrop <te...@gmail.com>
Authored: Fri Jun 30 17:50:30 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Fri Jun 30 17:50:30 2017 +0800

----------------------------------------------------------------------

----------------------------------------------------------------------



[09/50] [abbrv] incubator-weex git commit: + [ios] add comment

Posted by zs...@apache.org.
+ [ios] add comment

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

Branch: refs/heads/master
Commit: 24474e2b09026c4b534527598fd21fccddef032e
Parents: 7ade969
Author: 齐山 <su...@163.com>
Authored: Mon Jun 26 15:44:54 2017 +0800
Committer: GitHub <no...@github.com>
Committed: Mon Jun 26 15:44:54 2017 +0800

----------------------------------------------------------------------
 test/scripts/util.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/24474e2b/test/scripts/util.js
----------------------------------------------------------------------
diff --git a/test/scripts/util.js b/test/scripts/util.js
index 6e1b581..fd9fa43 100644
--- a/test/scripts/util.js
+++ b/test/scripts/util.js
@@ -194,7 +194,7 @@ module.exports = {
             return driver.status()
         else{
             driver._isInit = true;
-            return driver.initDriver().sleep(20000)
+            return driver.initDriver().sleep(20000) //ios cannot detect at once
         }
     },
     quit:function(driver){


[34/50] [abbrv] incubator-weex git commit: Updated grammar in set-up-env.md

Posted by zs...@apache.org.
Updated grammar in set-up-env.md

Updated grammar in set-up-env.md

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

Branch: refs/heads/master
Commit: 87dac9fed6dd3f8b90904d7fed0a4bb75865a9f7
Parents: 6d395f5
Author: Denny <de...@gmail.com>
Authored: Fri Jul 7 20:34:03 2017 -0500
Committer: GitHub <no...@github.com>
Committed: Fri Jul 7 20:34:03 2017 -0500

----------------------------------------------------------------------
 doc/source/guide/set-up-env.md | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/87dac9fe/doc/source/guide/set-up-env.md
----------------------------------------------------------------------
diff --git a/doc/source/guide/set-up-env.md b/doc/source/guide/set-up-env.md
index 702c347..6aac518 100644
--- a/doc/source/guide/set-up-env.md
+++ b/doc/source/guide/set-up-env.md
@@ -8,11 +8,11 @@ has_chapter_content: true
 
 # Set up development environment 
 
-Use dotWe is a good choice, But if you want to develop locally on your own machine, you will set up your development environment.
+Using [dotWe](http://dotwe.org/vue) is a good choice, but if you want to develop locally on your own machine, you will need to set up your development environment.
 
-You will need Node.js and the [Weex CLi](https://github.com/weexteam/weex-toolkit).
+You will need Node.js and the [Weex CLI](https://github.com/weexteam/weex-toolkit).
 
-You can installing Node using [nvm](https://github.com/creationix/nvm) (Simple bash script to manage multiple active node.js versions). Run the following commands in a Terminal after installing nvm:
+You can install Node using [nvm](https://github.com/creationix/nvm) (Simple bash script to manage multiple active node.js versions). Run the following commands in a Terminal after installing nvm:
 
 ```bash
 $ nvm install 6.10.0
@@ -41,13 +41,13 @@ Then you can use the weex command to verify that the installation is successful:
 
 ### Generate a new Weex project
 
-You can use CLi to generate a Weex project called "awesome-project". Run the following command in a Terminal:
+You can use CLI to generate a Weex project called "awesome-project". Run the following command in a Terminal:
 
 ```bash
 $ weex init awesome-project
 ```
 
-Then we enter the awesome-project folder, the CLi has been for us to generate a standard project structure.
+Then enter the awesome-project folder, the CLI has been for us to generate a standard project structure.
 
 ### Usage
 
@@ -57,7 +57,7 @@ We enter the awesome-project folder and install dependencies with the following
 npm install
 ```
 
-Then we run `npm run dev` and `npm run serve` to start watch mode and static server.
+Then run `npm run dev` and `npm run serve` to start watch mode and static server.
 
 Finally, we can see the Weex page in `http://localhost:8080/index.html`.
 
@@ -66,8 +66,8 @@ You can modify this page in `src/foo.vue`. The code is shown below:
 ```html
 <template>
   <div class="wrapper">
-    <text class="weex">Hello Weex !</text>
-    <text class="vue">Hello Vue !</text>
+    <text class="weex">Hello Weex!</text>
+    <text class="vue">Hello Vue!</text>
   </div>
 </template>
 
@@ -90,4 +90,4 @@ You can modify this page in `src/foo.vue`. The code is shown below:
 </style>
 ```
 
-If you're curious to learn more about technical details, continue on to the next. And don't forget to write code at [dotWe](https://dotwe.org) and preview at anytime.
+If you're curious to learn more about technical details, continue on to the next section. And don't forget to write code at [dotWe](https://dotwe.org) and preview at anytime.


[08/50] [abbrv] incubator-weex git commit: +[ios] delete mark

Posted by zs...@apache.org.
+[ios] delete mark

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

Branch: refs/heads/master
Commit: 7ade9691bbf15e465d8680756a3fde524cb76302
Parents: f405ffa
Author: 齐山 <su...@163.com>
Authored: Mon Jun 26 15:42:34 2017 +0800
Committer: GitHub <no...@github.com>
Committed: Mon Jun 26 15:42:34 2017 +0800

----------------------------------------------------------------------
 test/pages/components/textarea-maxlength.vue | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7ade9691/test/pages/components/textarea-maxlength.vue
----------------------------------------------------------------------
diff --git a/test/pages/components/textarea-maxlength.vue b/test/pages/components/textarea-maxlength.vue
index 6c40601..a1a9ddc 100644
--- a/test/pages/components/textarea-maxlength.vue
+++ b/test/pages/components/textarea-maxlength.vue
@@ -16,17 +16,9 @@
       oninput (event) {
         this.value = event.value
         console.log('oninput:', event.value)
-//        modal.toast({
-//          message: `oninput: ${event.value}`,
-//          duration: 0.8
-//        })
       },
       onchange (event) {
         console.log('onchange:', event.value)
-//        modal.toast({
-//          message: `onchange: ${event.value}`,
-//          duration: 0.8
-//        })
       },
     }
   }
@@ -47,4 +39,4 @@
     border-color: #41B883;
     maxlength:10;
   }
-</style>
\ No newline at end of file
+</style>


[46/50] [abbrv] incubator-weex git commit: *[doc] add color-name file color block

Posted by zs...@apache.org.
*[doc] add color-name file color block


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

Branch: refs/heads/master
Commit: fbf39cd2f61d8b78a285244ab69e5996ac187042
Parents: b16f36f
Author: tancy <ro...@gmail.com>
Authored: Wed Jul 19 17:15:49 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Fri Jul 21 15:33:06 2017 +0800

----------------------------------------------------------------------
 doc/themes/weex/source/js/common.js | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fbf39cd2/doc/themes/weex/source/js/common.js
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/js/common.js b/doc/themes/weex/source/js/common.js
index 3e92ba4..c3f6631 100644
--- a/doc/themes/weex/source/js/common.js
+++ b/doc/themes/weex/source/js/common.js
@@ -105,6 +105,28 @@
 
   initPickLang()
 
+ /**
+   * color name
+   */
+
+  function colorname(){
+    if(location.pathname.indexOf('references/color-names.html')>0){
+      var t = document.querySelectorAll("table");
+      Array.prototype.forEach.call(t, function (table) {
+          var d = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
+          Array.prototype.forEach.call(d, function (tr) {
+            var r = tr.getElementsByTagName("td")[1];
+            r.innerHTML ='<span style="background:'+ r.innerHTML +';color:'+ r.innerHTML +'"> yy </span>  ' + r.innerHTML
+          });
+
+      });
+    }
+  }
+
+  colorname();
+
+
+
   /**
    *  Search
    */


[07/50] [abbrv] incubator-weex git commit: + [ios] update text method

Posted by zs...@apache.org.
+ [ios] update text method


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

Branch: refs/heads/master
Commit: f405ffa98d3a15c748783fe5dd7e395c00cab0ff
Parents: 91e6294
Author: 齐山 <su...@163.com>
Authored: Sun Jun 25 14:32:15 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Sun Jun 25 14:32:15 2017 +0800

----------------------------------------------------------------------
 test/scripts/components/textarea-maxlength.test.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/f405ffa9/test/scripts/components/textarea-maxlength.test.js
----------------------------------------------------------------------
diff --git a/test/scripts/components/textarea-maxlength.test.js b/test/scripts/components/textarea-maxlength.test.js
index 01c873f..c3c583d 100644
--- a/test/scripts/components/textarea-maxlength.test.js
+++ b/test/scripts/components/textarea-maxlength.test.js
@@ -48,7 +48,7 @@ describe('@ignore-android textarea maxlength vue test2 ', function () {
       .elementById('status')
       .text()
       .then((text)=>{
-        console.log(text())
+        console.log(text)
         assert.equal(text,'1234')
      })
   })


[30/50] [abbrv] incubator-weex git commit: *[doc update footer link style]

Posted by zs...@apache.org.
*[doc update footer link style]


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

Branch: refs/heads/master
Commit: 96ef64cc73f191de970d583df7520362d41f119f
Parents: af2267e
Author: tancy <ro...@gmail.com>
Authored: Tue Jul 4 14:29:44 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Tue Jul 4 14:29:44 2017 +0800

----------------------------------------------------------------------
 doc/themes/weex/source/css/partial/footer.scss | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/96ef64cc/doc/themes/weex/source/css/partial/footer.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/partial/footer.scss b/doc/themes/weex/source/css/partial/footer.scss
index 71d263f..922eb0b 100644
--- a/doc/themes/weex/source/css/partial/footer.scss
+++ b/doc/themes/weex/source/css/partial/footer.scss
@@ -6,7 +6,9 @@
   margin: 0;
   background: $bg-white;
   border-top: 1px solid #DDDDDD;
-
+  a{
+   text-decoration: underline 
+  }
   .ali-logo {
     width: 83px;
     height: 41px;


[11/50] [abbrv] incubator-weex git commit: + [doc] integrate DocSearch into documentation pages

Posted by zs...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5b4c93e9/doc/themes/weex/source/js/docsearch.min.js
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/js/docsearch.min.js b/doc/themes/weex/source/js/docsearch.min.js
new file mode 100644
index 0000000..c166178
--- /dev/null
+++ b/doc/themes/weex/source/js/docsearch.min.js
@@ -0,0 +1,7 @@
+/*! docsearch 1.5.0 | © Algolia | github.com/algolia/docsearch */
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.docsearch=e():t.docsearch=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";t.exports=n(1)},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=r(i),s=n(3),a=r(s),u=n(68),c=r(u),l=(0,o.default)(a.default);l.version=c.default,e.default=l,t.exports=e.default},function(t,e){"use strict";function n(t){var e=function(){for(var e=arguments.length,n=Array(e),i=0;i<e;i++)n[i]=arguments[i];return new(r.apply(t,[null].concat(n)))};return e.__proto__=t,e.prototype=t.prototype,e}var r=Function.prototype.bind;t.exports=n},function(t,e,n){"u
 se strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},s=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(4),u=r(a),c=n(7),l=r(c),h=n(43),p=r(h),f=n(65),d=r(f),m=n(66),y=r(m),g=n(68),v=r(g),b=n(67),w=r(b),_="Usage:\n  documentationSearch({\n  apiKey,\n  indexName,\n  inputSelector,\n  [ appId ],\n  [ algoliaOptions.{hitsPerPage} ]\n  [ autocompleteOptions.{hint,debug} ]\n})",x=function(){function t(e){var n=e.apiKey,r=e.indexName,s=e.inputSelector,a=e.appId,u=void 0===a?"BH4D9
 OD16A":a,c=e.debug,h=void 0!==c&&c,f=e.algoliaOptions,m=void 0===f?{}:f,y=e.autocompleteOptions,g=void 0===y?{debug:!1,hint:!1,autoselect:!0}:y;i(this,t),t.checkArguments({apiKey:n,indexName:r,inputSelector:s,debug:h,algoliaOptions:m,autocompleteOptions:g}),this.apiKey=n,this.appId=u,this.indexName=r,this.input=t.getInputFromSelector(s),this.algoliaOptions=o({hitsPerPage:5},m);var b=!(!g||!g.debug)&&g.debug;g.debug=h||b,this.autocompleteOptions=g,this.client=(0,l.default)(this.appId,this.apiKey),this.client.addAlgoliaAgent("docsearch.js "+v.default),this.autocomplete=(0,p.default)(this.input,g,[{source:this.getAutocompleteSource(),templates:{suggestion:t.getSuggestionTemplate(),footer:d.default.footer}}]),this.autocomplete.on("autocomplete:selected",this.handleSelected.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input))}return s(t,[{key:"getAutocompleteSource",value:function(){var e=this;return function(n,r){e.
 client.search([{indexName:e.indexName,query:n,params:e.algoliaOptions}]).then(function(e){r(t.formatHits(e.results[0].hits))})}}},{key:"handleSelected",value:function(t,e,n){t.setVal(""),window.location.href=n.url}},{key:"handleShown",value:function(t,e){var n=t.offset().left+t.width()/2,r=(0,w.default)(document).width()/2;isNaN(r)&&(r=900);var i=n-r>=0?"algolia-autocomplete-right":"algolia-autocomplete-left",o=n-r<0?"algolia-autocomplete-right":"algolia-autocomplete-left",s=(0,w.default)(".algolia-autocomplete");s.hasClass(i)||s.addClass(i),s.hasClass(o)&&s.removeClass(o)}}],[{key:"checkArguments",value:function(e){if(!e.apiKey||!e.indexName)throw new Error(_);if(!t.getInputFromSelector(e.inputSelector))throw new Error("Error: No input element in the page matches "+e.inputSelector)}},{key:"getInputFromSelector",value:function(t){var e=(0,w.default)(t).filter("input");return e.length?(0,w.default)(e[0]):null}},{key:"formatHits",value:function(e){var n=y.default.deepClone(e),r=n.map(
 function(t){return t._highlightResult&&(t._highlightResult=y.default.mergeKeyWithParent(t._highlightResult,"hierarchy")),y.default.mergeKeyWithParent(t,"hierarchy")}),i=y.default.groupBy(r,"lvl0");return w.default.each(i,function(t,e){var n=y.default.groupBy(e,"lvl1"),r=y.default.flattenAndFlagFirst(n,"isSubCategoryHeader");i[t]=r}),i=y.default.flattenAndFlagFirst(i,"isCategoryHeader"),i.map(function(e){var n=t.formatURL(e),r=y.default.getHighlightedValue(e,"lvl0"),i=y.default.getHighlightedValue(e,"lvl1")||r,o=i==r,s=y.default.compact([y.default.getHighlightedValue(e,"lvl2")||i,y.default.getHighlightedValue(e,"lvl3"),y.default.getHighlightedValue(e,"lvl4"),y.default.getHighlightedValue(e,"lvl5"),y.default.getHighlightedValue(e,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> › </span>'),a=s==i,u=y.default.getSnippetedValue(e,"content"),c=i&&""!=i||s&&""!=s;return{isCategoryHeader:e.isCategoryHeader,isSubCategoryHeader:e.isSubCategoryHeader,isSubcate
 goryDuplicate:o,isDisplayTitleDuplicate:a,isTextOrSubcatoryNonEmpty:c,category:r,subcategory:i,title:s,text:u,url:n}})}},{key:"formatURL",value:function(t){var e=t.url,n=t.anchor;if(e){var r=e.indexOf("#")!==-1;return r?e:n?t.url+"#"+t.anchor:e}return n?"#"+t.anchor:(console.warn("no anchor nor url for : ",JSON.stringify(t)),null)}},{key:"getSuggestionTemplate",value:function(){var t=u.default.compile(d.default.suggestion);return function(e){return t.render(e)}}}]),t}();e.default=x,t.exports=e.default},function(t,e,n){var r=n(5);r.Template=n(6).Template,r.template=r.Template,t.exports=r},function(t,e,n){!function(t){function e(t){"}"===t.n.substr(t.n.length-1)&&(t.n=t.n.substring(0,t.n.length-1))}function n(t){return t.trim?t.trim():t.replace(/^\s*|\s*$/g,"")}function r(t,e,n){if(e.charAt(n)!=t.charAt(0))return!1;for(var r=1,i=t.length;r<i;r++)if(e.charAt(n+r)!=t.charAt(r))return!1;return!0}function i(e,n,r,a){var u=[],c=null,l=null,h=null;for(l=r[r.length-1];e.length>0;){if(h=e.shi
 ft(),l&&"<"==l.tag&&!(h.tag in _))throw new Error("Illegal content in < super tag.");if(t.tags[h.tag]<=t.tags.$||o(h,a))r.push(h),h.nodes=i(e,h.tag,r,a);else{if("/"==h.tag){if(0===r.length)throw new Error("Closing tag without opener: /"+h.n);if(c=r.pop(),h.n!=c.n&&!s(h.n,c.n,a))throw new Error("Nesting error: "+c.n+" vs. "+h.n);return c.end=h.i,u}"\n"==h.tag&&(h.last=0==e.length||"\n"==e[0].tag)}u.push(h)}if(r.length>0)throw new Error("missing closing tag: "+r.pop().n);return u}function o(t,e){for(var n=0,r=e.length;n<r;n++)if(e[n].o==t.n)return t.tag="#",!0}function s(t,e,n){for(var r=0,i=n.length;r<i;r++)if(n[r].c==t&&n[r].o==e)return!0}function a(t){var e=[];for(var n in t)e.push('"'+c(n)+'": function(c,p,t,i) {'+t[n]+"}");return"{ "+e.join(",")+" }"}function u(t){var e=[];for(var n in t.partials)e.push('"'+c(n)+'":{name:"'+c(t.partials[n].name)+'", '+u(t.partials[n])+"}");return"partials: {"+e.join(",")+"}, subs: "+a(t.subs)}function c(t){return t.replace(v,"\\\\").replace(m,'\\
 "').replace(y,"\\n").replace(g,"\\r").replace(b,"\\u2028").replace(w,"\\u2029")}function l(t){return~t.indexOf(".")?"d":"f"}function h(t,e){var n="<"+(e.prefix||""),r=n+t.n+x++;return e.partials[r]={name:t.n,partials:{}},e.code+='t.b(t.rp("'+c(r)+'",c,p,"'+(t.indent||"")+'"));',r}function p(t,e){e.code+="t.b(t.t(t."+l(t.n)+'("'+c(t.n)+'",c,p,0)));'}function f(t){return"t.b("+t+");"}var d=/\S/,m=/\"/g,y=/\n/g,g=/\r/g,v=/\\/g,b=/\u2028/,w=/\u2029/;t.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},t.scan=function(i,o){function s(){v.length>0&&(b.push({tag:"_t",text:new String(v)}),v="")}function a(){for(var e=!0,n=x;n<b.length;n++)if(e=t.tags[b[n].tag]<t.tags._v||"_t"==b[n].tag&&null===b[n].text.match(d),!e)return!1;return e}function u(t,e){if(s(),t&&a())for(var n,r=x;r<b.length;r++)b[r].text&&((n=b[r+1])&&">"==n.tag&&(n.indent=b[r].text.toString()),b.splice(r,1));else e||b.push({tag:"\n"});w=!1,x=b.length}function c(t,e){var r="="+S,i=t.indexOf(r,e),o=n(t
 .substring(t.indexOf("=",e)+1,i)).split(" ");return T=o[0],S=o[o.length-1],i+r.length-1}var l=i.length,h=0,p=1,f=2,m=h,y=null,g=null,v="",b=[],w=!1,_=0,x=0,T="{{",S="}}";for(o&&(o=o.split(" "),T=o[0],S=o[1]),_=0;_<l;_++)m==h?r(T,i,_)?(--_,s(),m=p):"\n"==i.charAt(_)?u(w):v+=i.charAt(_):m==p?(_+=T.length-1,g=t.tags[i.charAt(_+1)],y=g?i.charAt(_+1):"_v","="==y?(_=c(i,_),m=h):(g&&_++,m=f),w=_):r(S,i,_)?(b.push({tag:y,n:n(v),otag:T,ctag:S,i:"/"==y?w-T.length:_+S.length}),v="",_+=S.length-1,m=h,"{"==y&&("}}"==S?_++:e(b[b.length-1]))):v+=i.charAt(_);return u(w,!0),b};var _={_t:!0,"\n":!0,$:!0,"/":!0};t.stringify=function(e,n,r){return"{code: function (c,p,i) { "+t.wrapMain(e.code)+" },"+u(e)+"}"};var x=0;t.generate=function(e,n,r){x=0;var i={code:"",subs:{},partials:{}};return t.walk(e,i),r.asString?this.stringify(i,n,r):this.makeTemplate(i,n,r)},t.wrapMain=function(t){return'var t=this;t.b(i=i||"");'+t+"return t.fl();"},t.template=t.Template,t.makeTemplate=function(t,e,n){var r=this.makeP
 artials(t);return r.code=new Function("c","p","i",this.wrapMain(t.code)),new this.template(r,e,this,n)},t.makePartials=function(t){var e,n={subs:{},partials:t.partials,name:t.name};for(e in n.partials)n.partials[e]=this.makePartials(n.partials[e]);for(e in t.subs)n.subs[e]=new Function("c","p","t","i",t.subs[e]);return n},t.codegen={"#":function(e,n){n.code+="if(t.s(t."+l(e.n)+'("'+c(e.n)+'",c,p,1),c,p,0,'+e.i+","+e.end+',"'+e.otag+" "+e.ctag+'")){t.rs(c,p,function(c,p,t){',t.walk(e.nodes,n),n.code+="});c.pop();}"},"^":function(e,n){n.code+="if(!t.s(t."+l(e.n)+'("'+c(e.n)+'",c,p,1),c,p,1,0,0,"")){',t.walk(e.nodes,n),n.code+="};"},">":h,"<":function(e,n){var r={partials:{},code:"",subs:{},inPartial:!0};t.walk(e.nodes,r);var i=n.partials[h(e,n)];i.subs=r.subs,i.partials=r.partials},$:function(e,n){var r={subs:{},code:"",partials:n.partials,prefix:e.n};t.walk(e.nodes,r),n.subs[e.n]=r.code,n.inPartial||(n.code+='t.sub("'+c(e.n)+'",c,p,i);')},"\n":function(t,e){e.code+=f('"\\n"'+(t.last?
 "":" + i"))},_v:function(t,e){e.code+="t.b(t.v(t."+l(t.n)+'("'+c(t.n)+'",c,p,0)));'},_t:function(t,e){e.code+=f('"'+c(t.text)+'"')},"{":p,"&":p},t.walk=function(e,n){for(var r,i=0,o=e.length;i<o;i++)r=t.codegen[e[i].tag],r&&r(e[i],n);return n},t.parse=function(t,e,n){return n=n||{},i(t,"",[],n.sectionTags||[])},t.cache={},t.cacheKey=function(t,e){return[t,!!e.asString,!!e.disableLambda,e.delimiters,!!e.modelGet].join("||")},t.compile=function(e,n){n=n||{};var r=t.cacheKey(e,n),i=this.cache[r];if(i){var o=i.partials;for(var s in o)delete o[s].instance;return i}return i=this.generate(this.parse(this.scan(e,n.delimiters),e,n),e,n),this.cache[r]=i}}(e)},function(t,e,n){!function(t){function e(t,e,n){var r;return e&&"object"==typeof e&&(void 0!==e[t]?r=e[t]:n&&e.get&&"function"==typeof e.get&&(r=e.get(t))),r}function n(t,e,n,r,i,o){function s(){}function a(){}s.prototype=t,a.prototype=t.subs;var u,c=new s;c.subs=new a,c.subsText={},c.buf="",r=r||{},c.stackSubs=r,c.subsText=o;for(u in e)r
 [u]||(r[u]=e[u]);for(u in r)c.subs[u]=r[u];i=i||{},c.stackPartials=i;for(u in n)i[u]||(i[u]=n[u]);for(u in i)c.partials[u]=i[u];return c}function r(t){return String(null===t||void 0===t?"":t)}function i(t){return t=r(t),l.test(t)?t.replace(o,"&amp;").replace(s,"&lt;").replace(a,"&gt;").replace(u,"&#39;").replace(c,"&quot;"):t}t.Template=function(t,e,n,r){t=t||{},this.r=t.code||this.r,this.c=n,this.options=r||{},this.text=e||"",this.partials=t.partials||{},this.subs=t.subs||{},this.buf=""},t.Template.prototype={r:function(t,e,n){return""},v:i,t:r,render:function(t,e,n){return this.ri([t],e||{},n)},ri:function(t,e,n){return this.r(t,e,n)},ep:function(t,e){var r=this.partials[t],i=e[r.name];if(r.instance&&r.base==i)return r.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[t].base=i,r.subs){e.stackText||(e.stackText={});for(key in r.subs)e.stackText[key]||(e.stackText[key]=void 0!==th
 is.activeSub&&e.stackText[this.activeSub]?e.stackText[this.activeSub]:this.text);i=n(i,r.subs,r.partials,this.stackSubs,this.stackPartials,e.stackText)}return this.partials[t].instance=i,i},rp:function(t,e,n,r){var i=this.ep(t,n);return i?i.ri(e,n,r):""},rs:function(t,e,n){var r=t[t.length-1];if(!h(r))return void n(t,e,this);for(var i=0;i<r.length;i++)t.push(r[i]),n(t,e,this),t.pop()},s:function(t,e,n,r,i,o,s){var a;return(!h(t)||0!==t.length)&&("function"==typeof t&&(t=this.ms(t,e,n,r,i,o,s)),a=!!t,!r&&a&&e&&e.push("object"==typeof t?t:e[e.length-1]),a)},d:function(t,n,r,i){var o,s=t.split("."),a=this.f(s[0],n,r,i),u=this.options.modelGet,c=null;if("."===t&&h(n[n.length-2]))a=n[n.length-1];else for(var l=1;l<s.length;l++)o=e(s[l],a,u),void 0!==o?(c=a,a=o):a="";return!(i&&!a)&&(i||"function"!=typeof a||(n.push(c),a=this.mv(a,n,r),n.pop()),a)},f:function(t,n,r,i){for(var o=!1,s=null,a=!1,u=this.options.modelGet,c=n.length-1;c>=0;c--)if(s=n[c],o=e(t,s,u),void 0!==o){a=!0;break}return 
 a?(i||"function"!=typeof o||(o=this.mv(o,n,r)),o):!i&&""},ls:function(t,e,n,i,o){var s=this.options.delimiters;return this.options.delimiters=o,this.b(this.ct(r(t.call(e,i)),e,n)),this.options.delimiters=s,!1},ct:function(t,e,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(t,this.options).render(e,n)},b:function(t){this.buf+=t},fl:function(){var t=this.buf;return this.buf="",t},ms:function(t,e,n,r,i,o,s){var a,u=e[e.length-1],c=t.call(u);return"function"==typeof c?!!r||(a=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,u,n,a.substring(i,o),s)):c},mv:function(t,e,n){var i=e[e.length-1],o=t.call(i);return"function"==typeof o?this.ct(r(o.call(i)),i,n):o},sub:function(t,e,n,r){var i=this.subs[t];i&&(this.activeSub=t,i(e,n,this,r),this.activeSub=!1)}};var o=/&/g,s=/</g,a=/>/g,u=/\'/g,c=/\"/g,l=/[&<>\"\']/,h=Array.isArray||function(t){return"[object Array]"===Object.prototype
 .toString.call(t)}}(e)},function(t,e,n){"use strict";var r=n(8),i=n(33);t.exports=i(r)},function(t,e,n){function r(){u.apply(this,arguments)}function i(){var t="Not implemented in this environment.\nIf you feel this is a mistake, write to support@algolia.com";throw new l.AlgoliaSearchError(t)}t.exports=r;var o=n(9),s=n(15),a=n(16),u=n(27),c=n(10),l=n(13);c(r,u),r.prototype.deleteIndex=function(t,e){return this._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(t),hostType:"write",callback:e})},r.prototype.moveIndex=function(t,e,n){var r={operation:"move",destination:e};return this._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(t)+"/operation",body:r,hostType:"write",callback:n})},r.prototype.copyIndex=function(t,e,n){var r={operation:"copy",destination:e};return this._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(t)+"/operation",body:r,hostType:"write",callback:n})},r.prototype.getLogs=function(t,e,r){var i=n(18),o={};return"object
 "==typeof t?(o=i(t),r=e):0===arguments.length||"function"==typeof t?r=t:1===arguments.length||"function"==typeof e?(r=e,o.offset=t):(o.offset=t,o.length=e),void 0===o.offset&&(o.offset=0),void 0===o.length&&(o.length=10),this._jsonRequest({method:"GET",url:"/1/logs?"+this._getSearchParams(o,""),hostType:"read",callback:r})},r.prototype.listIndexes=function(t,e){var n="";return void 0===t||"function"==typeof t?e=t:n="?page="+t,this._jsonRequest({method:"GET",url:"/1/indexes"+n,hostType:"read",callback:e})},r.prototype.initIndex=function(t){return new o(this,t)},r.prototype.listUserKeys=function(t){return this._jsonRequest({method:"GET",url:"/1/keys",hostType:"read",callback:t})},r.prototype.getUserKeyACL=function(t,e){return this._jsonRequest({method:"GET",url:"/1/keys/"+t,hostType:"read",callback:e})},r.prototype.deleteUserKey=function(t,e){return this._jsonRequest({method:"DELETE",url:"/1/keys/"+t,hostType:"write",callback:e})},r.prototype.addUserKey=function(t,e,r){var i=n(22),o="
 Usage: client.addUserKey(arrayOfAcls[, params, callback])";if(!i(t))throw new Error(o);1!==arguments.length&&"function"!=typeof e||(r=e,e=null);var s={acl:t};return e&&(s.validity=e.validity,s.maxQueriesPerIPPerHour=e.maxQueriesPerIPPerHour,s.maxHitsPerQuery=e.maxHitsPerQuery,s.indexes=e.indexes,s.description=e.description,e.queryParameters&&(s.queryParameters=this._getSearchParams(e.queryParameters,"")),s.referers=e.referers),this._jsonRequest({method:"POST",url:"/1/keys",body:s,hostType:"write",callback:r})},r.prototype.addUserKeyWithValidity=s(function(t,e,n){return this.addUserKey(t,e,n)},a("client.addUserKeyWithValidity()","client.addUserKey()")),r.prototype.updateUserKey=function(t,e,r,i){var o=n(22),s="Usage: client.updateUserKey(key, arrayOfAcls[, params, callback])";if(!o(e))throw new Error(s);2!==arguments.length&&"function"!=typeof r||(i=r,r=null);var a={acl:e};return r&&(a.validity=r.validity,a.maxQueriesPerIPPerHour=r.maxQueriesPerIPPerHour,a.maxHitsPerQuery=r.maxHitsPe
 rQuery,a.indexes=r.indexes,a.description=r.description,r.queryParameters&&(a.queryParameters=this._getSearchParams(r.queryParameters,"")),a.referers=r.referers),this._jsonRequest({method:"PUT",url:"/1/keys/"+t,body:a,hostType:"write",callback:i})},r.prototype.startQueriesBatch=s(function(){this._batch=[]},a("client.startQueriesBatch()","client.search()")),r.prototype.addQueryInBatch=s(function(t,e,n){this._batch.push({indexName:t,query:e,params:n})},a("client.addQueryInBatch()","client.search()")),r.prototype.sendQueriesBatch=s(function(t){return this.search(this._batch,t)},a("client.sendQueriesBatch()","client.search()")),r.prototype.batch=function(t,e){var r=n(22),i="Usage: client.batch(operations[, callback])";if(!r(t))throw new Error(i);return this._jsonRequest({method:"POST",url:"/1/indexes/*/batch",body:{requests:t},hostType:"write",callback:e})},r.prototype.destroy=i,r.prototype.enableRateLimitForward=i,r.prototype.disableRateLimitForward=i,r.prototype.useSecuredAPIKey=i,r.pr
 ototype.disableSecuredAPIKey=i,r.prototype.generateSecuredApiKey=i},function(t,e,n){function r(){o.apply(this,arguments)}var i=n(10),o=n(11),s=n(15),a=n(16),u=n(24),c=n(13),l=s(function(){},a("forwardToSlaves","forwardToReplicas"));t.exports=r,i(r,o),r.prototype.addObject=function(t,e,n){var r=this;return 1!==arguments.length&&"function"!=typeof e||(n=e,e=void 0),this.as._jsonRequest({method:void 0!==e?"PUT":"POST",url:"/1/indexes/"+encodeURIComponent(r.indexName)+(void 0!==e?"/"+encodeURIComponent(e):""),body:t,hostType:"write",callback:n})},r.prototype.addObjects=function(t,e){var r=n(22),i="Usage: index.addObjects(arrayOfObjects[, callback])";if(!r(t))throw new Error(i);for(var o=this,s={requests:[]},a=0;a<t.length;++a){var u={action:"addObject",body:t[a]};s.requests.push(u)}return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(o.indexName)+"/batch",body:s,hostType:"write",callback:e})},r.prototype.partialUpdateObject=function(t,e,n){1!==arguments.length
 &&"function"!=typeof e||(n=e,e=void 0);var r=this,i="/1/indexes/"+encodeURIComponent(r.indexName)+"/"+encodeURIComponent(t.objectID)+"/partial";return e===!1&&(i+="?createIfNotExists=false"),this.as._jsonRequest({method:"POST",url:i,body:t,hostType:"write",callback:n})},r.prototype.partialUpdateObjects=function(t,e){var r=n(22),i="Usage: index.partialUpdateObjects(arrayOfObjects[, callback])";if(!r(t))throw new Error(i);for(var o=this,s={requests:[]},a=0;a<t.length;++a){var u={action:"partialUpdateObject",objectID:t[a].objectID,body:t[a]};s.requests.push(u)}return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(o.indexName)+"/batch",body:s,hostType:"write",callback:e})},r.prototype.saveObject=function(t,e){var n=this;return this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(n.indexName)+"/"+encodeURIComponent(t.objectID),body:t,hostType:"write",callback:e})},r.prototype.saveObjects=function(t,e){var r=n(22),i="Usage: index.saveObjects(ar
 rayOfObjects[, callback])";if(!r(t))throw new Error(i);for(var o=this,s={requests:[]},a=0;a<t.length;++a){var u={action:"updateObject",objectID:t[a].objectID,body:t[a]};s.requests.push(u)}return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(o.indexName)+"/batch",body:s,hostType:"write",callback:e})},r.prototype.deleteObject=function(t,e){if("function"==typeof t||"string"!=typeof t&&"number"!=typeof t){var n=new c.AlgoliaSearchError("Cannot delete an object without an objectID");return e=t,"function"==typeof e?e(n):this.as._promise.reject(n)}var r=this;return this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(r.indexName)+"/"+encodeURIComponent(t),hostType:"write",callback:e})},r.prototype.deleteObjects=function(t,e){var r=n(22),i=n(23),o="Usage: index.deleteObjects(arrayOfObjectIDs[, callback])";if(!r(t))throw new Error(o);var s=this,a={requests:i(t,function(t){return{action:"deleteObject",objectID:t,body:{objectID:t}}})};return thi
 s.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(s.indexName)+"/batch",body:a,hostType:"write",callback:e})},r.prototype.deleteByQuery=function(t,e,r){function i(t){if(0===t.nbHits)return t;var e=h(t.hits,function(t){return t.objectID});return p.deleteObjects(e).then(o).then(s)}function o(t){return p.waitTask(t.taskID)}function s(){return p.deleteByQuery(t,e)}function a(){u(function(){r(null)},f._setTimeout||setTimeout)}function c(t){u(function(){r(t)},f._setTimeout||setTimeout)}var l=n(18),h=n(23),p=this,f=p.as;1===arguments.length||"function"==typeof e?(r=e,e={}):e=l(e),e.attributesToRetrieve="objectID",e.hitsPerPage=1e3,e.distinct=!1,this.clearCache();var d=this.search(t,e).then(i);return r?void d.then(a,c):d},r.prototype.browseAll=function(t,e){function r(t){if(!a._stopped){var e;e=void 0!==t?"cursor="+encodeURIComponent(t):l,u._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/browse?"+e,hostType:"read",callback:i})}}function i(t
 ,e){if(!a._stopped)return t?void a._error(t):(a._result(e),void 0===e.cursor?void a._end():void r(e.cursor))}"object"==typeof t&&(e=t,t=void 0);var o=n(17),s=n(25),a=new s,u=this.as,c=this,l=u._getSearchParams(o({},e||{},{query:t}),"");return r(),a},r.prototype.ttAdapter=function(t){var e=this;return function(n,r,i){var o;o="function"==typeof i?i:r,e.search(n,t,function(t,e){return t?void o(t):void o(e.hits)})}},r.prototype.waitTask=function(t,e){function n(){return l._jsonRequest({method:"GET",hostType:"read",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/task/"+t}).then(function(t){a++;var e=o*a*a;return e>s&&(e=s),"published"!==t.status?l._promise.delay(e).then(n):t})}function r(t){u(function(){e(null,t)},l._setTimeout||setTimeout)}function i(t){u(function(){e(t)},l._setTimeout||setTimeout)}var o=100,s=5e3,a=0,c=this,l=c.as,h=n();return e?void h.then(r,i):h},r.prototype.clearIndex=function(t){var e=this;return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURICo
 mponent(e.indexName)+"/clear",hostType:"write",callback:t})},r.prototype.getSettings=function(t){var e=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(e.indexName)+"/settings?getVersion=2",hostType:"read",callback:t})},r.prototype.searchSynonyms=function(t,e){return"function"==typeof t?(e=t,t={}):void 0===t&&(t={}),this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/search",body:t,hostType:"read",callback:e})},r.prototype.saveSynonym=function(t,e,n){"function"==typeof e?(n=e,e={}):void 0===e&&(e={}),void 0!==e.forwardToSlaves&&l();var r=e.forwardToSlaves||e.forwardToReplicas?"true":"false";return this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/"+encodeURIComponent(t.objectID)+"?forwardToReplicas="+r,body:t,hostType:"write",callback:n})},r.prototype.getSynonym=function(t,e){return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent
 (this.indexName)+"/synonyms/"+encodeURIComponent(t),hostType:"read",callback:e})},r.prototype.deleteSynonym=function(t,e,n){"function"==typeof e?(n=e,e={}):void 0===e&&(e={}),void 0!==e.forwardToSlaves&&l();var r=e.forwardToSlaves||e.forwardToReplicas?"true":"false";return this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/"+encodeURIComponent(t)+"?forwardToReplicas="+r,hostType:"write",callback:n})},r.prototype.clearSynonyms=function(t,e){"function"==typeof t?(e=t,t={}):void 0===t&&(t={}),void 0!==t.forwardToSlaves&&l();var n=t.forwardToSlaves||t.forwardToReplicas?"true":"false";return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/clear?forwardToReplicas="+n,hostType:"write",callback:e})},r.prototype.batchSynonyms=function(t,e,n){"function"==typeof e?(n=e,e={}):void 0===e&&(e={}),void 0!==e.forwardToSlaves&&l();var r=e.forwardToSlaves||e.forwardToReplicas?"true":"false";return t
 his.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/batch?forwardToReplicas="+r+"&replaceExistingSynonyms="+(e.replaceExistingSynonyms?"true":"false"),hostType:"write",body:t,callback:n})},r.prototype.setSettings=function(t,e,n){1!==arguments.length&&"function"!=typeof e||(n=e,e={}),void 0!==e.forwardToSlaves&&l();var r=e.forwardToSlaves||e.forwardToReplicas?"true":"false",i=this;return this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(i.indexName)+"/settings?forwardToReplicas="+r,hostType:"write",body:t,callback:n})},r.prototype.listUserKeys=function(t){var e=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(e.indexName)+"/keys",hostType:"read",callback:t})},r.prototype.getUserKeyACL=function(t,e){var n=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(n.indexName)+"/keys/"+t,hostType:"read",callback:e})},r.prototype.deleteUserKey=function(t,e){va
 r n=this;return this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(n.indexName)+"/keys/"+t,hostType:"write",callback:e})},r.prototype.addUserKey=function(t,e,r){var i=n(22),o="Usage: index.addUserKey(arrayOfAcls[, params, callback])";if(!i(t))throw new Error(o);1!==arguments.length&&"function"!=typeof e||(r=e,e=null);var s={acl:t};return e&&(s.validity=e.validity,s.maxQueriesPerIPPerHour=e.maxQueriesPerIPPerHour,s.maxHitsPerQuery=e.maxHitsPerQuery,s.description=e.description,e.queryParameters&&(s.queryParameters=this.as._getSearchParams(e.queryParameters,"")),s.referers=e.referers),this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/keys",body:s,hostType:"write",callback:r})},r.prototype.addUserKeyWithValidity=s(function(t,e,n){return this.addUserKey(t,e,n)},a("index.addUserKeyWithValidity()","index.addUserKey()")),r.prototype.updateUserKey=function(t,e,r,i){var o=n(22),s="Usage: index.updateUserKey(key, arrayOfAcls[, pa
 rams, callback])";if(!o(e))throw new Error(s);2!==arguments.length&&"function"!=typeof r||(i=r,r=null);var a={acl:e};return r&&(a.validity=r.validity,a.maxQueriesPerIPPerHour=r.maxQueriesPerIPPerHour,a.maxHitsPerQuery=r.maxHitsPerQuery,a.description=r.description,r.queryParameters&&(a.queryParameters=this.as._getSearchParams(r.queryParameters,"")),a.referers=r.referers),this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/keys/"+t,body:a,hostType:"write",callback:i})}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){function r(t,e){this.indexName=e,this.as=t,this.typeAheadArgs=null,this.typeAheadValueOption=null,this.cache={}}var i=n(12),o=n(15),s=n(16);t.exports=r,r.prot
 otype.clearCache=function(){this.cache={}},r.prototype.search=i("query"),r.prototype.similarSearch=i("similarQuery"),r.prototype.browse=function(t,e,r){var i,o,s=n(17),a=this;0===arguments.length||1===arguments.length&&"function"==typeof arguments[0]?(i=0,r=arguments[0],t=void 0):"number"==typeof arguments[0]?(i=arguments[0],"number"==typeof arguments[1]?o=arguments[1]:"function"==typeof arguments[1]&&(r=arguments[1],o=void 0),t=void 0,e=void 0):"object"==typeof arguments[0]?("function"==typeof arguments[1]&&(r=arguments[1]),e=arguments[0],t=void 0):"string"==typeof arguments[0]&&"function"==typeof arguments[1]&&(r=arguments[1],e=void 0),e=s({},e||{},{page:i,hitsPerPage:o,query:t});var u=this.as._getSearchParams(e,"");return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(a.indexName)+"/browse?"+u,hostType:"read",callback:r})},r.prototype.browseFrom=function(t,e){return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/
 browse?cursor="+encodeURIComponent(t),hostType:"read",callback:e})},r.prototype.searchForFacetValues=function(t,e){var r=n(18),i=n(19),o="Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])";if(void 0===t.facetName||void 0===t.facetQuery)throw new Error(o);var s=t.facetName,a=i(r(t),function(t){return"facetName"===t}),u=this.as._getSearchParams(a,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/facets/"+encodeURIComponent(s)+"/query",hostType:"read",body:{params:u},callback:e})},r.prototype.searchFacet=o(function(t,e){return this.searchForFacetValues(t,e)},s("index.searchFacet(params[, callback])","index.searchForFacetValues(params[, callback])")),r.prototype._search=function(t,e,n,r){return this.as._jsonRequest({cache:this.cache,method:"POST",url:e||"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:t},hostType:"read",fallback:{method:"GET",url:"/1/indexes/"+encodeURIComponent(thi
 s.indexName),body:{params:t}},callback:n,additionalUA:r})},r.prototype.getObject=function(t,e,n){var r=this;1!==arguments.length&&"function"!=typeof e||(n=e,e=void 0);var i="";if(void 0!==e){i="?attributes=";for(var o=0;o<e.length;++o)0!==o&&(i+=","),i+=e[o]}return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(r.indexName)+"/"+encodeURIComponent(t)+i,hostType:"read",callback:n})},r.prototype.getObjects=function(t,e,r){var i=n(22),o=n(23),s="Usage: index.getObjects(arrayOfObjectIDs[, callback])";if(!i(t))throw new Error(s);var a=this;1!==arguments.length&&"function"!=typeof e||(r=e,e=void 0);var u={requests:o(t,function(t){var n={indexName:a.indexName,objectID:t};return e&&(n.attributesToRetrieve=e.join(",")),n})};return this.as._jsonRequest({method:"POST",url:"/1/indexes/*/objects",hostType:"read",body:u,callback:r})},r.prototype.as=null,r.prototype.indexName=null,r.prototype.typeAheadArgs=null,r.prototype.typeAheadValueOption=null},function(t,e,n){function
  r(t,e){return function(n,r,o){if("function"==typeof n&&"object"==typeof r||"object"==typeof o)throw new i.AlgoliaSearchError("index.search usage is index.search(query, params, cb)");0===arguments.length||"function"==typeof n?(o=n,n=""):1!==arguments.length&&"function"!=typeof r||(o=r,r=void 0),"object"==typeof n&&null!==n?(r=n,n=void 0):void 0!==n&&null!==n||(n="");var s="";void 0!==n&&(s+=t+"="+encodeURIComponent(n));var a;return void 0!==r&&(r.additionalUA&&(a=r.additionalUA,delete r.additionalUA),s=this.as._getSearchParams(r,s)),this._search(s,e,o,a)}}t.exports=r;var i=n(13)},function(t,e,n){"use strict";function r(t,e){var r=n(14),i=this;"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):i.stack=(new Error).stack||"Cannot get a stacktrace, browser is too old",this.name="AlgoliaSearchError",this.message=t||"Unknown error",e&&r(e,function(t,e){i[e]=t})}function i(t,e){function n(){var n=Array.prototype.slice.call(arguments,0);"string"!=typeo
 f n[0]&&n.unshift(e),r.apply(this,n),this.name="AlgoliaSearch"+t+"Error"}return o(n,r),n}var o=n(10);
+o(r,Error),t.exports={AlgoliaSearchError:r,UnparsableJSON:i("UnparsableJSON","Could not parse the incoming response as JSON, see err.more for details"),RequestTimeout:i("RequestTimeout","Request timedout before getting a response"),Network:i("Network","Network issue, see err.more for details"),JSONPScriptFail:i("JSONPScriptFail","<script> was loaded but did not call our provided callback"),JSONPScriptError:i("JSONPScriptError","<script> unable to load due to an `error` event on it"),Unknown:i("Unknown","Unknown error occured")}},function(t,e){var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString;t.exports=function(t,e,i){if("[object Function]"!==r.call(e))throw new TypeError("iterator must be a function");var o=t.length;if(o===+o)for(var s=0;s<o;s++)e.call(i,t[s],s,t);else for(var a in t)n.call(t,a)&&e.call(i,t[a],a,t)}},function(t,e){t.exports=function(t,e){function n(){return r||(console.log(e),r=!0),t.apply(this,arguments)}var r=!1;return n}},function(t,e){t.exports=f
 unction(t,e){var n=t.toLowerCase().replace(".","").replace("()","");return"algoliasearch: `"+t+"` was replaced by `"+e+"`. Please see https://github.com/algolia/algoliasearch-client-js/wiki/Deprecated#"+n}},function(t,e,n){var r=n(14);t.exports=function t(e){var n=Array.prototype.slice.call(arguments);return r(n,function(n){for(var r in n)n.hasOwnProperty(r)&&("object"==typeof e[r]&&"object"==typeof n[r]?e[r]=t({},e[r],n[r]):void 0!==n[r]&&(e[r]=n[r]))}),e}},function(t,e){t.exports=function(t){return JSON.parse(JSON.stringify(t))}},function(t,e,n){t.exports=function(t,e){var r=n(20),i=n(14),o={};return i(r(t),function(n){e(n)!==!0&&(o[n]=t[n])}),o}},function(t,e,n){"use strict";var r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=Array.prototype.slice,s=n(21),a=Object.prototype.propertyIsEnumerable,u=!a.call({toString:null},"toString"),c=a.call(function(){},"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","c
 onstructor"],h=function(t){var e=t.constructor;return e&&e.prototype===t},p={$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!p["$"+t]&&r.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{h(window[t])}catch(t){return!0}}catch(t){return!0}return!1}(),d=function(t){if("undefined"==typeof window||!f)return h(t);try{return h(t)}catch(t){return!1}},m=function(t){var e=null!==t&&"object"==typeof t,n="[object Function]"===i.call(t),o=s(t),a=e&&"[object String]"===i.call(t),h=[];if(!e&&!n&&!o)throw new TypeError("Object.keys called on a non-object");var p=c&&n;if(a&&t.length>0&&!r.call(t,0))for(var f=0;f<t.length;++f)h.push(String(f));if(o&&t.length>0)for(var m=0;m<t
 .length;++m)h.push(String(m));else for(var y in t)p&&"prototype"===y||!r.call(t,y)||h.push(String(y));if(u)for(var g=d(t),v=0;v<l.length;++v)g&&"constructor"===l[v]||!r.call(t,l[v])||h.push(l[v]);return h};m.shim=function(){if(Object.keys){var t=function(){return 2===(Object.keys(arguments)||"").length}(1,2);if(!t){var e=Object.keys;Object.keys=function(t){return e(s(t)?o.call(t):t)}}}else Object.keys=m;return Object.keys||m},t.exports=m},function(t,e){"use strict";var n=Object.prototype.toString;t.exports=function(t){var e=n.call(t),r="[object Arguments]"===e;return r||(r="[object Array]"!==e&&null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===n.call(t.callee)),r}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){var r=n(14);t.exports=function(t,e){var n=[];return r(t,function(r,i){n.push(e(r,i,t))}),n}},function(t,e){t.exports=function(t,e){e(t,0)}},function(t,e,n){"use
  strict";function r(){}t.exports=r;var i=n(10),o=n(26).EventEmitter;i(r,o),r.prototype.stop=function(){this._stopped=!0,this._clean()},r.prototype._end=function(){this.emit("end"),this._clean()},r.prototype._error=function(t){this.emit("error",t),this._clean()},r.prototype._result=function(t){this.emit("result",t)},r.prototype._clean=function(){this.removeAllListeners("stop"),this.removeAllListeners("end"),this.removeAllListeners("error"),this.removeAllListeners("result")}},function(t,e){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(t){return"function"==typeof t}function i(t){return"number"==typeof t}function o(t){return"object"==typeof t&&null!==t}function s(t){return void 0===t}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(t){if(!i(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,t
 his},n.prototype.emit=function(t){var e,n,i,a,u,c;if(this._events||(this._events={}),"error"===t&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if(e=arguments[1],e instanceof Error)throw e;var l=new Error('Uncaught, unspecified "error" event. ('+e+")");throw l.context=e,l}if(n=this._events[t],s(n))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:a=Array.prototype.slice.call(arguments,1),n.apply(this,a)}else if(o(n))for(a=Array.prototype.slice.call(arguments,1),c=n.slice(),i=c.length,u=0;u<i;u++)c[u].apply(this,a);return!0},n.prototype.addListener=function(t,e){var i;if(!r(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,r(e.listener)?e.listener:e),this._events[t]?o(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._ev
 ents[t]=e,o(this._events[t])&&!this._events[t].warned&&(i=s(this._maxListeners)?n.defaultMaxListeners:this._maxListeners,i&&i>0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace())),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,e){function n(){this.removeListener(t,n),i||(i=!0,e.apply(this,arguments))}if(!r(e))throw TypeError("listener must be a function");var i=!1;return n.listener=e,this.on(t,n),this},n.prototype.removeListener=function(t,e){var n,i,s,a;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(n=this._events[t],s=n.length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(n)){for(a=s;a-- >0
 ;)if(n[a]===e||n[a].listener&&n[a].listener===e){i=a;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[t],r(n))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){var e;return e=this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 
 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,n){function r(t,e,r){var o=n(29)("algoliasearch"),s=n(18),a=n(22),c=n(23),l="Usage: algoliasearch(applicationID, apiKey, opts)";if(r._allowEmptyCredentials!==!0&&!t)throw new u.AlgoliaSearchError("Please provide an application ID. "+l);if(r._allowEmptyCredentials!==!0&&!e)throw new u.AlgoliaSearchError("Please provide an API key. "+l);this.applicationID=t,this.apiKey=e,this.hosts={read:[],write:[]},r=r||{};var h=r.protocol||"https:";if(this._timeouts=r.timeouts||{connect:1e3,read:2e3,write:3e4},r.timeout&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=r.timeout),/:$/.test(h)||(h+=":"),"http:"!==r.protocol&&"https:"!==r.protocol)throw new u.AlgoliaSearchError("protocol must be `http:` or `https:` (was `"+r.protocol+"`)");if(this._checkAppIdData(),r.hosts)a(r.hosts)?(this.hosts.read=s(r.hosts),this.hosts.write=s(r.hosts)):(this.hosts.read=s(r.hosts.read),this.hosts.write=s(r.hosts.write));else{
 var p=c(this._shuffleResult,function(e){return t+"-"+e+".algolianet.com"});this.hosts.read=[this.applicationID+"-dsn.algolia.net"].concat(p),this.hosts.write=[this.applicationID+".algolia.net"].concat(p)}this.hosts.read=c(this.hosts.read,i(h)),this.hosts.write=c(this.hosts.write,i(h)),this.extraHeaders=[],this.cache=r._cache||{},this._ua=r._ua,this._useCache=!(void 0!==r._useCache&&!r._cache)||r._useCache,this._useFallback=void 0===r.useFallback||r.useFallback,this._setTimeout=r._setTimeout,o("init done, %j",this)}function i(t){return function(e){return t+"//"+e.toLowerCase()}}function o(t){if(void 0===Array.prototype.toJSON)return JSON.stringify(t);var e=Array.prototype.toJSON;delete Array.prototype.toJSON;var n=JSON.stringify(t);return Array.prototype.toJSON=e,n}function s(t){for(var e,n,r=t.length;0!==r;)n=Math.floor(Math.random()*r),r-=1,e=t[r],t[r]=t[n],t[n]=e;return t}function a(t){var e={};for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var r;r="x-algolia-api-key
 "===n||"x-algolia-application-id"===n?"**hidden for security purposes**":t[n],e[n]=r}return e}t.exports=r;var u=n(13),c=n(24),l=n(11),h=n(28),p=500,f={NODE_ENV:"production"}.RESET_APP_DATA_TIMER&&parseInt({NODE_ENV:"production"}.RESET_APP_DATA_TIMER,10)||12e4;r.prototype.initIndex=function(t){return new l(this,t)},r.prototype.setExtraHeader=function(t,e){this.extraHeaders.push({name:t.toLowerCase(),value:e})},r.prototype.addAlgoliaAgent=function(t){this._ua.indexOf(";"+t)===-1&&(this._ua+=";"+t)},r.prototype._jsonRequest=function(t){function e(n,c){function p(t){var e=t&&t.body&&t.body.message&&t.body.status||t.statusCode||t&&t.body&&200;s("received response: statusCode: %s, computed statusCode: %d, headers: %j",t.statusCode,e,t.headers);var n=2===Math.floor(e/100),o=new Date;if(g.push({currentHost:T,headers:a(i),content:r||null,contentLength:void 0!==r?r.length:null,method:c.method,timeouts:c.timeouts,url:c.url,startTime:x,endTime:o,duration:o-x,statusCode:e}),n)return f._useCache&
 &h&&(h[_]=t.responseText),t.body;var l=4!==Math.floor(e/100);if(l)return d+=1,b();s("unrecoverable error");var p=new u.AlgoliaSearchError(t.body&&t.body.message,{debugData:g,statusCode:e});return f._promise.reject(p)}function v(e){s("error: %s, stack: %s",e.message,e.stack);var n=new Date;return g.push({currentHost:T,headers:a(i),content:r||null,contentLength:void 0!==r?r.length:null,method:c.method,timeouts:c.timeouts,url:c.url,startTime:x,endTime:n,duration:n-x}),e instanceof u.AlgoliaSearchError||(e=new u.Unknown(e&&e.message,e)),d+=1,e instanceof u.Unknown||e instanceof u.UnparsableJSON||d>=f.hosts[t.hostType].length&&(m||!y)?(e.debugData=g,f._promise.reject(e)):e instanceof u.RequestTimeout?w():b()}function b(){return s("retrying request"),f._incrementHostIndex(t.hostType),e(n,c)}function w(){return s("retrying request with higher timeout"),f._incrementHostIndex(t.hostType),f._incrementTimeoutMultipler(),c.timeouts=f._getTimeoutsForRequest(t.hostType),e(n,c)}f._checkAppIdData()
 ;var _,x=new Date;if(f._useCache&&(_=t.url),f._useCache&&r&&(_+="_body_"+c.body),f._useCache&&h&&void 0!==h[_])return s("serving response from cache"),f._promise.resolve(JSON.parse(h[_]));if(d>=f.hosts[t.hostType].length)return!y||m?(s("could not get any response"),f._promise.reject(new u.AlgoliaSearchError("Cannot connect to the AlgoliaSearch API. Send an email to support@algolia.com to report and resolve the issue. Application id was: "+f.applicationID,{debugData:g}))):(s("switching to fallback"),d=0,c.method=t.fallback.method,c.url=t.fallback.url,c.jsonBody=t.fallback.body,c.jsonBody&&(c.body=o(c.jsonBody)),i=f._computeRequestHeaders(l),c.timeouts=f._getTimeoutsForRequest(t.hostType),f._setHostIndexByType(0,t.hostType),m=!0,e(f._request.fallback,c));var T=f._getHostByType(t.hostType),S=T+c.url,C={body:c.body,jsonBody:c.jsonBody,method:c.method,headers:i,timeouts:c.timeouts,debug:s};return s("method: %s, url: %s, headers: %j, timeouts: %d",C.method,S,C.headers,C.timeouts),n===f._r
 equest.fallback&&s("using fallback"),n.call(f,S,C).then(p,v)}this._checkAppIdData();var r,i,s=n(29)("algoliasearch:"+t.url),l=t.additionalUA||"",h=t.cache,f=this,d=0,m=!1,y=f._useFallback&&f._request.fallback&&t.fallback;this.apiKey.length>p&&void 0!==t.body&&(void 0!==t.body.params||void 0!==t.body.requests)?(t.body.apiKey=this.apiKey,i=this._computeRequestHeaders(l,!1)):i=this._computeRequestHeaders(l),void 0!==t.body&&(r=o(t.body)),s("request start");var g=[],v=e(f._request,{url:t.url,method:t.method,body:r,jsonBody:t.body,timeouts:f._getTimeoutsForRequest(t.hostType)});return t.callback?void v.then(function(e){c(function(){t.callback(null,e)},f._setTimeout||setTimeout)},function(e){c(function(){t.callback(e)},f._setTimeout||setTimeout)}):v},r.prototype._getSearchParams=function(t,e){if(void 0===t||null===t)return e;for(var n in t)null!==n&&void 0!==t[n]&&t.hasOwnProperty(n)&&(e+=""===e?"":"&",e+=n+"="+encodeURIComponent("[object Array]"===Object.prototype.toString.call(t[n])?o(t
 [n]):t[n]));return e},r.prototype._computeRequestHeaders=function(t,e){var r=n(14),i=t?this._ua+";"+t:this._ua,o={"x-algolia-agent":i,"x-algolia-application-id":this.applicationID};return e!==!1&&(o["x-algolia-api-key"]=this.apiKey),this.userToken&&(o["x-algolia-usertoken"]=this.userToken),this.securityTags&&(o["x-algolia-tagfilters"]=this.securityTags),this.extraHeaders&&r(this.extraHeaders,function(t){o[t.name]=t.value}),o},r.prototype.search=function(t,e,r){var i=n(22),o=n(23),s="Usage: client.search(arrayOfQueries[, callback])";if(!i(t))throw new Error(s);"function"==typeof e?(r=e,e={}):void 0===e&&(e={});var a=this,u={requests:o(t,function(t){var e="";return void 0!==t.query&&(e+="query="+encodeURIComponent(t.query)),{indexName:t.indexName,params:a._getSearchParams(t.params,e)}})},c=o(u.requests,function(t,e){return e+"="+encodeURIComponent("/1/indexes/"+encodeURIComponent(t.indexName)+"?"+t.params)}).join("&"),l="/1/indexes/*/queries";return void 0!==e.strategy&&(l+="?strategy
 ="+e.strategy),this._jsonRequest({cache:this.cache,method:"POST",url:l,body:u,hostType:"read",fallback:{method:"GET",url:"/1/indexes/*",body:{params:c}},callback:r})},r.prototype.setSecurityTags=function(t){if("[object Array]"===Object.prototype.toString.call(t)){for(var e=[],n=0;n<t.length;++n)if("[object Array]"===Object.prototype.toString.call(t[n])){for(var r=[],i=0;i<t[n].length;++i)r.push(t[n][i]);e.push("("+r.join(",")+")")}else e.push(t[n]);t=e.join(",")}this.securityTags=t},r.prototype.setUserToken=function(t){this.userToken=t},r.prototype.clearCache=function(){this.cache={}},r.prototype.setRequestTimeout=function(t){t&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=t)},r.prototype.setTimeouts=function(t){this._timeouts=t},r.prototype.getTimeouts=function(){return this._timeouts},r.prototype._getAppIdData=function(){var t=h.get(this.applicationID);return null!==t&&this._cacheAppIdData(t),t},r.prototype._setAppIdData=function(t){return t.lastChange=(new Dat
 e).getTime(),this._cacheAppIdData(t),h.set(this.applicationID,t)},r.prototype._checkAppIdData=function(){var t=this._getAppIdData(),e=(new Date).getTime();return null===t||e-t.lastChange>f?this._resetInitialAppIdData(t):t},r.prototype._resetInitialAppIdData=function(t){var e=t||{};return e.hostIndexes={read:0,write:0},e.timeoutMultiplier=1,e.shuffleResult=e.shuffleResult||s([1,2,3]),this._setAppIdData(e)},r.prototype._cacheAppIdData=function(t){this._hostIndexes=t.hostIndexes,this._timeoutMultiplier=t.timeoutMultiplier,this._shuffleResult=t.shuffleResult},r.prototype._partialAppIdDataUpdate=function(t){var e=n(14),r=this._getAppIdData();return e(t,function(t,e){r[e]=t}),this._setAppIdData(r)},r.prototype._getHostByType=function(t){return this.hosts[t][this._getHostIndexByType(t)]},r.prototype._getTimeoutMultiplier=function(){return this._timeoutMultiplier},r.prototype._getHostIndexByType=function(t){return this._hostIndexes[t]},r.prototype._setHostIndexByType=function(t,e){var r=n(1
 8),i=r(this._hostIndexes);return i[e]=t,this._partialAppIdDataUpdate({hostIndexes:i}),t},r.prototype._incrementHostIndex=function(t){return this._setHostIndexByType((this._getHostIndexByType(t)+1)%this.hosts[t].length,t)},r.prototype._incrementTimeoutMultipler=function(){var t=Math.max(this._timeoutMultiplier+1,4);return this._partialAppIdDataUpdate({timeoutMultiplier:t})},r.prototype._getTimeoutsForRequest=function(t){return{connect:this._timeouts.connect*this._timeoutMultiplier,complete:this._timeouts[t]*this._timeoutMultiplier}}},function(t,e,n){(function(e){function r(t,e){return u("localStorage failed with",e),s(),a=l,a.get(t)}function i(t,e){return 1===arguments.length?a.get(t):a.set(t,e)}function o(){try{return"localStorage"in e&&null!==e.localStorage&&(e.localStorage[c]||e.localStorage.setItem(c,JSON.stringify({})),!0)}catch(t){return!1}}function s(){try{e.localStorage.removeItem(c)}catch(t){}}var a,u=n(29)("algoliasearch:src/hostIndexState.js"),c="algoliasearch-client-js",l
 ={state:{},set:function(t,e){return this.state[t]=e,this.state[t]},get:function(t){return this.state[t]||null}},h={set:function(t,n){l.set(t,n);try{var i=JSON.parse(e.localStorage[c]);return i[t]=n,e.localStorage[c]=JSON.stringify(i),i[t]}catch(e){return r(t,e)}},get:function(t){try{return JSON.parse(e.localStorage[c])[t]||null}catch(e){return r(t,e)}}};a=o()?h:l,t.exports={get:i,set:i,supportsLocalStorage:o}}).call(e,function(){return this}())},function(t,e,n){(function(r){function i(){return"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function o(){var t=arguments,n=this.useColors;if(t[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+t[0]+(n?"%c ":" ")+"+"+e.humanize(this.diff),!n)return t;var r="color: "+this.color;t=[t[0],r,"color: inherit"].concat(Array.prototype.slice.call(t,1));var i=0,o=0;re
 turn t[0].replace(/%[a-z%]/g,function(t){"%%"!==t&&(i++,"%c"===t&&(o=i))}),t.splice(o,0,r),t}function s(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function a(t){try{null==t?e.storage.removeItem("debug"):e.storage.debug=t}catch(t){}}function u(){try{return e.storage.debug}catch(t){}if("undefined"!=typeof r&&"env"in r)return{NODE_ENV:"production"}.DEBUG}function c(){try{return window.localStorage}catch(t){}}e=t.exports=n(31),e.log=s,e.formatArgs=o,e.save=a,e.load=u,e.useColors=i,e.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:c(),e.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],e.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},e.enable(u())}).call(e,n(30))},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeo
 ut has not been defined")}function i(t){if(l===setTimeout)return setTimeout(t,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(t,0);try{return l(t,0)}catch(e){try{return l.call(null,t,0)}catch(e){return l.call(this,t,0)}}}function o(t){if(h===clearTimeout)return clearTimeout(t);if((h===r||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(t);try{return h(t)}catch(e){try{return h.call(null,t)}catch(e){return h.call(this,t)}}}function s(){m&&f&&(m=!1,f.length?d=f.concat(d):y=-1,d.length&&a())}function a(){if(!m){var t=i(s);m=!0;for(var e=d.length;e;){for(f=d,d=[];++y<e;)f&&f[y].run();y=-1,e=d.length}f=null,m=!1,o(t)}}function u(t,e){this.fun=t,this.array=e}function c(){}var l,h,p=t.exports={};!function(){try{l="function"==typeof setTimeout?setTimeout:n}catch(t){l=n}try{h="function"==typeof clearTimeout?clearTimeout:r}catch(t){h=r}}();var f,d=[],m=!1,y=-1;p.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[
 n-1]=arguments[n];d.push(new u(t,e)),1!==d.length||m||i(a)},u.prototype.run=function(){this.fun.apply(null,this.array)},p.title="browser",p.browser=!0,p.env={},p.argv=[],p.version="",p.versions={},p.on=c,p.addListener=c,p.once=c,p.off=c,p.removeListener=c,p.removeAllListeners=c,p.emit=c,p.binding=function(t){throw new Error("process.binding is not supported")},p.cwd=function(){return"/"},p.chdir=function(t){throw new Error("process.chdir is not supported")},p.umask=function(){return 0}},function(t,e,n){function r(){return e.colors[l++%e.colors.length]}function i(t){function n(){}function i(){var t=i,n=+new Date,o=n-(c||n);t.diff=o,t.prev=c,t.curr=n,c=n,null==t.useColors&&(t.useColors=e.useColors()),null==t.color&&t.useColors&&(t.color=r());for(var s=new Array(arguments.length),a=0;a<s.length;a++)s[a]=arguments[a];s[0]=e.coerce(s[0]),"string"!=typeof s[0]&&(s=["%o"].concat(s));var u=0;s[0]=s[0].replace(/%([a-z%])/g,function(n,r){if("%%"===n)return n;u++;var i=e.formatters[r];if("func
 tion"==typeof i){var o=s[u];n=i.call(t,o),s.splice(u,1),u--}return n}),s=e.formatArgs.apply(t,s);var l=i.log||e.log||console.log.bind(console);l.apply(t,s)}n.enabled=!1,i.enabled=!0;var o=e.enabled(t)?i:n;return o.namespace=t,o}function o(t){e.save(t);for(var n=(t||"").split(/[\s,]+/),r=n.length,i=0;i<r;i++)n[i]&&(t=n[i].replace(/[\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*?"),"-"===t[0]?e.skips.push(new RegExp("^"+t.substr(1)+"$")):e.names.push(new RegExp("^"+t+"$")))}function s(){e.enable("")}function a(t){var n,r;for(n=0,r=e.skips.length;n<r;n++)if(e.skips[n].test(t))return!1;for(n=0,r=e.names.length;n<r;n++)if(e.names[n].test(t))return!0;return!1}function u(t){return t instanceof Error?t.stack||t.message:t}e=t.exports=i.debug=i,e.coerce=u,e.disable=s,e.enable=o,e.enabled=a,e.humanize=n(32),e.names=[],e.skips=[],e.formatters={};var c,l=0},function(t,e){function n(t){if(t=String(t),!(t.length>1e4)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?
 |m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),r=(e[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*l;case"days":case"day":case"d":return n*c;case"hours":case"hour":case"hrs":case"hr":case"h":return n*u;case"minutes":case"minute":case"mins":case"min":case"m":return n*a;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function r(t){return t>=c?Math.round(t/c)+"d":t>=u?Math.round(t/u)+"h":t>=a?Math.round(t/a)+"m":t>=s?Math.round(t/s)+"s":t+"ms"}function i(t){return o(t,c,"day")||o(t,u,"hour")||o(t,a,"minute")||o(t,s,"second")||t+" ms"}function o(t,e,n){if(!(t<e))return t<1.5*e?Math.floor(t/e)+" "+n:Math.ceil(t/e)+" "+n+"s"}var s=1e3,a=60*s,u=60*a,c=24*u,l=365.25*c;t.exports=function(t,e){e=e||{};var o=typeof t;if("string"===o&&t.length>0)return n(t);if("number"===o&&isNaN(t)===!1)return e.long?i
 (t):r(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,e,n){"use strict";var r=n(34),i=r.Promise||n(35).Promise;t.exports=function(t,e){function o(t,e,r){var i=n(18),a=n(41);return r=i(r||{}),void 0===r.protocol&&(r.protocol=a()),r._ua=r._ua||o.ua,new s(t,e,r)}function s(){t.apply(this,arguments)}var a=n(10),u=n(13),c=n(37),l=n(39),h=n(40);e=e||"",o.version=n(42),o.ua="Algolia for vanilla JavaScript "+e+o.version,o.initPlaces=h(o),r.__algolia={debug:n(29),algoliasearch:o};var p={hasXMLHttpRequest:"XMLHttpRequest"in r,hasXDomainRequest:"XDomainRequest"in r};return p.hasXMLHttpRequest&&(p.cors="withCredentials"in new XMLHttpRequest),a(s,t),s.prototype._request=function(t,e){return new i(function(n,r){function i(){if(!d){clearTimeout(f);var t;try{t={body:JSON.parse(y.responseText),responseText:y.responseText,statusCode:y.status,headers:y.getAllResponseHeaders&&y.getAllResponseHeaders()||{}}}catch(e){t=new u.UnparsableJSON({more:
 y.responseText})}t instanceof u.UnparsableJSON?r(t):n(t)}}function o(t){d||(clearTimeout(f),r(new u.Network({more:t})))}function s(){d=!0,y.abort(),r(new u.RequestTimeout)}function a(){g=!0,clearTimeout(f),f=setTimeout(s,e.timeouts.complete)}function l(){g||a()}function h(){!g&&y.readyState>1&&a()}if(!p.cors&&!p.hasXDomainRequest)return void r(new u.Network("CORS not supported"));t=c(t,e.headers);var f,d,m=e.body,y=p.cors?new XMLHttpRequest:new XDomainRequest,g=!1;f=setTimeout(s,e.timeouts.connect),y.onprogress=l,"onreadystatechange"in y&&(y.onreadystatechange=h),y.onload=i,y.onerror=o,y instanceof XMLHttpRequest?y.open(e.method,t,!0):y.open(e.method,t),p.cors&&(m&&("POST"===e.method?y.setRequestHeader("content-type","application/x-www-form-urlencoded"):y.setRequestHeader("content-type","application/json")),y.setRequestHeader("accept","application/json")),y.send(m)})},s.prototype._request.fallback=function(t,e){return t=c(t,e.headers),new i(function(n,r){l(t,e,function(t,e){return t
 ?void r(t):void n(e)})})},s.prototype._promise={reject:function(t){return i.reject(t)},resolve:function(t){return i.resolve(t)},delay:function(t){return new i(function(e){setTimeout(e,t)})}},o}},function(t,e){(function(e){"undefined"!=typeof window?t.exports=window:"undefined"!=typeof e?t.exports=e:"undefined"!=typeof self?t.exports=self:t.exports={}}).call(e,function(){return this}())},function(t,e,n){(function(e,r){!function(e,n){t.exports=n()}(this,function(){"use strict";function t(t){return"function"==typeof t||"object"==typeof t&&null!==t}function i(t){return"function"==typeof t}function o(t){Z=t}function s(t){G=t}function a(){return function(){return e.nextTick(p)}}function u(){return"undefined"!=typeof Q?function(){Q(p)}:h()}function c(){var t=0,e=new Y(p),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function l(){var t=new MessageChannel;return t.port1.onmessage=p,function(){return t.port2.postMessage(0)}}function h(){var t=
 setTimeout;return function(){return t(p,1)}}function p(){for(var t=0;t<z;t+=2){var e=nt[t],n=nt[t+1];e(n),nt[t]=void 0,nt[t+1]=void 0}z=0}function f(){try{var t=n(36);return Q=t.runOnLoop||t.runOnContext,u()}catch(t){return h()}}function d(t,e){var n=arguments,r=this,i=new this.constructor(y);void 0===i[it]&&D(i);var o=r._state;return o?!function(){var t=n[o-1];G(function(){return N(o,i,t,r._result)})}():A(r,i,t,e),i}function m(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(y);return S(n,t),n}function y(){}function g(){return new TypeError("You cannot resolve a promise with itself")}function v(){return new TypeError("A promises callback cannot return that same promise.")}function b(t){try{return t.then}catch(t){return ut.error=t,ut}}function w(t,e,n,r){try{t.call(e,n,r)}catch(t){return t}}function _(t,e,n){G(function(t){var r=!1,i=w(n,e,function(n){r||(r=!0,e!==n?S(t,n):E(t,n))},function(e){r||(r=!0,O(t,e))},"Settle: "+(t._label||" unknown promise"));
 !r&&i&&(r=!0,O(t,i))},t)}function x(t,e){e._state===st?E(t,e._result):e._state===at?O(t,e._result):A(e,void 0,function(e){return S(t,e)},function(e){return O(t,e)})}function T(t,e,n){e.constructor===t.constructor&&n===d&&e.constructor.resolve===m?x(t,e):n===ut?O(t,ut.error):void 0===n?E(t,e):i(n)?_(t,e,n):E(t,e)}function S(e,n){e===n?O(e,g()):t(n)?T(e,n,b(n)):E(e,n)}function C(t){t._onerror&&t._onerror(t._result),k(t)}function E(t,e){t._state===ot&&(t._result=e,t._state=st,0!==t._subscribers.length&&G(k,t))}function O(t,e){t._state===ot&&(t._state=at,t._result=e,G(C,t))}function A(t,e,n,r){var i=t._subscribers,o=i.length;t._onerror=null,i[o]=e,i[o+st]=n,i[o+at]=r,0===o&&t._state&&G(k,t)}function k(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,i=void 0,o=t._result,s=0;s<e.length;s+=3)r=e[s],i=e[s+n],r?N(n,r,i,o):i(o);t._subscribers.length=0}}function j(){this.error=null}function I(t,e){try{return t(e)}catch(t){return ct.error=t,ct}}function N(t,e,n,r){var o=i(n
 ),s=void 0,a=void 0,u=void 0,c=void 0;if(o){if(s=I(n,r),s===ct?(c=!0,a=s.error,s=null):u=!0,e===s)return void O(e,v())}else s=r,u=!0;e._state!==ot||(o&&u?S(e,s):c?O(e,a):t===st?E(e,s):t===at&&O(e,s))}function R(t,e){try{e(function(e){S(t,e)},function(e){O(t,e)})}catch(e){O(t,e)}}function P(){return lt++}function D(t){t[it]=lt++,t._state=void 0,t._result=void 0,t._subscribers=[]}function q(t,e){this._instanceConstructor=t,this.promise=new t(y),this.promise[it]||D(this.promise),J(e)?(this._input=e,this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?E(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&E(this.promise,this._result))):O(this.promise,$())}function $(){return new Error("Array Methods must be provided an Array")}function U(t){return new q(this,t).promise}function L(t){var e=this;return new e(J(t)?function(n,r){for(var i=t.length,o=0;o<i;o++)e.resolve(t[o]).then(n,r)}:function(t,e){return
  e(new TypeError("You must pass an array to race."))})}function H(t){var e=this,n=new e(y);return O(n,t),n}function M(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function F(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function B(t){this[it]=P(),this._result=this._state=void 0,this._subscribers=[],y!==t&&("function"!=typeof t&&M(),this instanceof B?R(this,t):F())}function V(){var t=void 0;if("undefined"!=typeof r)t=r;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var e=t.Promise;if(e){var n=null;try{n=Object.prototype.toString.call(e.resolve())}catch(t){}if("[object Promise]"===n&&!e.cast)return}t.Promise=B}var K=void 0;K=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.pro
 totype.toString.call(t)};var J=K,z=0,Q=void 0,Z=void 0,G=function(t,e){nt[z]=t,nt[z+1]=e,z+=2,2===z&&(Z?Z(p):rt())},X="undefined"!=typeof window?window:void 0,W=X||{},Y=W.MutationObserver||W.WebKitMutationObserver,tt="undefined"==typeof self&&"undefined"!=typeof e&&"[object process]"==={}.toString.call(e),et="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,nt=new Array(1e3),rt=void 0;rt=tt?a():Y?c():et?l():void 0===X?f():h();var it=Math.random().toString(36).substring(16),ot=void 0,st=1,at=2,ut=new j,ct=new j,lt=0;return q.prototype._enumerate=function(){for(var t=this.length,e=this._input,n=0;this._state===ot&&n<t;n++)this._eachEntry(e[n],n)},q.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===m){var i=b(t);if(i===d&&t._state!==ot)this._settledAt(t._state,e,t._result);else if("function"!=typeof i)this._remaining--,this._result[e]=t;else if(n===B){var o=new n(y);T(o,t,i),this._willSettleA
 t(o,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e);
+},q.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===ot&&(this._remaining--,t===at?O(r,n):this._result[e]=n),0===this._remaining&&E(r,this._result)},q.prototype._willSettleAt=function(t,e){var n=this;A(t,void 0,function(t){return n._settledAt(st,e,t)},function(t){return n._settledAt(at,e,t)})},B.all=U,B.race=L,B.resolve=m,B.reject=H,B._setScheduler=o,B._setAsap=s,B._asap=G,B.prototype={constructor:B,then:d,catch:function(t){return this.then(null,t)}},B.polyfill=V,B.Promise=B,B})}).call(e,n(30),function(){return this}())},function(t,e){},function(t,e,n){"use strict";function r(t,e){return t+=/\?/.test(t)?"&":"?",t+i(e)}t.exports=r;var i=n(38)},function(t,e){"use strict";function n(t,e){if(t.map)return t.map(e);for(var n=[],r=0;r<t.length;r++)n.push(e(t[r],r));return n}var r=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,s,a){return e=e||"&",s=s||"
 =",null===t&&(t=void 0),"object"==typeof t?n(o(t),function(o){var a=encodeURIComponent(r(o))+s;return i(t[o])?n(t[o],function(t){return a+encodeURIComponent(r(t))}).join(e):a+encodeURIComponent(r(t[o]))}).join(e):a?encodeURIComponent(r(a))+s+encodeURIComponent(r(t)):""};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},o=Object.keys||function(t){var e=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.push(n);return e}},function(t,e,n){"use strict";function r(t,e,n){function r(){e.debug("JSONP: success"),y||p||(y=!0,h||(e.debug("JSONP: Fail. Script loaded but did not call the callback"),a(),n(new i.JSONPScriptFail)))}function s(){"loaded"!==this.readyState&&"complete"!==this.readyState||r()}function a(){clearTimeout(g),d.onload=null,d.onreadystatechange=null,d.onerror=null,f.removeChild(d)}function u(){try{delete window[m],delete window[m+"_loaded"]}catch(t){window[m]=window[m+"_loaded"]=void 0}}function c(){e.debug("JSONP: Scri
 pt timeout"),p=!0,a(),n(new i.RequestTimeout)}function l(){e.debug("JSONP: Script error"),y||p||(a(),n(new i.JSONPScriptError))}if("GET"!==e.method)return void n(new Error("Method "+e.method+" "+t+" is not supported by JSONP."));e.debug("JSONP: start");var h=!1,p=!1;o+=1;var f=document.getElementsByTagName("head")[0],d=document.createElement("script"),m="algoliaJSONP_"+o,y=!1;window[m]=function(t){return u(),p?void e.debug("JSONP: Late answer, ignoring"):(h=!0,a(),void n(null,{body:t}))},t+="&callback="+m,e.jsonBody&&e.jsonBody.params&&(t+="&"+e.jsonBody.params);var g=setTimeout(c,e.timeouts.complete);d.onreadystatechange=s,d.onload=r,d.onerror=l,d.async=!0,d.defer=!0,d.src=t,f.appendChild(d)}t.exports=r;var i=n(13),o=0},function(t,e,n){function r(t){return function(e,r,o){var s=n(18);o=o&&s(o)||{},o.hosts=o.hosts||["places-dsn.algolia.net","places-1.algolianet.com","places-2.algolianet.com","places-3.algolianet.com"],0!==arguments.length&&"object"!=typeof e&&void 0!==e||(e="",r="",
 o._allowEmptyCredentials=!0);var a=t(e,r,o),u=a.initIndex("places");return u.search=i("query","/1/places/query"),u}}t.exports=r;var i=n(12)},function(t,e){"use strict";function n(){var t=window.document.location.protocol;return"http:"!==t&&"https:"!==t&&(t="http:"),t}t.exports=n},function(t,e){"use strict";t.exports="3.21.0"},function(t,e,n){"use strict";t.exports=n(44)},function(t,e,n){"use strict";function r(t,e,n,r){n=s.isArray(n)?n:[].slice.call(arguments,2);var o=i(t).each(function(t,o){var s=i(o),l=new c({el:s}),h=r||new u({input:s,eventBus:l,dropdownMenuContainer:e.dropdownMenuContainer,hint:void 0===e.hint||!!e.hint,minLength:e.minLength,autoselect:e.autoselect,autoselectOnBlur:e.autoselectOnBlur,openOnFocus:e.openOnFocus,templates:e.templates,debug:e.debug,cssClasses:e.cssClasses,datasets:n,keyboardShortcuts:e.keyboardShortcuts,appendTo:e.appendTo});s.data(a,h)});return o.autocomplete={},s.each(["open","close","getVal","setVal","destroy"],function(t){o.autocomplete[t]=funct
 ion(){var e,n=arguments;return o.each(function(r,o){var s=i(o).data(a);e=s[t].apply(s,n)}),e}}),o}var i=n(45),o=n(46);o.element=i;var s=n(47);s.isArray=i.isArray,s.isFunction=i.isFunction,s.isObject=i.isPlainObject,s.bind=i.proxy,s.each=function(t,e){function n(t,n){return e(n,t)}i.each(t,n)},s.map=i.map,s.mixin=i.extend,s.Event=i.Event;var a="aaAutocomplete",u=n(48),c=n(49);r.sources=u.sources;var l="autocomplete"in window,h=window.autocomplete;r.noConflict=function(){return l?window.autocomplete=h:delete window.autocomplete,r},t.exports=r},function(t,e){!function(e,n){t.exports=n(e)}(window,function(t){var e=function(){function e(t){return null==t?String(t):Z[G.call(t)]||"object"}function n(t){return"function"==e(t)}function r(t){return null!=t&&t==t.window}function i(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function o(t){return"object"==e(t)}function s(t){return o(t)&&!r(t)&&Object.getPrototypeOf(t)==Object.prototype}function a(t){var e=!!t&&"length"in t&&t.length,n=C.type(
 t);return"function"!=n&&!r(t)&&("array"==n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function u(t){return I.call(t,function(t){return null!=t})}function c(t){return t.length>0?C.fn.concat.apply([],t):t}function l(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function h(t){return t in D?D[t]:D[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function p(t,e){return"number"!=typeof e||q[l(t)]?e:e+"px"}function f(t){var e,n;return P[t]||(e=R.createElement(t),R.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),P[t]=n),P[t]}function d(t){return"children"in t?N.call(t.children):C.map(t.childNodes,function(t){if(1==t.nodeType)return t})}function m(t,e){var n,r=t?t.length:0;for(n=0;n<r;n++)this[n]=t[n];this.length=r,this.selector=e||""}function y(t,e,n){for(S in e)n&&(s(e[S])||tt(e[S]))?(s(e[S])&&!s(t[S])&&(t[S]={}),tt(e[S])&&!tt(t[S])&
 &(t[S]=[]),y(t[S],e[S],n)):e[S]!==T&&(t[S]=e[S])}function g(t,e){return null==e?C(t):C(t).filter(e)}function v(t,e,r,i){return n(e)?e.call(t,r,i):e}function b(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function w(t,e){var n=t.className||"",r=n&&n.baseVal!==T;return e===T?r?n.baseVal:n:void(r?n.baseVal=e:t.className=e)}function _(t){try{return t?"true"==t||"false"!=t&&("null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?C.parseJSON(t):t):t}catch(e){return t}}function x(t,e){e(t);for(var n=0,r=t.childNodes.length;n<r;n++)x(t.childNodes[n],e)}var T,S,C,E,O,A,k=[],j=k.concat,I=k.filter,N=k.slice,R=t.document,P={},D={},q={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},$=/^\s*<(\w+|!)[^>]*>/,U=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,L=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,H=/^(?:body|html)$/i,M=/([A-Z])/g,F=["val","css","html","text","data","width","height","offset"],B=["after","prepend","before","append"],V=R.create
 Element("table"),K=R.createElement("tr"),J={tr:R.createElement("tbody"),tbody:V,thead:V,tfoot:V,td:K,th:K,"*":R.createElement("div")},z=/complete|loaded|interactive/,Q=/^[\w-]*$/,Z={},G=Z.toString,X={},W=R.createElement("div"),Y={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},tt=Array.isArray||function(t){return t instanceof Array};return X.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=W).appendChild(t),r=~X.qsa(i,e).indexOf(t),o&&W.removeChild(t),r},O=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},A=function(t){return I.call(t,function(e,n){return t.indexOf(e)==n})
 },X.fragment=function(t,e,n){var r,i,o;return U.test(t)&&(r=C(R.createElement(RegExp.$1))),r||(t.replace&&(t=t.replace(L,"<$1></$2>")),e===T&&(e=$.test(t)&&RegExp.$1),e in J||(e="*"),o=J[e],o.innerHTML=""+t,r=C.each(N.call(o.childNodes),function(){o.removeChild(this)})),s(n)&&(i=C(r),C.each(n,function(t,e){F.indexOf(t)>-1?i[t](e):i.attr(t,e)})),r},X.Z=function(t,e){return new m(t,e)},X.isZ=function(t){return t instanceof X.Z},X.init=function(t,e){var r;if(!t)return X.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&$.test(t))r=X.fragment(t,RegExp.$1,e),t=null;else{if(e!==T)return C(e).find(t);r=X.qsa(R,t)}else{if(n(t))return C(R).ready(t);if(X.isZ(t))return t;if(tt(t))r=u(t);else if(o(t))r=[t],t=null;else if($.test(t))r=X.fragment(t.trim(),RegExp.$1,e),t=null;else{if(e!==T)return C(e).find(t);r=X.qsa(R,t)}}return X.Z(r,t)},C=function(t,e){return X.init(t,e)},C.extend=function(t){var e,n=N.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){y(t,n,e)
 }),t},X.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,s=Q.test(o);return t.getElementById&&s&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:N.call(s&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},C.contains=R.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},C.type=e,C.isFunction=n,C.isWindow=r,C.isArray=tt,C.isPlainObject=s,C.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},C.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},C.inArray=function(t,e,n){return k.indexOf.call(e,t,n)},C.camelCase=O,C.trim=function(t){return null==t?"":String.prototype.trim.call(t)},C.uuid=0,C.support={},C.expr={},C.noop=function(){},C.map=function(t,e){var n,r,i,o=[];if(a(t))for(r=0;r<t.length;r++)n=e
 (t[r],r),null!=n&&o.push(n);else for(i in t)n=e(t[i],i),null!=n&&o.push(n);return c(o)},C.each=function(t,e){var n,r;if(a(t)){for(n=0;n<t.length;n++)if(e.call(t[n],n,t[n])===!1)return t}else for(r in t)if(e.call(t[r],r,t[r])===!1)return t;return t},C.grep=function(t,e){return I.call(t,e)},t.JSON&&(C.parseJSON=JSON.parse),C.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(t,e){Z["[object "+e+"]"]=e.toLowerCase()}),C.fn={constructor:X.Z,length:0,forEach:k.forEach,reduce:k.reduce,push:k.push,sort:k.sort,splice:k.splice,indexOf:k.indexOf,concat:function(){var t,e,n=[];for(t=0;t<arguments.length;t++)e=arguments[t],n[t]=X.isZ(e)?e.toArray():e;return j.apply(X.isZ(this)?this.toArray():this,n)},map:function(t){return C(C.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return C(N.apply(this,arguments))},ready:function(t){return z.test(R.readyState)&&R.body?t(C):R.addEventListener("DOMContentLoaded",function(){t(C)},!1),this},get:functi
 on(t){return t===T?N.call(this):this[t>=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return k.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return n(t)?this.not(this.not(t)):C(I.call(this,function(e){return X.matches(e,t)}))},add:function(t,e){return C(A(this.concat(C(t,e))))},is:function(t){return this.length>0&&X.matches(this[0],t)},not:function(t){var e=[];if(n(t)&&t.call!==T)this.each(function(n){t.call(this,n)||e.push(this)});else{var r="string"==typeof t?this.filter(t):a(t)&&n(t.item)?N.call(t):C(t);this.forEach(function(t){r.indexOf(t)<0&&e.push(t)})}return C(e)},has:function(t){return this.filter(function(){return o(t)?C.contains(this,t):C(this).find(t).size()})},eq:function(t){return t===-1?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!o(t
 )?t:C(t)},last:function(){var t=this[this.length-1];return t&&!o(t)?t:C(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?C(t).filter(function(){var t=this;return k.some.call(n,function(e){return C.contains(e,t)})}):1==this.length?C(X.qsa(this[0],t)):this.map(function(){return X.qsa(this,t)}):C()},closest:function(t,e){var n=[],r="object"==typeof t&&C(t);return this.each(function(o,s){for(;s&&!(r?r.indexOf(s)>=0:X.matches(s,t));)s=s!==e&&!i(s)&&s.parentNode;s&&n.indexOf(s)<0&&n.push(s)}),C(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=C.map(n,function(t){if((t=t.parentNode)&&!i(t)&&e.indexOf(t)<0)return e.push(t),t});return g(e,t)},parent:function(t){return g(A(this.pluck("parentNode")),t)},children:function(t){return g(this.map(function(){return d(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||N.call(this.childNodes)})},siblings:function(t){return g(this.map(function(t,e){return I.call(d(e.parentNode),function(t){re
 turn t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return C.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=f(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=n(t);if(this[0]&&!e)var r=C(t).get(0),i=r.parentNode||this.length>1;return this.each(function(n){C(this).wrapAll(e?t.call(this,n):i?r.cloneNode(!0):r)})},wrapAll:function(t){if(this[0]){C(this[0]).before(t=C(t));for(var e;(e=t.children()).length;)t=e.first();C(t).append(this)}return this},wrapInner:function(t){var e=n(t);return this.each(function(n){var r=C(this),i=r.contents(),o=e?t.call(this,n):t;i.length?i.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){C(this).replaceWith(C(this).children())}),this},clone:function(){return this
 .map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var e=C(this);(t===T?"none"==e.css("display"):t)?e.show():e.hide()})},prev:function(t){return C(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return C(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;C(this).empty().append(v(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=v(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,e){var n;return"string"!=typeof t||1 in arguments?this.each(function(n){if(1===this.nodeType)if(o(t))for(S in t)b(this,S,t[S]);else b(this,t,v(this,e,n,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(n=this[0].getAttribute(t))?n:T},removeAttr:function(t){ret
 urn this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){b(this,t)},this)})},prop:function(t,e){return t=Y[t]||t,1 in arguments?this.each(function(n){this[t]=v(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=Y[t]||t,this.each(function(){delete this[t]})},data:function(t,e){var n="data-"+t.replace(M,"-$1").toLowerCase(),r=1 in arguments?this.attr(n,e):this.attr(n);return null!==r?_(r):T},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=v(this,t,e,this.value)})):this[0]&&(this[0].multiple?C(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each(function(t){var n=C(this),r=v(this,e,t,n.offset()),i=n.offsetParent().offset(),o={top:r.top-i.top,left:r.left-i.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)});if(!this.length)return null;if(R.documentElement!==this[0]&&!C.contains(R.documentElement,this[0]))r
 eturn{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,n){if(arguments.length<2){var r=this[0];if("string"==typeof t){if(!r)return;return r.style[O(t)]||getComputedStyle(r,"").getPropertyValue(t)}if(tt(t)){if(!r)return;var i={},o=getComputedStyle(r,"");return C.each(t,function(t,e){i[e]=r.style[O(e)]||o.getPropertyValue(e)}),i}}var s="";if("string"==e(t))n||0===n?s=l(t)+":"+p(t,n):this.each(function(){this.style.removeProperty(l(t))});else for(S in t)t[S]||0===t[S]?s+=l(S)+":"+p(S,t[S])+";":this.each(function(){this.style.removeProperty(l(S))});return this.each(function(){this.style.cssText+=";"+s})},index:function(t){return t?this.indexOf(C(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&k.some.call(this,function(t){return this.test(w(t))},h(t))},addClass:function(t){return t?this.each(function(e){if("className"in this)
 {E=[];var n=w(this),r=v(this,t,e,n);r.split(/\s+/g).forEach(function(t){C(this).hasClass(t)||E.push(t)},this),E.length&&w(this,n+(n?" ":"")+E.join(" "))}}):this},removeClass:function(t){return this.each(function(e){if("className"in this){if(t===T)return w(this,"");E=w(this),v(this,t,e,E).split(/\s+/g).forEach(function(t){E=E.replace(h(t)," ")}),w(this,E.trim())}})},toggleClass:function(t,e){return t?this.each(function(n){var r=C(this),i=v(this,t,n,w(this));i.split(/\s+/g).forEach(function(t){(e===T?!r.hasClass(t):e)?r.addClass(t):r.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var e="scrollTop"in this[0];return t===T?e?this[0].scrollTop:this[0].pageYOffset:this.each(e?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var e="scrollLeft"in this[0];return t===T?e?this[0].scrollLeft:this[0].pageXOffset:this.each(e?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){
 if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),r=H.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(C(t).css("margin-top"))||0,n.left-=parseFloat(C(t).css("margin-left"))||0,r.top+=parseFloat(C(e[0]).css("border-top-width"))||0,r.left+=parseFloat(C(e[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||R.body;t&&!H.test(t.nodeName)&&"static"==C(t).css("position");)t=t.offsetParent;return t})}},C.fn.detach=C.fn.remove,["width","height"].forEach(function(t){var e=t.replace(/./,function(t){return t[0].toUpperCase()});C.fn[t]=function(n){var o,s=this[0];return n===T?r(s)?s["inner"+e]:i(s)?s.documentElement["scroll"+e]:(o=this.offset())&&o[t]:this.each(function(e){s=C(this),s.css(t,v(this,n,e,s[t]()))})}}),B.forEach(function(n,r){var i=r%2;C.fn[n]=function(){var n,o,s=C.map(arguments,function(t){var r=[];return n=e(t),"array"==n?(t.forEach(function
 (t){return t.nodeType!==T?r.push(t):C.zepto.isZ(t)?r=r.concat(t.get()):void(r=r.concat(X.fragment(t)))}),r):"object"==n||null==t?t:X.fragment(t)}),a=this.length>1;return s.length<1?this:this.each(function(e,n){o=i?n:n.parentNode,n=0==r?n.nextSibling:1==r?n.firstChild:2==r?n:null;var u=C.contains(R.documentElement,o);s.forEach(function(e){if(a)e=e.cloneNode(!0);else if(!o)return C(e).remove();o.insertBefore(e,n),u&&x(e,function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}})})})},C.fn[i?n+"To":"insert"+(r?"Before":"After")]=function(t){return C(t)[n](this),this}}),X.Z.prototype=m.prototype=C.fn,X.uniq=A,X.deserializeValue=_,C.zepto=X,C}();return function(e){function n(t){return t._zid||(t._zid=f++)}function r(t,e,r,s){if(e=i(e),e.ns)var a=o(e.ns);return(g[n(t)]||[]).filter(function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||a.test(t.ns))&&(!r||n(t.f
 n)===n(r))&&(!s||t.sel==s)})}function i(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function o(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function s(t,e){return t.del&&!b&&t.e in w||!!e}function a(t){return _[t]||b&&w[t]||t}function u(t,r,o,u,c,h,f){var d=n(t),m=g[d]||(g[d]=[]);r.split(/\s/).forEach(function(n){if("ready"==n)return e(document).ready(o);var r=i(n);r.fn=o,r.sel=c,r.e in _&&(o=function(t){var n=t.relatedTarget;if(!n||n!==this&&!e.contains(this,n))return r.fn.apply(this,arguments)}),r.del=h;var d=h||o;r.proxy=function(e){if(e=l(e),!e.isImmediatePropagationStopped()){e.data=u;var n=d.apply(t,e._args==p?[e]:[e].concat(e._args));return n===!1&&(e.preventDefault(),e.stopPropagation()),n}},r.i=m.length,m.push(r),"addEventListener"in t&&t.addEventListener(a(r.e),r.proxy,s(r,f))})}function c(t,e,i,o,u){var c=n(t);(e||"").split(/\s/).forEach(function(e){r(t,e,i,o).forEach(function(e){delete g[c][e.i],"removeEventListener"in t&&
 t.removeEventListener(a(e.e),e.proxy,s(e,u))})})}function l(t,n){return!n&&t.isDefaultPrevented||(n||(n=t),e.each(C,function(e,r){var i=n[e];t[e]=function(){return this[r]=x,i&&i.apply(n,arguments)},t[r]=T}),t.timeStamp||(t.timeStamp=Date.now()),(n.defaultPrevented!==p?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(t.isDefaultPrevented=x)),t}function h(t){var e,n={originalEvent:t};for(e in t)S.test(e)||t[e]===p||(n[e]=t[e]);return l(n,t)}var p,f=1,d=Array.prototype.slice,m=e.isFunction,y=function(t){return"string"==typeof t},g={},v={},b="onfocusin"in t,w={focus:"focusin",blur:"focusout"},_={mouseenter:"mouseover",mouseleave:"mouseout"};v.click=v.mousedown=v.mouseup=v.mousemove="MouseEvents",e.event={add:u,remove:c},e.proxy=function(t,r){var i=2 in arguments&&d.call(arguments,2);if(m(t)){var o=function(){return t.apply(r,i?i.concat(d.call(arguments)):arguments)};return o._zid=n(t),o}if(y(r))return i?(i.unshift(t[r],t),e.proxy.app
 ly(null,i)):e.proxy(t[r],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var x=function(){return!0},T=function(){return!1},S=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,C={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,n,r,i,o){var s,a,l=this;return t&&!y(t)?(e.each(t,function(t,e){l.on(t,n,r,e,o)}),l):(y(n)||m(i)||i===!1||(i=r,r=n,n=p),i!==p&&r!==!1||(i=r,r=p),i===!1&&(i=T),l.each(function(l,p){o&&(s=function(t){return c(p,t.type,i),i.apply(this,argument
 s)}),n&&(a=function(t){var r,o=e(t.target).closest(n,p).get(0);if(o&&o!==p)return r=e.extend(h(t),{currentTarget:o,liveFired:p}),(s||i).apply(o,[r].concat(d.call(arguments,1)))}),u(p,t,i,r,n,a||s)}))},e.fn.off=function(t,n,r){var i=this;return t&&!y(t)?(e.each(t,function(t,e){i.off(t,n,e)}),i):(y(n)||m(r)||r===!1||(r=n,n=p),r===!1&&(r=T),i.each(function(){c(this,t,r,n)}))},e.fn.trigger=function(t,n){return t=y(t)||e.isPlainObject(t)?e.Event(t):l(t),t._args=n,this.each(function(){t.type in w&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)})},e.fn.triggerHandler=function(t,n){var i,o;return this.each(function(s,a){i=h(y(t)?e.Event(t):t),i._args=n,i.target=a,e.each(r(a,t.type||t),function(t,e){if(o=e.proxy(i),i.isImmediatePropagationStopped())return!1})}),o},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydo
 wn keypress keyup error".split(" ").forEach(function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}}),e.Event=function(t,e){y(t)||(e=t,t=e.type);var n=document.createEvent(v[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),l(n)}}(e),function(t){var e,n=[];t.fn.remove=function(){return this.each(function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",e&&clearTimeout(e),e=setTimeout(function(){n=[]},6e4)),this.parentNode.removeChild(this))})}}(e),function(t){function e(e,r){var u=e[a],c=u&&i[u];if(void 0===r)return c||n(e);if(c){if(r in c)return c[r];var l=s(r);if(l in c)return c[l]}return o.call(t(e),r)}function n(e,n,o){var u=e[a]||(e[a]=++t.uuid),c=i[u]||(i[u]=r(e));return void 0!==n&&(c[s(n)]=o),c}function r(e){var n={};return t.each(e.attributes||u,function(e,r){0==r.name.indexOf("data-")&&(n[s(r.name.replace("data-",""))]=t
 .zepto.deserializeValue(r.value))}),n}var i={},o=t.fn.data,s=t.camelCase,a=t.exp

<TRUNCATED>


[49/50] [abbrv] incubator-weex git commit: *[doc] add aliyunhost tip

Posted by zs...@apache.org.
*[doc] add aliyunhost tip


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

Branch: refs/heads/master
Commit: 476cc3af1b40ea328982e3167fd308f5eef94761
Parents: d2b5104
Author: tancy <ro...@gmail.com>
Authored: Fri Jul 28 16:24:45 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Fri Jul 28 16:24:45 2017 +0800

----------------------------------------------------------------------
 doc/themes/weex/layout/_partial/post/summary.ejs | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/476cc3af/doc/themes/weex/layout/_partial/post/summary.ejs
----------------------------------------------------------------------
diff --git a/doc/themes/weex/layout/_partial/post/summary.ejs b/doc/themes/weex/layout/_partial/post/summary.ejs
index e81308d..abf1bc7 100644
--- a/doc/themes/weex/layout/_partial/post/summary.ejs
+++ b/doc/themes/weex/layout/_partial/post/summary.ejs
@@ -51,4 +51,5 @@
   <a href="https://render.alipay.com/p/s/taobaonpm_click/weex_banner_click">
     <img src="https://render.alipay.com/p/s/taobaonpm_click/weex_banner" alt="" width="180px">
   </a>
+  <div style="color: #7f8c8d;font-size: 12px;">阿里云赞助</div>
 </div>
\ No newline at end of file


[26/50] [abbrv] incubator-weex git commit: * [doc] Add scroll event demo.

Posted by zs...@apache.org.
* [doc] Add scroll event 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/dd60d656
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/dd60d656
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/dd60d656

Branch: refs/heads/master
Commit: dd60d6566767418802450f6dd13e3fdfb16f28ac
Parents: cf0bff0
Author: yinfeng <cx...@apache.org>
Authored: Fri Jun 30 17:09:53 2017 +0800
Committer: yinfeng <cx...@apache.org>
Committed: Fri Jun 30 17:09:53 2017 +0800

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


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/dd60d656/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 2175bfc..be14d06 100644
--- a/doc/source/cn/references/components/list.md
+++ b/doc/source/cn/references/components/list.md
@@ -63,7 +63,7 @@ version: 2.1
 
 - `loadmore` <sup class="wx-v">0.5+</sup>:如果列表滚动到底部将会立即触发这个事件,你可以在这个事件的处理函数中加载下一页的列表项。
 - `onscroll` <sup class="wx-v">0.11+</sup>: 列表发生滚动时将会触发该事件,事件的默认抽样率为10px,即列表每滚动10px触发一次,可通过属性`offset-accuracy`设置抽样率。    
-  
+
   事件中 event 对象属性:
   - `contentSize {Object}`:列表的内容尺寸
     - `width {number}`: 列表内容宽度
@@ -74,7 +74,7 @@ version: 2.1
 
   [体验一下](http://dotwe.org/bc445ede8746a31360e3607d210304c5)
 
-- `scroll` <sup class="wx-v">0.12+</sup>:列表滚动时触发这个事件。此事件回调中会给出当前`contentOffset`值。
+- `scroll` <sup class="wx-v">0.12+</sup>:列表滚动时触发这个事件。此事件回调中会给出当前`contentOffset`值。参见 [scroll event demo](http://dotwe.org/vue/9ef0e52bacaa20182a693f2187d851aa)。
 
   [体验一下](http://dotwe.org/weex/7ba3b6222d912b4b0b4aafb8248ca22f)
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/dd60d656/doc/source/cn/references/components/scroller.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/components/scroller.md b/doc/source/cn/references/components/scroller.md
index dd74525..acac227 100644
--- a/doc/source/cn/references/components/scroller.md
+++ b/doc/source/cn/references/components/scroller.md
@@ -62,7 +62,7 @@ version: 2.1
 ## 事件
 
 - `loadmore` <sup class="wx-v">v0.5+</sup>:如果滚动到底部将会立即触发这个事件,你可以在这个事件的处理函数中加载下一页的列表项。
-- `scroll` <sup class="wx-v">0.11+</sup>: 列表发生滚动时将会触发该事件,事件的默认抽样率为10px,即列表每滚动10px触发一次,可通过属性`offset-accuracy`设置抽样率。    
+- `scroll` <sup class="wx-v">0.11+</sup>: 列表发生滚动时将会触发该事件,事件的默认抽样率为10px,即列表每滚动10px触发一次,可通过属性`offset-accuracy`设置抽样率。    参见 [scroll event demo](http://dotwe.org/vue/9ef0e52bacaa20182a693f2187d851aa)。 
 
   事件中 event 对象属性:
   - `contentSize {Object}`:列表的内容尺寸

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/dd60d656/doc/source/references/components/list.md
----------------------------------------------------------------------
diff --git a/doc/source/references/components/list.md b/doc/source/references/components/list.md
index 1e69b94..12a62ee 100644
--- a/doc/source/references/components/list.md
+++ b/doc/source/references/components/list.md
@@ -91,9 +91,7 @@ common styles: check out [common styles for components](../common-style.html)
 
 onloadmore  0.5 used with loadmoreoffset attribute. if the view has less than loadmoreoffset to scroll down, the onloadmore event will be triggered.
 
-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/7ba3b6222d912b4b0b4aafb8248ca22f)
+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. See details in [scroll event demo](http://dotwe.org/vue/9ef0e52bacaa20182a693f2187d851aa).
 
 common events: check out the [common events](../common-event.html)
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/dd60d656/doc/source/references/components/scroller.md
----------------------------------------------------------------------
diff --git a/doc/source/references/components/scroller.md b/doc/source/references/components/scroller.md
index 6778bd6..4218757 100644
--- a/doc/source/references/components/scroller.md
+++ b/doc/source/references/components/scroller.md
@@ -48,9 +48,9 @@ common styles: check out [common styles for components](../common-style.html)
 
 ## Events
 
-onloadmore  used with loadmoreoffset attribute. if the view has less than loadmoreoffset to scroll down, the onloadmore event will be triggered.
+`loadmore`  used with loadmoreoffset attribute. if the view has less than loadmoreoffset to scroll down, the onloadmore event will be triggered.
 
-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.
+`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.  See details in [scroll event demo](http://dotwe.org/vue/9ef0e52bacaa20182a693f2187d851aa).
 
 common events: check out the [common events](../common-event.html)
 


[44/50] [abbrv] incubator-weex git commit: + [doc] update doc of devtools android

Posted by zs...@apache.org.
+ [doc] update doc of devtools android


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

Branch: refs/heads/master
Commit: 9db8054d405ae99ef25be3c4639a3ec12fe72289
Parents: 3b9b5a5
Author: misakuo <mi...@apache.org>
Authored: Fri Jul 21 15:29:34 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Fri Jul 21 15:29:34 2017 +0800

----------------------------------------------------------------------
 .../advanced/integrate-devtool-to-android.md    | 86 +++++++++++++++++++-
 1 file changed, 84 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9db8054d/doc/source/cn/references/advanced/integrate-devtool-to-android.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/advanced/integrate-devtool-to-android.md b/doc/source/cn/references/advanced/integrate-devtool-to-android.md
index 05a7f18..c26c814 100644
--- a/doc/source/cn/references/advanced/integrate-devtool-to-android.md
+++ b/doc/source/cn/references/advanced/integrate-devtool-to-android.md
@@ -19,7 +19,7 @@ Weex Devtools 能够方便调试 Weex 页面,但此功能离不开 Native 的
 
   ```gradle
   dependencies {
-    compile 'com.taobao.android:weex_inspector:0.8.0.0'
+    compile 'com.taobao.android:weex_inspector:${version}'
   }
   ```
 
@@ -29,7 +29,7 @@ Weex Devtools 能够方便调试 Weex 页面,但此功能离不开 Native 的
   <dependency>
     <groupId>com.taobao.android</groupId>
     <artifactId>weex_inspector</artifactId>
-    <version>0.8.0.0</version>
+    <version>${version}</version>
     <type>pom</type>
   </dependency>
   ```
@@ -82,6 +82,7 @@ Weex Devtools 能够方便调试 Weex 页面,但此功能离不开 Native 的
 
 | weex sdk | weex inspector | Debugger Server |
 |----------|----------------|-----------------|
+| 0.13+    | 0.12+          | 0.2.39+         |
 | 0.8.0.1+ | 0.0.8.1+       | 0.2.39+         |
 | 0.7.0+   | 0.0.7.13       | 0.2.38          |
 | 0.6.0+   | 0.0.2.2        | -               |
@@ -269,3 +270,84 @@ Devtools 扩展了 [Chrome Debugging Protocol](https://developer.chrome.com/devt
   已知的原因如下:
 
   * 多线程操作网络连接引起,在频繁的即断即连时容易触发。在 0.0.7.1 版本已修复。
+
+## 注入自定义WebSocket Client
+目前Inspector以反射的方式动态调用了okhttp-ws库中的相关代码,可以兼容的okhttp与okhttp-ws版本为:
+- okhttp, okhttp-ws 2.7.5版本以下
+- okhttp3, okhttp3-ws 3.5版本以下
+
+如果客户端中集成的版本与上述版本不匹配,则可以使用`WeexInspector.overrideWebSocketClient`方法来注入自定义的WebSocket实现,示例:
+```java
+
+    public class CustomWebSocketClient implements IWebSocketClient {
+
+      private WebSocket ws;
+
+      @Override
+      public boolean isOpen() {
+        return ws != null;
+      }
+
+      @Override
+      public void connect(String wsAddress, final WSListener listener) {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        okHttpClient.setConnectTimeout(5, TimeUnit.SECONDS);
+        okHttpClient.setReadTimeout(5, TimeUnit.SECONDS);
+        okHttpClient.setWriteTimeout(5, TimeUnit.SECONDS);
+
+        Request request = new Request.Builder().url(wsAddress).build();
+        WebSocketCall webSocketCall = WebSocketCall.create(okHttpClient, request);
+        webSocketCall.enqueue(new WebSocketListener() {
+          @Override
+          public void onOpen(WebSocket webSocket, Request request, Response response) throws IOException {
+            ws = webSocket;
+            listener.onOpen();
+          }
+
+          @Override
+          public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
+            if (WebSocket.PayloadType.TEXT == type) {
+              listener.onMessage(payload.readUtf8());
+            }
+          }
+
+          @Override
+          public void onPong(Buffer payload) {
+            //ignore
+          }
+
+          @Override
+          public void onClose(int code, String reason) {
+            listener.onClose();
+          }
+
+          @Override
+          public void onFailure(IOException e) {
+            listener.onFailure(e);
+          }
+        });
+      }
+
+      @Override
+      public void close() {
+        if (ws != null) {
+          try {
+            ws.close(CloseCodes.NORMAL_CLOSURE, "Normal closure");
+          } catch (IOException e) {
+            e.printStackTrace();
+          }
+        }
+      }
+
+      @Override
+      public void sendMessage(int requestId, String message) {
+        if (ws != null) {
+          try {
+            ws.sendMessage(WebSocket.PayloadType.TEXT, new Buffer().writeString(message, Charset.defaultCharset()));
+          } catch (IOException e) {
+            e.printStackTrace();
+          }
+        }
+      }
+    }
+```


[22/50] [abbrv] incubator-weex git commit: * [doc] correct platform information.x

Posted by zs...@apache.org.
* [doc] correct platform information.x


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

Branch: refs/heads/master
Commit: 21a8032fc332e2121488389706e26d5d2266b4e1
Parents: 44e959a
Author: MrRaindrop <te...@gmail.com>
Authored: Fri Jun 30 10:42:21 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Fri Jun 30 10:42:21 2017 +0800

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


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/21a8032f/doc/source/cn/references/weex-variable.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/weex-variable.md b/doc/source/cn/references/weex-variable.md
index 4630681..0848441 100644
--- a/doc/source/cn/references/weex-variable.md
+++ b/doc/source/cn/references/weex-variable.md
@@ -19,7 +19,7 @@ has_chapter_content: true
     * `weexVersion: string`: Weex sdk 版本。
     * `appName: string`: 应用名字。
     * `appVersion: string`: 应用版本。
-    * `platform: string`: 平台信息,是 iOS、Android 还是 Web。
+    * `platform: string`: 平台信息,是 'iOS'、'android' 还是 'Web'。
     * `osVersion: string`: 系统版本。
     * `deviceModel: string`: 设备型号 (仅原生应用)。
     * `deviceWidth: number`: 设备宽度。Weex 默认以宽度为 750px 做适配渲染,要获得750px下的屏幕高度,可以通过 `height = 750/deviceWidth*deviceHeight`  公式获得,可以使用到 CSS 中,用来设置全屏尺寸

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/21a8032f/doc/source/references/weex-variable.md
----------------------------------------------------------------------
diff --git a/doc/source/references/weex-variable.md b/doc/source/references/weex-variable.md
index b55eef5..c8806af 100644
--- a/doc/source/references/weex-variable.md
+++ b/doc/source/references/weex-variable.md
@@ -18,7 +18,7 @@ This variable contains all the environment information for the current Weex page
 + `WeexVersion: string`: Weex sdk version.
 + `AppName: string`: application name.
 + `AppVersion: string`: app version.
-+ `Platform: string`: platform information, that is iOS, Android or Web.
++ `Platform: string`: platform information, that is 'iOS', 'android' or 'Web'.
 + `OsVersion: string`: system version.
 + `DeviceModel: string`: device model (native application only).
 + `DeviceWidth: number`: device width


[40/50] [abbrv] incubator-weex git commit: add weex-project.io website host by aliyun

Posted by zs...@apache.org.
add weex-project.io website host by aliyun


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

Branch: refs/heads/master
Commit: b397774a8570c981c8a51c0eebb5ac8feb6e2591
Parents: 081b7a3
Author: tancy <ro...@gmail.com>
Authored: Fri Jul 14 17:37:15 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Fri Jul 14 17:37:15 2017 +0800

----------------------------------------------------------------------
 doc/themes/weex/layout/_partial/footer.ejs       |  2 +-
 doc/themes/weex/layout/_partial/post/summary.ejs |  6 ++++++
 doc/themes/weex/layout/_partial/slider.ejs       |  2 +-
 doc/themes/weex/source/css/partial/footer.scss   |  1 +
 doc/themes/weex/source/css/partial/summary.scss  |  6 ++++++
 doc/themes/weex/source/js/common.js              | 16 ++++++++++++++++
 6 files changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b397774a/doc/themes/weex/layout/_partial/footer.ejs
----------------------------------------------------------------------
diff --git a/doc/themes/weex/layout/_partial/footer.ejs b/doc/themes/weex/layout/_partial/footer.ejs
index 289cfb8..0cbe7b2 100644
--- a/doc/themes/weex/layout/_partial/footer.ejs
+++ b/doc/themes/weex/layout/_partial/footer.ejs
@@ -27,4 +27,4 @@
   <div class="row clearfix">
     <div></div>
   </div>
-</footer>
\ No newline at end of file
+</footer>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b397774a/doc/themes/weex/layout/_partial/post/summary.ejs
----------------------------------------------------------------------
diff --git a/doc/themes/weex/layout/_partial/post/summary.ejs b/doc/themes/weex/layout/_partial/post/summary.ejs
index f6c6313..e81308d 100644
--- a/doc/themes/weex/layout/_partial/post/summary.ejs
+++ b/doc/themes/weex/layout/_partial/post/summary.ejs
@@ -1,5 +1,6 @@
 <% var result = page.path.match(/(v-)(\d+(\.\d+))/) %>
 <% var version = result ? +result[2] : 2.1 %>
+
 <div class="doc-nav-version">
   <select class="versionBtn" stype="<%- url_for_lang(page.type) %>">
   <% if (version == 2.1) { %>
@@ -45,4 +46,9 @@
     <% }) %>
     
   </ul>
+</div>
+<div class="hostbyaliyun">
+  <a href="https://render.alipay.com/p/s/taobaonpm_click/weex_banner_click">
+    <img src="https://render.alipay.com/p/s/taobaonpm_click/weex_banner" alt="" width="180px">
+  </a>
 </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b397774a/doc/themes/weex/layout/_partial/slider.ejs
----------------------------------------------------------------------
diff --git a/doc/themes/weex/layout/_partial/slider.ejs b/doc/themes/weex/layout/_partial/slider.ejs
index f35c58f..6ddf55e 100644
--- a/doc/themes/weex/layout/_partial/slider.ejs
+++ b/doc/themes/weex/layout/_partial/slider.ejs
@@ -6,7 +6,7 @@
           <h1 class="page-title"><%= _p('index.page_title') %></h1>
           <div class="btn-group">
             <a href="<%= url_for_lang('guide/index.html') %>" class="button get-started"><%= _p('index.get_started') %></a>
-            <a href="https://github.com/apache/incubator-weex/" class="button get-started" target="_blank"><%= _p('menu.github') %></a>
+            <a href="<%= url_for_lang('guide/contributing.html') %>" class="button get-started"><%= _p('menu.invovled') %></a>
           </div>
         </div>
       </div>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b397774a/doc/themes/weex/source/css/partial/footer.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/partial/footer.scss b/doc/themes/weex/source/css/partial/footer.scss
index 922eb0b..1bc4c69 100644
--- a/doc/themes/weex/source/css/partial/footer.scss
+++ b/doc/themes/weex/source/css/partial/footer.scss
@@ -71,3 +71,4 @@
     margin-bottom: 10px;
   }
 }
+

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b397774a/doc/themes/weex/source/css/partial/summary.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/partial/summary.scss b/doc/themes/weex/source/css/partial/summary.scss
index 1b78b55..d9d4609 100644
--- a/doc/themes/weex/source/css/partial/summary.scss
+++ b/doc/themes/weex/source/css/partial/summary.scss
@@ -45,4 +45,10 @@
 
 .lang-en .summary h3.chapter-title{
   font-weight: 600;
+}
+
+.hostbyaliyun {
+  width: 180px;
+  z-index: 99;
+  display: none;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b397774a/doc/themes/weex/source/js/common.js
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/js/common.js b/doc/themes/weex/source/js/common.js
index d45df41..3e92ba4 100644
--- a/doc/themes/weex/source/js/common.js
+++ b/doc/themes/weex/source/js/common.js
@@ -273,6 +273,22 @@
   }
 
   initSearch()
+
+
+  function hostbyaliyun(){
+    if(location.hostname === "weex-project.io" || location.hostname === 'localhost'){
+      var hosts = document.querySelectorAll('.hostbyaliyun');
+       hosts.forEach(function (i) {
+          i.style.display = 'block'
+        })
+      
+    }
+  }
+
+  hostbyaliyun()
+
+
+
   /*
    * LANDINGPAGE 
    */


[04/50] [abbrv] incubator-weex git commit: + [example] update logic

Posted by zs...@apache.org.
+ [example] update logic


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

Branch: refs/heads/master
Commit: 8ddc04bc3860b6c33eec27ce447e071439aea0b1
Parents: 1a0813a
Author: 齐山 <su...@163.com>
Authored: Sat Jun 24 20:43:08 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Sat Jun 24 20:43:08 2017 +0800

----------------------------------------------------------------------
 test/scripts/components/textarea-maxlength.test.js | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8ddc04bc/test/scripts/components/textarea-maxlength.test.js
----------------------------------------------------------------------
diff --git a/test/scripts/components/textarea-maxlength.test.js b/test/scripts/components/textarea-maxlength.test.js
index 7473d3d..01c873f 100644
--- a/test/scripts/components/textarea-maxlength.test.js
+++ b/test/scripts/components/textarea-maxlength.test.js
@@ -43,11 +43,13 @@ describe('@ignore-android textarea maxlength vue test2 ', function () {
     return driver
       .elementById('textarea')
       .sendKeys('12345678')
-      .sleep(2000)
+      .sleep(3000)
+      .source()
       .elementById('status')
       .text()
       .then((text)=>{
-      assert.equal(text,'1234')
+        console.log(text())
+        assert.equal(text,'1234')
      })
   })
 


[31/50] [abbrv] incubator-weex git commit: * [doc] remove unsupported scroll-direction attribute in list documentation

Posted by zs...@apache.org.
* [doc] remove unsupported scroll-direction attribute in list documentation


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

Branch: refs/heads/master
Commit: e26e4a7d5e09a1246879fc158d43d6099d6cdad9
Parents: dd60d65
Author: yinfeng <cx...@apache.org>
Authored: Tue Jul 4 15:40:29 2017 +0800
Committer: yinfeng <cx...@apache.org>
Committed: Tue Jul 4 15:40:29 2017 +0800

----------------------------------------------------------------------
 doc/source/references/components/list.md | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e26e4a7d/doc/source/references/components/list.md
----------------------------------------------------------------------
diff --git a/doc/source/references/components/list.md b/doc/source/references/components/list.md
index 12a62ee..0a0a174 100644
--- a/doc/source/references/components/list.md
+++ b/doc/source/references/components/list.md
@@ -62,7 +62,7 @@ It can provide excellent experience and performance while still maintaining smoo
 
 Notes: The list now supports the following child components: cell, header, refresh, loading and fixed-position components. Other kinds of components will not be guaranteed to be displayed correctly.
 
-* cell 0.6.1 defines the attributes and behavior of the cells that appear in list. 
+* cell 0.6.1 defines the attributes and behavior of the cells that appear in list.
 * header 0.6.1 sticks to the top when it reaches the top of the screen.
 * refresh 0.6.1 used inside list to add pull-down-to-refresh functionality.
 * loading 0.6.1 used inside list to add pull-up-to-load-more functionality.
@@ -71,7 +71,6 @@ Notes: The list now supports the following child components: cell, header, refre
 ### Attributes
 
 * show-scrollbar: true/false whether show the scroll bar or not, default value is true
-* scroll-direction: <string> define scroll direction of component, horizontal or vertical
 * loadmoreoffset : <number> default value is 0. The loadmore event will be triggered when the list is loadmoreoffset left to reach the bottom of the list view. e.g. a list has total content length of 1000, and the loadmoreoffset is set to 400, the loadmore event will be triggered when 600 has beed scrolled and there is less than 400 left.
 * loadmoreretry : <number> default value 0,whether to reset loadmore related UI when loadmore failed, will be deprecated in further release.
 * offset-accuracy:<number> default value is 0, the vertical offset distance required to trigger the scroll event.


[33/50] [abbrv] incubator-weex git commit: Update common-style.md

Posted by zs...@apache.org.
Update common-style.md

文案校对

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

Branch: refs/heads/master
Commit: 4bcf7cc8d2bc19fbb7fe24c34f23abaa16cda48a
Parents: 92399a4
Author: miyalee <mi...@outlook.com>
Authored: Thu Jul 6 11:27:57 2017 +0800
Committer: GitHub <no...@github.com>
Committed: Thu Jul 6 11:27:57 2017 +0800

----------------------------------------------------------------------
 doc/source/cn/references/common-style.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4bcf7cc8/doc/source/cn/references/common-style.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/common-style.md b/doc/source/cn/references/common-style.md
index 8ba1a8a..a36d2cd 100644
--- a/doc/source/cn/references/common-style.md
+++ b/doc/source/cn/references/common-style.md
@@ -343,11 +343,11 @@ transform 属性向元素应用 2D 转换。该属性允许我们对元素进行
 
 Weex 支持四种伪类:`active`, `focus`, `disabled`, `enabled`
 
-所有组件都支持 `active`, 但只有 `input` 组件和 `textarea` 组件支持 `focus`, `enabled`, `diabled`。
+所有组件都支持 `active`, 但只有 `input` 组件和 `textarea` 组件支持 `focus`, `enabled`, `disabled`。
 
 ### 规则
 
-- 同时生效生效的时候,优先级高覆盖优先级低
+- 同时生效的时候,优先级高覆盖优先级低
 
    - 例如:`input:active:enabled` 和 `input:active` 同时生效,前者覆盖后者
 


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

Posted by zs...@apache.org.
Merge branch '0.14-dev-component-observer' 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/5d75a6f2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/5d75a6f2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/5d75a6f2

Branch: refs/heads/master
Commit: 5d75a6f237552b227934e18b0da23d51a7b688c6
Parents: 9e57917 a891e2d
Author: sospartan <so...@apache.org>
Authored: Wed Jun 28 10:23:38 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Wed Jun 28 10:23:38 2017 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/ComponentObserver.java | 50 ++++++++++++++++++++
 .../java/com/taobao/weex/WXSDKInstance.java     | 16 +++++++
 .../taobao/weex/ui/component/WXComponent.java   | 14 ++++++
 3 files changed, 80 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5d75a6f2/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
----------------------------------------------------------------------
diff --cc android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
index 5533843,47b7f30..a8d8a60
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@@ -141,8 -141,9 +141,9 @@@ public class WXSDKInstance implements I
  
    private LayoutFinishListener mLayoutFinishListener;
  
 +  private boolean mCurrentGround = false;
+   private ComponentObserver mComponentObserver;
  
 -
    /**
     * If anchor is created manually(etc. define a layout xml resource ),
     * be aware do not add it to twice when {@link IWXRenderListener#onViewCreated(WXSDKInstance, View)}.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5d75a6f2/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------


[28/50] [abbrv] incubator-weex git commit: Closes #169: invalid

Posted by zs...@apache.org.
Closes #169: invalid


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

Branch: refs/heads/master
Commit: 26b638ca984a99d7b86a75aeaf0d2e188311d14a
Parents: 1a957f1
Author: MrRaindrop <te...@gmail.com>
Authored: Fri Jun 30 18:03:12 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Fri Jun 30 18:03:12 2017 +0800

----------------------------------------------------------------------

----------------------------------------------------------------------



[06/50] [abbrv] incubator-weex git commit: + [ios] macaca update server

Posted by zs...@apache.org.
+ [ios] macaca update server


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

Branch: refs/heads/master
Commit: 91e6294517a110537018748f7e7910f6acde2b8a
Parents: 8ddc04b
Author: 齐山 <su...@163.com>
Authored: Sun Jun 25 14:25:31 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Sun Jun 25 14:25:31 2017 +0800

----------------------------------------------------------------------
 test/serve.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/91e62945/test/serve.sh
----------------------------------------------------------------------
diff --git a/test/serve.sh b/test/serve.sh
index eb2a156..a5485e2 100755
--- a/test/serve.sh
+++ b/test/serve.sh
@@ -1,4 +1,5 @@
 #!/bin/bash -eu
 npm run build:vue
 npm run build:ci &
-npm run serve:no-port -- -p $serport
\ No newline at end of file
+port="${serport:-12581}"
+npm run serve:no-port -- -p $port
\ No newline at end of file


[16/50] [abbrv] incubator-weex git commit: Merge branch 'doc-feature-docsearch' of https://github.com/parryworld/incubator-weex into dev

Posted by zs...@apache.org.
Merge branch 'doc-feature-docsearch' of https://github.com/parryworld/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/ad732d2a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/ad732d2a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/ad732d2a

Branch: refs/heads/master
Commit: ad732d2a9526b1c9bc451bf432bee4cb1c0ebd17
Parents: b134be2 5b4c93e
Author: tancy <ro...@gmail.com>
Authored: Tue Jun 27 15:08:54 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Tue Jun 27 15:08:54 2017 +0800

----------------------------------------------------------------------
 doc/_config.yml                                 |  6 +++
 doc/_config_cn.yml                              |  6 +++
 doc/themes/weex/layout/_partial/head.ejs        |  3 ++
 doc/themes/weex/layout/layout.ejs               | 15 +++++++
 doc/themes/weex/source/css/docsearch.min.css    |  2 +
 .../weex/source/css/partial/search-form.scss    | 44 +++++++++++++++++++-
 doc/themes/weex/source/js/docsearch.min.js      |  7 ++++
 7 files changed, 82 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ad732d2a/doc/_config.yml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ad732d2a/doc/_config_cn.yml
----------------------------------------------------------------------


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

Posted by zs...@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/a53deeb1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/a53deeb1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/a53deeb1

Branch: refs/heads/master
Commit: a53deeb15b42712aa0b0249a9124ecce1c21817f
Parents: 825c6e3 44e959a
Author: tancy <ro...@gmail.com>
Authored: Fri Jun 30 11:09:09 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Fri Jun 30 11:09:09 2017 +0800

----------------------------------------------------------------------
 android/sdk/libs/armeabi/libweexjsc.so          | Bin 7575352 -> 7570504 bytes
 android/sdk/libs/x86/libweexjsc.so              | Bin 12130116 -> 12121924 bytes
 .../java/com/taobao/weex/ComponentObserver.java |  50 ++++++++
 .../java/com/taobao/weex/WXSDKInstance.java     |  16 +++
 .../taobao/weex/ui/component/WXComponent.java   |  14 +++
 .../ui/component/list/BasicListComponent.java   |  16 ++-
 examples/vue/index.vue                          |   1 +
 examples/vue/modules/websocket.vue              | 116 +++++++++++++++++++
 html5/render/vue/README.md                      |  19 ++-
 html5/render/vue/components/input.js            |  52 +++++++--
 .../components/scrollable/loading-indicator.js  |  11 +-
 .../render/vue/components/slider/slideMixin.js  |  24 ++--
 html5/render/vue/core/style.js                  |  31 +++--
 html5/render/vue/env/weex.js                    |   3 +
 html5/render/vue/mixins/scrollable.js           |  38 +++---
 html5/render/vue/modules/index.js               |   2 +
 html5/render/vue/modules/websocket/index.js     |  26 +++++
 html5/render/vue/modules/websocket/websocket.js |  60 ++++++++++
 html5/render/vue/utils/style.js                 |  44 +++++++
 html5/test/render/vue/modules/websocket.js      |  11 ++
 .../Sources/Component/WXCycleSliderComponent.m  |   7 ++
 package.json                                    |   2 +-
 packages/weex-vue-render/package.json           |   2 +-
 test/pages/components/textarea-maxlength.vue    |  10 +-
 .../components/textarea-maxlength.test.js       |   6 +-
 test/scripts/util.js                            |   2 +-
 26 files changed, 491 insertions(+), 72 deletions(-)
----------------------------------------------------------------------



[48/50] [abbrv] incubator-weex git commit: +[doc] add blog

Posted by zs...@apache.org.
+[doc] add blog


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

Branch: refs/heads/master
Commit: d2b5104f1596676b500c0c42010357bb79eae57e
Parents: beb83d2
Author: tancy <ro...@gmail.com>
Authored: Fri Jul 28 15:58:06 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Fri Jul 28 15:58:06 2017 +0800

----------------------------------------------------------------------
 doc/source/_posts/arkit.md                     | 112 ++++++++++++++++++++
 doc/source/_posts/cn/hello.md                  |   6 --
 doc/source/_posts/hello_world.md               |   7 --
 doc/source/_posts/test.md                      |  14 ---
 doc/source/cn/blog/index.md                    |   4 -
 doc/themes/weex/layout/_partial/header.ejs     |   1 +
 doc/themes/weex/source/css/blog.scss           |   3 +
 doc/themes/weex/source/css/media-queries.scss  |   1 +
 doc/themes/weex/source/css/partial/header.scss |   6 +-
 9 files changed, 120 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d2b5104f/doc/source/_posts/arkit.md
----------------------------------------------------------------------
diff --git a/doc/source/_posts/arkit.md b/doc/source/_posts/arkit.md
new file mode 100644
index 0000000..2b97c6e
--- /dev/null
+++ b/doc/source/_posts/arkit.md
@@ -0,0 +1,112 @@
+title: Weex ❤️ iOS 11 系列之一:ARKit初探
+type: blog
+date: 2017-06-27 14:32:10
+
+---
+
+## ARKit
+苹果在wwdc 2017公布了第一款具有AR功能的操作系统iOS11,并提供了AR的SDK,ARKit,同时宣称苹果是世界上最大的AR平台,Weex也积极拥抱AR,让Weex用户也可以方便开发AR功能
+
+AR体验就是创建和追踪用户所在的现实世界和可建立模型的空间的对应关系的能力,让用户感觉产生虚拟内容在现实世界的错觉,这就是所谓的增强现实。ARKit通过识别图像场景中的显著特征,追踪这些特征的差异位置,最后与传感器数据比较,得到设备位置和运动状态的高精度模型
+
+## 原理
+ARkit 在ARSCNView,ARSession,ARFrame的基础上实现
+
+### ARSCNView和ARSession
+![x](http://upload-images.jianshu.io/upload_images/6271687-d5b0e534ef0d7aaa.png?imageMogr2/auto-orient/strip%7CimageView2/2)
+ARKit提供了两种增强现实的视图,他们分别是ARSCNView(3D)和ARSKView(2D),这两种视图都采用ARCamera作为视图背景的,而ARSCNView等视图和相机没有直接关系,他们是通过ARSession这个桥梁和camera交互的,运行一个session,需要指定会话追踪配置的对象:ARSessionConfiguration,ARSessionConfiguration负责追踪相机在3D世界中的位置和平面探测
+
+### ARWorldTrackingSessionConfiguration与ARFrame
+![x](https://github.com/kfeagle/firstdemo/blob/master/arkit.png?raw=true)
+ARWorldTrackingSessionConfiguration通过一系列的复杂计算和调用传感器来跟踪设备的方向和位置,当ARWorldTrackingSessionConfiguration计算出位置,会交给ARSession管理,ARSession就会维护一个相机的位置ARFame,用户可以通过这个frame将4x4矩阵世界坐标转换为3D系统相机坐标
+
+## weex-ar
+ARKit在wwdc上带来的震撼效果,我通过weex插件的方式将ARKit能力透传到Weex,让用户在weex上也第一时间体验到Native的AR效果
+所有的demo以及源码我已经开源,同步到[github](https://github.com/kfeagle/weex-ar),用户在自己工程依赖即可使用
+
+### 在现实世界渲染一个3D的虚拟物体
+```
+this.$refs['scene'].addNode({
+        name:'color',
+        width:0.1,
+        height:0.1,
+        length:0.1,
+        chamferRadius:0,
+        vector:{
+          x:0.1,
+          y:0.1,
+          z:-0.5
+        },
+        contents:{
+          type:'color',
+          name:'red'
+        }
+      });
+```
+Weex在compnonent中增加addNode方法,用户可以设置好节点的参数,然后就会构建一个虚拟物体
+- 效果
+   - ![x](http://gitlab.alibaba-inc.com/Jerry/amapdemo/raw/master/ar/1.gif)
+
+### 交互支持
+当native触发了点击事件,会向jsfm发送点击位置信息
+
+```
+-(void)tapped:(UITapGestureRecognizer *)recognizer
+{
+    SCNView *sceneView = (SCNView *)recognizer.view ;
+    CGPoint touchLocation =  [recognizer locationInView:sceneView];
+    [self fireEvent:@"tap" params:@{@"touchLocation":@{@"x":@(touchLocation.x),@"y":@(touchLocation.y)}}];
+}
+```
+当VUE接收到相关信息,会处理位置信息,然后更新节点
+```
+tap:function (event) {
+        this.index = this.index+1;
+        if(this.index>3){
+          this.index = 0;
+        }
+        var color = 'red';
+        if(this.index == 1){
+          color = 'blue';
+        }
+        if(this.index == 2){
+          color = 'green';
+        }
+        if(this.index == 3){
+          color = 'yellow';
+        }
+        this.$refs['scene'].updateNode({
+          name:'color',
+          x:event.touchLocation.x,
+          y:event.touchLocation.y,
+          color:color
+        })
+      }
+```
+- 效果
+   - ![x](http://gitlab.alibaba-inc.com/Jerry/amapdemo/raw/master/ar/tap.gif)
+
+### 碰撞游戏
+设置节点的mask,通过arkit的代理就可以检测碰撞了
+```
+node.physicsBody.categoryBitMask= [self getMask:[WXConvert NSInteger:[options objectForKey:@"categoryBitMask"]]];
+    node.physicsBody.contactTestBitMask= [self getMask:[WXConvert NSInteger:[options objectForKey:@"contactTestBitMask"]]];
+```
+当碰撞发生时候,会通过physicsWorld:(SCNPhysicsWorld *)world didBeginContact:(SCNPhysicsContact *)contact代理获取到节点的信息,weex将相关信息发送到jsfm
+vue获取先关节点可以删除节点,增减节点,从而完成碰撞的处理
+```
+contact:function (event) {
+                if(event.nodes.nodeA.mask == 0 || event.nodes.nodeB.mask == 0 ){
+
+                    this.isAdd = false;
+                    this.$refs['scene'].removeNode(event.nodes.nodeA.name);
+                    this.$refs['scene'].removeNode(event.nodes.nodeB.name);
+
+                }
+
+            }
+```
+
+- 效果
+
+  - ![x](http://gitlab.alibaba-inc.com/Jerry/amapdemo/raw/master/ar/game.gif)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d2b5104f/doc/source/_posts/cn/hello.md
----------------------------------------------------------------------
diff --git a/doc/source/_posts/cn/hello.md b/doc/source/_posts/cn/hello.md
deleted file mode 100644
index da43361..0000000
--- a/doc/source/_posts/cn/hello.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: hello
-lang: cn
-date: 2016-12-27 15:54:28
-type: blog
----

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d2b5104f/doc/source/_posts/hello_world.md
----------------------------------------------------------------------
diff --git a/doc/source/_posts/hello_world.md b/doc/source/_posts/hello_world.md
deleted file mode 100644
index 803ef70..0000000
--- a/doc/source/_posts/hello_world.md
+++ /dev/null
@@ -1,7 +0,0 @@
-title: Hello World
-type: blog
-
----
-
-# Hello world 
-

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d2b5104f/doc/source/_posts/test.md
----------------------------------------------------------------------
diff --git a/doc/source/_posts/test.md b/doc/source/_posts/test.md
deleted file mode 100644
index afaa8ec..0000000
--- a/doc/source/_posts/test.md
+++ /dev/null
@@ -1,14 +0,0 @@
-title: test
-type: blog
-
----
-
-
-# test
-
-asdfadfasdfasdfadfadsf
-asdfasdfadsf
-adsfadsfadsf
-
-## sdfasdfasdf
-sdfsdfsdf
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d2b5104f/doc/source/cn/blog/index.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/blog/index.md b/doc/source/cn/blog/index.md
deleted file mode 100644
index ef7b31d..0000000
--- a/doc/source/cn/blog/index.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: blog
-index: true
-layout: blog
----
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d2b5104f/doc/themes/weex/layout/_partial/header.ejs
----------------------------------------------------------------------
diff --git a/doc/themes/weex/layout/_partial/header.ejs b/doc/themes/weex/layout/_partial/header.ejs
index 4c7d92d..5b5701f 100644
--- a/doc/themes/weex/layout/_partial/header.ejs
+++ b/doc/themes/weex/layout/_partial/header.ejs
@@ -36,6 +36,7 @@
             </li>
           </ul>
         </li>
+        <li><a href="/blog"><%= _p('menu.blog') %></a></li>
       </ul>
       <ul class="info">
         <li><a href="https://github.com/apache/incubator-weex/" target="_blank"><span class="btn-github iconfont icon-github"></span></a></li>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d2b5104f/doc/themes/weex/source/css/blog.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/blog.scss b/doc/themes/weex/source/css/blog.scss
index 7e2cd9d..4f5fb55 100644
--- a/doc/themes/weex/source/css/blog.scss
+++ b/doc/themes/weex/source/css/blog.scss
@@ -24,6 +24,9 @@
   .blog-article-inner {
     padding: 0 1.45em;
     margin-bottom: 50px;
+    a{
+      line-height: 120%
+    }
   }
 
   .more-link {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d2b5104f/doc/themes/weex/source/css/media-queries.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/media-queries.scss b/doc/themes/weex/source/css/media-queries.scss
index f31a880..317223c 100644
--- a/doc/themes/weex/source/css/media-queries.scss
+++ b/doc/themes/weex/source/css/media-queries.scss
@@ -89,6 +89,7 @@
   }
 }
 
+
 @media screen and (max-width: 700px) {
   /***********************************************
    * Index

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d2b5104f/doc/themes/weex/source/css/partial/header.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/partial/header.scss b/doc/themes/weex/source/css/partial/header.scss
index f109404..ac02f1a 100644
--- a/doc/themes/weex/source/css/partial/header.scss
+++ b/doc/themes/weex/source/css/partial/header.scss
@@ -3,7 +3,7 @@
 #header {
   width: 100%;
   height: 72px; 
-  padding: 0 65px;
+  padding: 0 40px;
   position: fixed;
   background-color: rgba(255, 255, 255, .95);
   box-shadow: 3px 2px 4px 0 rgba(0,0,0,0.12);
@@ -74,12 +74,12 @@
     }
 
     > li + li {
-      margin-left: 40px;
+      margin-left: 30px;
     }
   }
 
   .info li {
-    margin-left: 40px;
+    margin-left: 30px;
   }
 
   .tools {


[38/50] [abbrv] incubator-weex git commit: Merge branch 'miyalee-patch-1' of https://github.com/miyalee/incubator-weex into dev

Posted by zs...@apache.org.
Merge branch 'miyalee-patch-1' of https://github.com/miyalee/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/4742d5d0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/4742d5d0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/4742d5d0

Branch: refs/heads/master
Commit: 4742d5d098823120d2313016276cc5a27929a822
Parents: 1794375 4bcf7cc
Author: tancy <ro...@gmail.com>
Authored: Mon Jul 10 14:14:18 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Mon Jul 10 14:14:18 2017 +0800

----------------------------------------------------------------------
 doc/source/cn/references/common-style.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------



[14/50] [abbrv] incubator-weex git commit: Merge branch '0.14-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into ios-bugfix-mamaca-0.14-dev-0624

Posted by zs...@apache.org.
Merge branch '0.14-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into ios-bugfix-mamaca-0.14-dev-0624


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

Branch: refs/heads/master
Commit: cfe4659af6fe7fe7c64903329b80ebf1bda504b3
Parents: 24474e2 cbc2e2d
Author: 齐山 <su...@163.com>
Authored: Tue Jun 27 14:01:05 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Tue Jun 27 14:01:05 2017 +0800

----------------------------------------------------------------------
 examples/vue/index.vue                          |   1 +
 examples/vue/modules/websocket.vue              | 116 +++++++++++++++++++
 html5/render/vue/env/weex.js                    |   3 +
 html5/render/vue/modules/index.js               |   2 +
 html5/render/vue/modules/websocket/index.js     |  26 +++++
 html5/render/vue/modules/websocket/websocket.js |  60 ++++++++++
 html5/test/render/vue/modules/websocket.js      |  11 ++
 .../Sources/Component/WXCycleSliderComponent.m  |   7 ++
 8 files changed, 226 insertions(+)
----------------------------------------------------------------------



[17/50] [abbrv] incubator-weex git commit: * [android] add observer for component

Posted by zs...@apache.org.
* [android] add observer for component


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

Branch: refs/heads/master
Commit: a891e2d4696444e6cca23a051f611743a28b5e0b
Parents: d26c46f
Author: sospartan <so...@apache.org>
Authored: Wed Jun 14 17:04:28 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Wed Jun 28 10:18:15 2017 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/ComponentObserver.java | 50 ++++++++++++++++++++
 .../java/com/taobao/weex/WXSDKInstance.java     | 17 +++++++
 .../taobao/weex/ui/component/WXComponent.java   | 14 ++++++
 3 files changed, 81 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/a891e2d4/android/sdk/src/main/java/com/taobao/weex/ComponentObserver.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ComponentObserver.java b/android/sdk/src/main/java/com/taobao/weex/ComponentObserver.java
new file mode 100644
index 0000000..a2bcd09
--- /dev/null
+++ b/android/sdk/src/main/java/com/taobao/weex/ComponentObserver.java
@@ -0,0 +1,50 @@
+/**
+ * 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;
+
+import android.view.View;
+
+import com.taobao.weex.ui.component.WXComponent;
+
+/**
+ * Created by sospartan on 14/06/2017.
+ */
+
+public interface ComponentObserver {
+
+  /**
+   * Called after component is create.
+   * Notice: View is not created at this moment.
+   * @param component
+   */
+  void onCreate(WXComponent component);
+
+  /**
+   * Called before component destroy.
+   * @param component
+   */
+  void onPreDestory(WXComponent component);
+
+  /**
+   * Called when component's view is created
+   * @param component
+   * @param view
+   */
+  void onViewCreated(WXComponent component,View view);
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/a891e2d4/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
index 2db6fb3..47b7f30 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -141,6 +141,8 @@ public class WXSDKInstance implements IWXActivityStateListener,DomContext, View.
 
   private LayoutFinishListener mLayoutFinishListener;
 
+  private ComponentObserver mComponentObserver;
+
 
   /**
    * If anchor is created manually(etc. define a layout xml resource ),
@@ -275,6 +277,21 @@ public class WXSDKInstance implements IWXActivityStateListener,DomContext, View.
     mUserTrackAdapter=WXSDKManager.getInstance().getIWXUserTrackAdapter();
   }
 
+  /**
+   * Set a Observer for component.
+   * This observer will be called in each component, should not doing
+   * anything will impact render performance.
+   *
+   * @param observer
+   */
+  public void setComponentObserver(ComponentObserver observer){
+    mComponentObserver = observer;
+  }
+
+  public ComponentObserver getComponentObserver(){
+    return mComponentObserver;
+  }
+
   public NativeInvokeHelper getNativeInvokeHelper() {
     return mNativeInvokeHelper;
   }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/a891e2d4/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index c0d7c7a..54f822b 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -41,6 +41,7 @@ import android.view.ViewGroup;
 import android.widget.FrameLayout;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.taobao.weex.ComponentObserver;
 import com.taobao.weex.IWXActivityStateListener;
 import com.taobao.weex.WXEnvironment;
 import com.taobao.weex.WXSDKInstance;
@@ -225,6 +226,10 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
     mGestureType = new HashSet<>();
     ++mComponentNum;
     onCreate();
+    ComponentObserver observer;
+    if ((observer = getInstance().getComponentObserver()) != null) {
+      observer.onCreate(this);
+    }
   }
 
   protected void onCreate(){
@@ -902,6 +907,10 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
       }
       if(mHost != null){
         mHost.setId(WXViewUtils.generateViewId());
+        ComponentObserver observer;
+        if ((observer = getInstance().getComponentObserver()) != null) {
+          observer.onViewCreated(this, mHost);
+        }
       }
       onHostViewInitialized(mHost);
     }else{
@@ -1273,6 +1282,11 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
   }
 
   public void destroy() {
+    ComponentObserver observer;
+    if ((observer = getInstance().getComponentObserver()) != null) {
+      observer.onPreDestory(this);
+    }
+
     if (WXEnvironment.isApkDebugable() && !WXUtils.isUiThread()) {
       throw new WXRuntimeException("[WXComponent] destroy can only be called in main thread");
     }


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

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

Branch: refs/heads/master
Commit: 9e57917b91e079fdde54ac53f818d0168cebeeb9
Parents: cfe4659 4567754
Author: tancy <ro...@gmail.com>
Authored: Tue Jun 27 15:04:21 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Tue Jun 27 15:04:21 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/README.md                      | 19 +++++++++-
 .../render/vue/components/slider/slideMixin.js  | 24 +++++++------
 html5/render/vue/core/style.js                  | 31 ++++++++++++----
 html5/render/vue/mixins/scrollable.js           | 38 ++++++++++++--------
 html5/render/vue/utils/style.js                 | 28 +++++++++++++++
 package.json                                    |  2 +-
 packages/weex-vue-render/package.json           |  2 +-
 7 files changed, 108 insertions(+), 36 deletions(-)
----------------------------------------------------------------------



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

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

Branch: refs/heads/master
Commit: beb83d2e3e103746178a59dbd5db8c961375b410
Parents: fbf39cd 8a5e0ee
Author: misakuo <mi...@apache.org>
Authored: Fri Jul 21 15:33:42 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Fri Jul 21 15:33:42 2017 +0800

----------------------------------------------------------------------

----------------------------------------------------------------------



[50/50] [abbrv] incubator-weex git commit: *[doc]fix blog name

Posted by zs...@apache.org.
*[doc]fix blog name


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

Branch: refs/heads/master
Commit: af717020ccb138755b28449780ed940a689caf9e
Parents: 476cc3a
Author: tancy <ro...@gmail.com>
Authored: Fri Jul 28 22:38:06 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Fri Jul 28 22:38:06 2017 +0800

----------------------------------------------------------------------
 doc/source/_posts/arkit.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/af717020/doc/source/_posts/arkit.md
----------------------------------------------------------------------
diff --git a/doc/source/_posts/arkit.md b/doc/source/_posts/arkit.md
index 2b97c6e..5da0e92 100644
--- a/doc/source/_posts/arkit.md
+++ b/doc/source/_posts/arkit.md
@@ -1,4 +1,4 @@
-title: Weex ❤️ iOS 11 系列之一:ARKit初探
+title: Weex ❤️ iOS 11 系列之二:ARKit初探
 type: blog
 date: 2017-06-27 14:32:10
 


[29/50] [abbrv] incubator-weex git commit: *[doc]update site navigation

Posted by zs...@apache.org.
*[doc]update site navigation


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

Branch: refs/heads/master
Commit: af2267e92a90725c1360ccd4b03c9e2ba201ec4c
Parents: 26b638c
Author: tancy <ro...@gmail.com>
Authored: Tue Jul 4 10:48:12 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Tue Jul 4 10:48:12 2017 +0800

----------------------------------------------------------------------
 doc/themes/weex/languages/cn.yml           |  5 +++--
 doc/themes/weex/languages/en.yml           |  3 ++-
 doc/themes/weex/layout/_partial/header.ejs | 23 ++++++++++++-----------
 3 files changed, 17 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/af2267e9/doc/themes/weex/languages/cn.yml
----------------------------------------------------------------------
diff --git a/doc/themes/weex/languages/cn.yml b/doc/themes/weex/languages/cn.yml
index 67d0266..3796d04 100644
--- a/doc/themes/weex/languages/cn.yml
+++ b/doc/themes/weex/languages/cn.yml
@@ -82,14 +82,15 @@ menu:
   references: 手册
   doc: 文档
   faq: FAQ
-  note: 参考
+  note: 说明
   releasenote: 版本说明
   index: 首页
   blog: 博客
   showcase: 示例
   download: 下载
   resources: 资源
-  tools: 工具和服务
+  tools: 工具
+  invovled: 参与
   advanced: 高阶知识
   github: GitHub
   legacy: 旧语法文档

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/af2267e9/doc/themes/weex/languages/en.yml
----------------------------------------------------------------------
diff --git a/doc/themes/weex/languages/en.yml b/doc/themes/weex/languages/en.yml
index dae9090..12cec69 100644
--- a/doc/themes/weex/languages/en.yml
+++ b/doc/themes/weex/languages/en.yml
@@ -89,7 +89,8 @@ menu:
   showcase: Showcase
   download: Download
   resources: Resources
-  tools: Services & Tools
+  tools: Tools
+  invovled: Get Invovled
   advanced: Advanced
   github: GitHub
   legacy: Old Syntax Doc

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/af2267e9/doc/themes/weex/layout/_partial/header.ejs
----------------------------------------------------------------------
diff --git a/doc/themes/weex/layout/_partial/header.ejs b/doc/themes/weex/layout/_partial/header.ejs
index 6922437..4c7d92d 100644
--- a/doc/themes/weex/layout/_partial/header.ejs
+++ b/doc/themes/weex/layout/_partial/header.ejs
@@ -7,17 +7,7 @@
       <ul class="links">
         <li><a href="<%= url_for_lang('guide') %>"><%= _p('menu.guide') %></a></li>
         <li><a href="<%= url_for_lang('references') %>"><%= _p('menu.references') %></a></li>
-        <li class="dropdown">
-          <a href="javascript:;"><%= _p('menu.note') %></a>
-          <ul class="dropdown-menu subnav">
-            <li>
-              <a href="<%= url_for_lang('faq.html') %>"><%= _p('menu.faq') %></a>
-            </li>
-            <li>
-              <a href="<%= url_for_lang('releasenote.html') %>"><%= _p('menu.releasenote') %></a>
-            </li>
-          </ul>
-        </li>
+        <li><a href="<%= url_for_lang('guide/contributing.html') %>"><%= _p('menu.invovled') %></a></li>
         <li class="dropdown">
             <a href="javascript:;"><%= _p('menu.tools') %></a>
             <ul class="dropdown-menu subnav">
@@ -35,6 +25,17 @@
               </li>
             </ul>
         </li>
+        <li class="dropdown">
+          <a href="javascript:;"><%= _p('menu.note') %></a>
+          <ul class="dropdown-menu subnav">
+            <li>
+              <a href="<%= url_for_lang('faq.html') %>"><%= _p('menu.faq') %></a>
+            </li>
+            <li>
+              <a href="<%= url_for_lang('releasenote.html') %>"><%= _p('menu.releasenote') %></a>
+            </li>
+          </ul>
+        </li>
       </ul>
       <ul class="info">
         <li><a href="https://github.com/apache/incubator-weex/" target="_blank"><span class="btn-github iconfont icon-github"></span></a></li>


[41/50] [abbrv] incubator-weex git commit: + [doc] update doc for proguard rules

Posted by zs...@apache.org.
+ [doc] update doc for proguard rules


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

Branch: refs/heads/master
Commit: 3b9b5a54258a753ac3cc5337cb2ae360b4095e6e
Parents: b397774
Author: misakuo <mi...@apache.org>
Authored: Mon Jul 17 10:51:44 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Mon Jul 17 10:51:44 2017 +0800

----------------------------------------------------------------------
 .../cn/references/advanced/extend-to-android.md      | 15 ++++++++++++++-
 doc/source/cn/references/components/image.md         |  2 +-
 doc/source/cn/references/components/list.md          |  6 +-----
 doc/source/references/advanced/extend-to-android.md  | 14 ++++++++++++++
 doc/source/references/components/image.md            |  2 +-
 5 files changed, 31 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3b9b5a54/doc/source/cn/references/advanced/extend-to-android.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/advanced/extend-to-android.md b/doc/source/cn/references/advanced/extend-to-android.md
index e2d654c..61a5bbf 100644
--- a/doc/source/cn/references/advanced/extend-to-android.md
+++ b/doc/source/cn/references/advanced/extend-to-android.md
@@ -185,4 +185,17 @@ public class ImageAdapter implements IWXImgLoaderAdapter {
 	</script>
 	```
 
-注:工程要添加依赖 `compile 'com.squareup.picasso:picasso:2.5.2'`
\ No newline at end of file
+注:工程要添加依赖 `compile 'com.squareup.picasso:picasso:2.5.2'`
+
+#### SDK混淆规则
+若要在APP中使用混淆,请在相应的配置文件中添加如下规则:
+
+```java
+-keep class com.taobao.weex.WXDebugTool{*;}
+-keep class com.taobao.weex.devtools.common.LogUtil{*;}
+-keep public class * extends com.taobao.weex.ui.component.WXComponent{*;}
+-keep public class * extends com.taobao.weex.common.WXModule{*;}
+-keepclassmembers class ** {
+  @com.taobao.weex.ui.component.WXComponentProp public *;
+}
+```
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3b9b5a54/doc/source/cn/references/components/image.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/components/image.md b/doc/source/cn/references/components/image.md
index 7755618..bc675cb 100644
--- a/doc/source/cn/references/components/image.md
+++ b/doc/source/cn/references/components/image.md
@@ -82,7 +82,7 @@ version: 2.1
 
 ## 事件
 
-- `load`: <sup class="api-version">v0.8+</sup>:当图片加载完成时触发。目前在 Android、iOS 上支持,H5 暂不支持。[示例](http://dotwe.org/vue/98ee340348d7cc3e6fbfe68dbaef1eed)
+- `load`: <sup class="api-version">v0.8+</sup>:当图片加载完成时触发。目前在 Android、iOS 上支持,H5 暂不支持。[示例](http://dotwe.org/vue/e291159ac60b35dcd4994638a78d54ad)
 
   - 事件对象
     - `success`: 当图片成功加载时为`true`,否则为`false`

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3b9b5a54/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 be14d06..8e1e63c 100644
--- a/doc/source/cn/references/components/list.md
+++ b/doc/source/cn/references/components/list.md
@@ -62,7 +62,7 @@ version: 2.1
 ## 事件
 
 - `loadmore` <sup class="wx-v">0.5+</sup>:如果列表滚动到底部将会立即触发这个事件,你可以在这个事件的处理函数中加载下一页的列表项。
-- `onscroll` <sup class="wx-v">0.11+</sup>: 列表发生滚动时将会触发该事件,事件的默认抽样率为10px,即列表每滚动10px触发一次,可通过属性`offset-accuracy`设置抽样率。    
+- `scroll` <sup class="wx-v">0.11+</sup>: 列表发生滚动时将会触发该事件,事件的默认抽样率为10px,即列表每滚动10px触发一次,可通过属性`offset-accuracy`设置抽样率。    
 
   事件中 event 对象属性:
   - `contentSize {Object}`:列表的内容尺寸
@@ -74,10 +74,6 @@ version: 2.1
 
   [体验一下](http://dotwe.org/bc445ede8746a31360e3607d210304c5)
 
-- `scroll` <sup class="wx-v">0.12+</sup>:列表滚动时触发这个事件。此事件回调中会给出当前`contentOffset`值。参见 [scroll event demo](http://dotwe.org/vue/9ef0e52bacaa20182a693f2187d851aa)。
-
-  [体验一下](http://dotwe.org/weex/7ba3b6222d912b4b0b4aafb8248ca22f)
-
 - 通用事件
 
   支持所有通用事件:

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3b9b5a54/doc/source/references/advanced/extend-to-android.md
----------------------------------------------------------------------
diff --git a/doc/source/references/advanced/extend-to-android.md b/doc/source/references/advanced/extend-to-android.md
index e10b906..2ec4bc5 100644
--- a/doc/source/references/advanced/extend-to-android.md
+++ b/doc/source/references/advanced/extend-to-android.md
@@ -203,3 +203,17 @@ public class ImageAdapter implements IWXImgLoaderAdapter {
   }
 </script>
 ``` 
+
+#### Proguard Rules
+
+If you want to using proguard to protect your source code, please add the following rules to your profile:
+
+```java
+-keep class com.taobao.weex.WXDebugTool{*;}
+-keep class com.taobao.weex.devtools.common.LogUtil{*;}
+-keep public class * extends com.taobao.weex.ui.component.WXComponent{*;}
+-keep public class * extends com.taobao.weex.common.WXModule{*;}
+-keepclassmembers class ** {
+  @com.taobao.weex.ui.component.WXComponentProp public *;
+}
+```

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3b9b5a54/doc/source/references/components/image.md
----------------------------------------------------------------------
diff --git a/doc/source/references/components/image.md b/doc/source/references/components/image.md
index aac1735..cd8c59b 100644
--- a/doc/source/references/components/image.md
+++ b/doc/source/references/components/image.md
@@ -42,7 +42,7 @@ This component supports no child components.
 
 - support `click` event. Check out [common events](../common-event.html)
 - support `appear` / `disappear` event. Check out [common events](../common-event.html)    
-- `load`<sup class="api-version">v0.8+</sup> event. The `load` event fires on an image has been loaded. Only Android and iOS are supported currently. [example](http://dotwe.org/vue/98ee340348d7cc3e6fbfe68dbaef1eed)    
+- `load`<sup class="api-version">v0.8+</sup> event. The `load` event fires on an image has been loaded. Only Android and iOS are supported currently. [example](http://dotwe.org/vue/e291159ac60b35dcd4994638a78d54ad)    
   - event object
     - `success` : `true` if the image was loaded successfully, otherwise `false`
     - `size` : the original size of image, contains two parameters: `naturalWidth` representing the original width of image in pixels, `naturalHeight` representing the original height of image in pixels. default value. The default value for both parameters is `0`.


[35/50] [abbrv] incubator-weex git commit: Update set-up-env.md

Posted by zs...@apache.org.
Update set-up-env.md

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

Branch: refs/heads/master
Commit: 5fcb08dae572405c147d0268780f0ae9e1ad9c9e
Parents: 87dac9f
Author: Denny <de...@gmail.com>
Authored: Fri Jul 7 20:41:54 2017 -0500
Committer: GitHub <no...@github.com>
Committed: Fri Jul 7 20:41:54 2017 -0500

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


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5fcb08da/doc/source/guide/set-up-env.md
----------------------------------------------------------------------
diff --git a/doc/source/guide/set-up-env.md b/doc/source/guide/set-up-env.md
index 6aac518..f8ac41a 100644
--- a/doc/source/guide/set-up-env.md
+++ b/doc/source/guide/set-up-env.md
@@ -19,7 +19,7 @@ $ nvm install 6.10.0
 $ nvm use 6.10.0
 ```
 
-Node.js comes with npm, which lets you install the Weex Cli.
+Node.js comes with npm, which lets you install the Weex CLI.
 
 Run the following command in a Terminal:
 
@@ -35,13 +35,13 @@ weex-previewer : v1.3.4
 **NOTE: ** If you get an error like "permission error", try installing with `sudo`.
 
 
-Then you can use the weex command to verify that the installation is successful:
+Then you can use the Weex command to verify that the installation is successful:
 
 ![](https://img.alicdn.com/tfs/TB1NBhdQXXXXXXzXFXXXXXXXXXX-712-343.png)
 
 ### Generate a new Weex project
 
-You can use CLI to generate a Weex project called "awesome-project". Run the following command in a Terminal:
+You can use the CLI to generate a Weex project called "awesome-project". Run the following command in a Terminal:
 
 ```bash
 $ weex init awesome-project


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

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

Branch: refs/heads/master
Commit: cf0bff04a750f94d6285d329087e2955b1d1d292
Parents: a53deeb 21a8032
Author: tancy <ro...@gmail.com>
Authored: Fri Jun 30 11:21:51 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Fri Jun 30 11:21:51 2017 +0800

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



[03/50] [abbrv] incubator-weex git commit: + [example] fix bug toast refect input

Posted by zs...@apache.org.
+ [example]  fix bug toast refect  input


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

Branch: refs/heads/master
Commit: 1a0813a653259c1b48e4ec83df6ebf655b8b917d
Parents: f60456c
Author: 齐山 <su...@163.com>
Authored: Sat Jun 24 20:15:52 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Sat Jun 24 20:15:52 2017 +0800

----------------------------------------------------------------------
 test/pages/components/textarea-maxlength.vue | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1a0813a6/test/pages/components/textarea-maxlength.vue
----------------------------------------------------------------------
diff --git a/test/pages/components/textarea-maxlength.vue b/test/pages/components/textarea-maxlength.vue
index 503a59f..6c40601 100644
--- a/test/pages/components/textarea-maxlength.vue
+++ b/test/pages/components/textarea-maxlength.vue
@@ -16,17 +16,17 @@
       oninput (event) {
         this.value = event.value
         console.log('oninput:', event.value)
-        modal.toast({
-          message: `oninput: ${event.value}`,
-          duration: 0.8
-        })
+//        modal.toast({
+//          message: `oninput: ${event.value}`,
+//          duration: 0.8
+//        })
       },
       onchange (event) {
         console.log('onchange:', event.value)
-        modal.toast({
-          message: `onchange: ${event.value}`,
-          duration: 0.8
-        })
+//        modal.toast({
+//          message: `onchange: ${event.value}`,
+//          duration: 0.8
+//        })
       },
     }
   }


[12/50] [abbrv] incubator-weex git commit: + [doc] integrate DocSearch into documentation pages

Posted by zs...@apache.org.
+ [doc] integrate DocSearch into documentation pages


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

Branch: refs/heads/master
Commit: 5b4c93e919fadf674c26d53ad66a5d87129ef7ba
Parents: 4ef5368
Author: parryworld <pa...@gmail.com>
Authored: Mon Jun 26 17:48:19 2017 +0800
Committer: parryworld <pa...@gmail.com>
Committed: Mon Jun 26 17:48:19 2017 +0800

----------------------------------------------------------------------
 doc/_config.yml                                 |  6 +++
 doc/_config_cn.yml                              |  6 +++
 doc/themes/weex/layout/_partial/head.ejs        |  3 ++
 doc/themes/weex/layout/layout.ejs               | 15 +++++++
 doc/themes/weex/source/css/docsearch.min.css    |  2 +
 .../weex/source/css/partial/search-form.scss    | 44 +++++++++++++++++++-
 doc/themes/weex/source/js/docsearch.min.js      |  7 ++++
 7 files changed, 82 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5b4c93e9/doc/_config.yml
----------------------------------------------------------------------
diff --git a/doc/_config.yml b/doc/_config.yml
index 22a35f7..29827e5 100644
--- a/doc/_config.yml
+++ b/doc/_config.yml
@@ -121,6 +121,12 @@ autoprefixer:
   browsers:
     - 'last 5 versions'
 
+# docsearch
+docsearch:
+  enable: true
+  en: weex
+  cn: weex_cn
+
 alias:
   doc/index.html: index.html
   doc/guide.html: guide/index.html

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5b4c93e9/doc/_config_cn.yml
----------------------------------------------------------------------
diff --git a/doc/_config_cn.yml b/doc/_config_cn.yml
index 910d08d..9666d17 100644
--- a/doc/_config_cn.yml
+++ b/doc/_config_cn.yml
@@ -119,6 +119,12 @@ autoprefixer:
   browsers:
     - 'last 5 versions'
 
+# docsearch
+docsearch:
+  enable: true
+  en: weex_io
+  cn: weex_io_cn
+
 alias:
   doc/index.html: index.html
   doc/guide.html: guide/index.html

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5b4c93e9/doc/themes/weex/layout/_partial/head.ejs
----------------------------------------------------------------------
diff --git a/doc/themes/weex/layout/_partial/head.ejs b/doc/themes/weex/layout/_partial/head.ejs
index e3f7962..ccb76f8 100644
--- a/doc/themes/weex/layout/_partial/head.ejs
+++ b/doc/themes/weex/layout/_partial/head.ejs
@@ -31,6 +31,9 @@
   <% if (config.highlight.enable){ %>
     <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
   <% } %>
+  <% if (config.docsearch.enable){ %>
+    <%- css('css/docsearch.min') %>
+  <% } %>
   <%- css('css/style') %>
   <%- css('css/swiper.min') %>
 </head>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5b4c93e9/doc/themes/weex/layout/layout.ejs
----------------------------------------------------------------------
diff --git a/doc/themes/weex/layout/layout.ejs b/doc/themes/weex/layout/layout.ejs
index 0355047..9e5ee1f 100644
--- a/doc/themes/weex/layout/layout.ejs
+++ b/doc/themes/weex/layout/layout.ejs
@@ -13,5 +13,20 @@
   <%- partial('_partial/after-footer') %>
   <%- js('js/reqwest.js') %>
   <%- js('js/common.js') %>
+  <% if (config.docsearch.enable){ %>    
+    <% index_name = page.path.indexOf('cn/') === 0 ? config.docsearch.cn : config.docsearch.en %>
+    <%- js('js/docsearch.min.js') %>
+    <script type="text/javascript">
+    docsearch({
+      appId: '2BE9FVK6FX',
+      apiKey: '4879a7b2e4f3a664bd3b219340657475',
+      indexName: "<%= index_name %>",
+      inputSelector: '#search-input-header',
+      algoliaOptions: {
+        hitsPerPage: 10
+      }
+    });
+    </script>
+  <% } %>
 </body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5b4c93e9/doc/themes/weex/source/css/docsearch.min.css
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/docsearch.min.css b/doc/themes/weex/source/css/docsearch.min.css
new file mode 100644
index 0000000..b16031e
--- /dev/null
+++ b/doc/themes/weex/source/css/docsearch.min.css
@@ -0,0 +1,2 @@
+@charset "UTF-8";
+/*! docsearch 1.5.0 | © Algolia | github.com/algolia/docsearch */.aa-dropdown-menu{background-color:#fff;border:1px solid #333;border-radius:4px;font-size:16px;margin:6px 0 0;padding:4px;text-align:left}.algolia-docsearch-suggestion{color:#333;cursor:pointer;overflow:hidden}.algolia-docsearch-suggestion__secondary{border-top:1px solid #3a3a3a}.algolia-docsearch-suggestion--category-header{display:none;background:#3c4658;color:#fff;font-weight:600;padding:5px 10px;text-align:left}.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header{display:block}.algolia-docsearch-suggestion--highlight{padding:0;color:#0064e1;background:none;font-weight:600}.algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{color:inherit;background:#5b6a85}.aa-cursor .algolia-docsearch-suggestion--content{color:#0064e1}.aa-cursor .algolia-docsearch-suggestion{background:#e7edf3}.algolia-docsearch-suggestion--subcategory-column{display:none;cursor:def
 ault}.algolia-docsearch-suggestion--text{display:none}.algolia-docsearch-suggestion--content{padding:3px 5px;width:100%;border-top:1px solid #d3d3d3}.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--content,.algolia-docsearch-suggestion__secondary .algolia-docsearch-suggestion--content{border-top:0}.algolia-docsearch-suggestion--subcategory-inline{display:inline-block;font-weight:700}.algolia-docsearch-suggestion--subcategory-inline:after{content:" › "}.algolia-docsearch-suggestion--title{display:inline}.algolia-docsearch-footer{border-top:1px solid #606060;text-align:right;font-size:12px;padding:4px 2px 0 0;color:#333}.algolia-docsearch-footer .algolia-docsearch-footer--logo{display:inline-block!important;width:111px;height:15px;text-indent:101%;overflow:hidden;white-space:nowrap;background-image:url("data:image/svg+xml;utf8,<svg viewBox='0 0 130 18' xmlns='http://www.w3.org/2000/svg'><defs><linearGradient x1='-36.868%' y1='134.936%' x2='129.432%' y2='-27.7%' id=
 'a'><stop stop-color='%2300AEFF' offset='0%'/><stop stop-color='%233369E7' offset='100%'/></linearGradient></defs><g fill='none' fill-rule='evenodd'><path d='M59.399.022h13.299a2.372 2.372 0 0 1 2.377 2.364V15.62a2.372 2.372 0 0 1-2.377 2.364H59.399a2.372 2.372 0 0 1-2.377-2.364V2.381A2.368 2.368 0 0 1 59.399.022z' fill='url(%23a)'/><path d='M66.257 4.56c-2.815 0-5.1 2.272-5.1 5.078 0 2.806 2.284 5.072 5.1 5.072 2.815 0 5.1-2.272 5.1-5.078 0-2.806-2.279-5.072-5.1-5.072zm0 8.652c-1.983 0-3.593-1.602-3.593-3.574 0-1.972 1.61-3.574 3.593-3.574 1.983 0 3.593 1.602 3.593 3.574a3.582 3.582 0 0 1-3.593 3.574zm0-6.418v2.664c0 .076.082.131.153.093l2.377-1.226c.055-.027.071-.093.044-.147a2.96 2.96 0 0 0-2.465-1.487c-.055 0-.11.044-.11.104l.001-.001zm-3.33-1.956l-.312-.311a.783.783 0 0 0-1.106 0l-.372.37a.773.773 0 0 0 0 1.101l.307.305c.049.049.121.038.164-.011.181-.245.378-.479.597-.697.225-.223.455-.42.707-.599.055-.033.06-.109.016-.158h-.001zm5.001-.806v-.616a.781.781 0 0 0-.783-.779h-1.824
 a.78.78 0 0 0-.783.779v.632c0 .071.066.12.137.104a5.736 5.736 0 0 1 1.588-.223c.52 0 1.035.071 1.534.207a.106.106 0 0 0 .131-.104z' fill='%23FFF'/><path d='M102.162 13.762c0 1.455-.372 2.517-1.123 3.193-.75.676-1.895 1.013-3.44 1.013-.564 0-1.736-.109-2.673-.316l.345-1.689c.783.163 1.819.207 2.361.207.86 0 1.473-.174 1.84-.523.367-.349.548-.866.548-1.553v-.349a6.374 6.374 0 0 1-.838.316 4.151 4.151 0 0 1-1.194.158 4.515 4.515 0 0 1-1.616-.278 3.385 3.385 0 0 1-1.254-.817 3.744 3.744 0 0 1-.811-1.351c-.192-.539-.29-1.504-.29-2.212 0-.665.104-1.498.307-2.054a3.925 3.925 0 0 1 .904-1.433 4.124 4.124 0 0 1 1.441-.926 5.31 5.31 0 0 1 1.945-.365c.696 0 1.337.087 1.961.191a15.86 15.86 0 0 1 1.588.332v8.456h-.001zm-5.954-4.206c0 .893.197 1.885.592 2.299.394.414.904.621 1.528.621.34 0 .663-.049.964-.142a2.75 2.75 0 0 0 .734-.332v-5.29a8.531 8.531 0 0 0-1.413-.18c-.778-.022-1.369.294-1.786.801-.411.507-.619 1.395-.619 2.223zm16.12 0c0 .719-.104 1.264-.318 1.858a4.389 4.389 0 0 1-.904 1.52c-.3
 89.42-.854.746-1.402.975-.548.229-1.391.36-1.813.36-.422-.005-1.26-.125-1.802-.36a4.088 4.088 0 0 1-1.397-.975 4.486 4.486 0 0 1-.909-1.52 5.037 5.037 0 0 1-.329-1.858c0-.719.099-1.411.318-1.999.219-.588.526-1.09.92-1.509.394-.42.865-.741 1.402-.97a4.547 4.547 0 0 1 1.786-.338 4.69 4.69 0 0 1 1.791.338c.548.229 1.019.55 1.402.97.389.42.69.921.909 1.509.23.588.345 1.28.345 1.999h.001zm-2.191.005c0-.921-.203-1.689-.597-2.223-.394-.539-.948-.806-1.654-.806-.707 0-1.26.267-1.654.806-.394.539-.586 1.302-.586 2.223 0 .932.197 1.558.592 2.098.394.545.948.812 1.654.812.707 0 1.26-.272 1.654-.812.394-.545.592-1.166.592-2.098h-.001zm6.962 4.707c-3.511.016-3.511-2.822-3.511-3.274L113.583.926l2.142-.338v10.003c0 .256 0 1.88 1.375 1.885v1.792h-.001zm3.774 0h-2.153V5.072l2.153-.338v9.534zm-1.079-10.542c.718 0 1.304-.578 1.304-1.291 0-.714-.581-1.291-1.304-1.291-.723 0-1.304.578-1.304 1.291 0 .714.586 1.291 1.304 1.291zm6.431 1.013c.707 0 1.304.087 1.786.262.482.174.871.42 1.156.73.285.311.488.735
 .608 1.182.126.447.186.937.186 1.476v5.481a25.24 25.24 0 0 1-1.495.251c-.668.098-1.419.147-2.251.147a6.829 6.829 0 0 1-1.517-.158 3.213 3.213 0 0 1-1.178-.507 2.455 2.455 0 0 1-.761-.904c-.181-.37-.274-.893-.274-1.438 0-.523.104-.855.307-1.215.208-.36.487-.654.838-.883a3.609 3.609 0 0 1 1.227-.49 7.073 7.073 0 0 1 2.202-.103c.263.027.537.076.833.147v-.349c0-.245-.027-.479-.088-.697a1.486 1.486 0 0 0-.307-.583c-.148-.169-.34-.3-.581-.392a2.536 2.536 0 0 0-.915-.163c-.493 0-.942.06-1.353.131-.411.071-.75.153-1.008.245l-.257-1.749c.268-.093.668-.185 1.183-.278a9.335 9.335 0 0 1 1.66-.142l-.001-.001zm.181 7.731c.657 0 1.145-.038 1.484-.104v-2.168a5.097 5.097 0 0 0-1.978-.104c-.241.033-.46.098-.652.191a1.167 1.167 0 0 0-.466.392c-.121.169-.175.267-.175.523 0 .501.175.79.493.981.323.196.75.289 1.293.289h.001zM84.109 4.794c.707 0 1.304.087 1.786.262.482.174.871.42 1.156.73.29.316.487.735.608 1.182.126.447.186.937.186 1.476v5.481a25.24 25.24 0 0 1-1.495.251c-.668.098-1.419.147-2.251.147a6.8
 29 6.829 0 0 1-1.517-.158 3.213 3.213 0 0 1-1.178-.507 2.455 2.455 0 0 1-.761-.904c-.181-.37-.274-.893-.274-1.438 0-.523.104-.855.307-1.215.208-.36.487-.654.838-.883a3.609 3.609 0 0 1 1.227-.49 7.073 7.073 0 0 1 2.202-.103c.257.027.537.076.833.147v-.349c0-.245-.027-.479-.088-.697a1.486 1.486 0 0 0-.307-.583c-.148-.169-.34-.3-.581-.392a2.536 2.536 0 0 0-.915-.163c-.493 0-.942.06-1.353.131-.411.071-.75.153-1.008.245l-.257-1.749c.268-.093.668-.185 1.183-.278a8.89 8.89 0 0 1 1.66-.142l-.001-.001zm.186 7.736c.657 0 1.145-.038 1.484-.104v-2.168a5.097 5.097 0 0 0-1.978-.104c-.241.033-.46.098-.652.191a1.167 1.167 0 0 0-.466.392c-.121.169-.175.267-.175.523 0 .501.175.79.493.981.318.191.75.289 1.293.289h.001zm8.682 1.738c-3.511.016-3.511-2.822-3.511-3.274L89.461.926l2.142-.338v10.003c0 .256 0 1.88 1.375 1.885v1.792h-.001z' fill='%23182359'/><path d='M5.027 11.025c0 .698-.252 1.246-.757 1.644-.505.397-1.201.596-2.089.596-.888 0-1.615-.138-2.181-.414v-1.214c.358.168.739.301 1.141.397.403.097.77
 8.145 1.125.145.508 0 .884-.097 1.125-.29a.945.945 0 0 0 .363-.779.978.978 0 0 0-.333-.747c-.222-.204-.68-.446-1.375-.725-.716-.29-1.221-.621-1.515-.994-.294-.372-.44-.82-.44-1.343 0-.655.233-1.171.698-1.547.466-.376 1.09-.564 1.875-.564.752 0 1.5.165 2.245.494l-.408 1.047c-.698-.294-1.321-.44-1.869-.44-.415 0-.73.09-.945.271a.89.89 0 0 0-.322.717c0 .204.043.379.129.524.086.145.227.282.424.411.197.129.551.299 1.063.51.577.24.999.464 1.268.671.269.208.466.442.591.704.125.261.188.569.188.924l-.001.002zm3.98 2.24c-.924 0-1.646-.269-2.167-.808-.521-.539-.782-1.281-.782-2.226 0-.97.242-1.733.725-2.288.483-.555 1.148-.833 1.993-.833.784 0 1.404.238 1.858.714.455.476.682 1.132.682 1.966v.682H7.357c.018.577.174 1.02.467 1.329.294.31.707.465 1.241.465.351 0 .678-.033.98-.099a5.1 5.1 0 0 0 .975-.33v1.026a3.865 3.865 0 0 1-.935.312 5.723 5.723 0 0 1-1.08.091l.002-.001zm-.231-5.199c-.401 0-.722.127-.964.381s-.386.625-.432 1.112h2.696c-.007-.491-.125-.862-.354-1.115-.229-.252-.544-.379-.945-.379
 l-.001.001zm7.692 5.092l-.252-.827h-.043c-.286.362-.575.608-.865.739-.29.131-.662.196-1.117.196-.584 0-1.039-.158-1.367-.473-.328-.315-.491-.761-.491-1.337 0-.612.227-1.074.682-1.386.455-.312 1.148-.482 2.079-.51l1.026-.032v-.317c0-.38-.089-.663-.266-.851-.177-.188-.452-.282-.824-.282-.304 0-.596.045-.876.134a6.68 6.68 0 0 0-.806.317l-.408-.902a4.414 4.414 0 0 1 1.058-.384 4.856 4.856 0 0 1 1.085-.132c.756 0 1.326.165 1.711.494.385.329.577.847.577 1.552v4.002h-.902l-.001-.001zm-1.88-.859c.458 0 .826-.128 1.104-.384.278-.256.416-.615.416-1.077v-.516l-.763.032c-.594.021-1.027.121-1.297.298s-.406.448-.406.814c0 .265.079.47.236.615.158.145.394.218.709.218h.001zm7.557-5.189c.254 0 .464.018.628.054l-.124 1.176a2.383 2.383 0 0 0-.559-.064c-.505 0-.914.165-1.227.494-.313.329-.47.757-.47 1.284v3.105h-1.262V7.218h.988l.167 1.047h.064c.197-.354.454-.636.771-.843a1.83 1.83 0 0 1 1.023-.312h.001zm4.125 6.155c-.899 0-1.582-.262-2.049-.787-.467-.525-.701-1.277-.701-2.259 0-.999.244-1.767.733-2.304
 .489-.537 1.195-.806 2.119-.806.627 0 1.191.116 1.692.349l-.381 1.015c-.534-.208-.974-.312-1.321-.312-1.028 0-1.542.682-1.542 2.046 0 .666.128 1.166.384 1.501.256.335.631.502 1.125.502a3.23 3.23 0 0 0 1.595-.419v1.101a2.53 2.53 0 0 1-.722.285 4.356 4.356 0 0 1-.932.086v.002zm8.277-.107h-1.268V9.506c0-.458-.092-.8-.277-1.026-.184-.226-.477-.338-.878-.338-.53 0-.919.158-1.168.475-.249.317-.373.848-.373 1.593v2.949h-1.262V4.801h1.262v2.122c0 .34-.021.704-.064 1.09h.081a1.76 1.76 0 0 1 .717-.666c.306-.158.663-.236 1.072-.236 1.439 0 2.159.725 2.159 2.175v3.873l-.001-.001zm7.649-6.048c.741 0 1.319.269 1.732.806.414.537.62 1.291.62 2.261 0 .974-.209 1.732-.628 2.275-.419.542-1.001.814-1.746.814-.752 0-1.336-.27-1.751-.811h-.086l-.231.704h-.945V4.801h1.262v1.987l-.021.655-.032.553h.054c.401-.591.992-.886 1.772-.886zm-.328 1.031c-.508 0-.875.149-1.098.448-.224.299-.339.799-.346 1.501v.086c0 .723.115 1.247.344 1.571.229.324.603.486 1.123.486.448 0 .787-.177 1.018-.532.231-.354.346-.867.346-1
 .536 0-1.35-.462-2.025-1.386-2.025l-.001.001zm3.244-.924h1.375l1.209 3.368c.183.48.304.931.365 1.354h.043c.032-.197.091-.436.177-.717.086-.281.541-1.616 1.364-4.004h1.364l-2.541 6.73c-.462 1.235-1.232 1.853-2.31 1.853-.279 0-.551-.03-.816-.091v-.999c.19.043.406.064.65.064.609 0 1.037-.353 1.284-1.058l.22-.559-2.385-5.941h.001z' fill='%231D3657'/></g></svg>");background-repeat:no-repeat;background-size:contain;vertical-align:middle;padding:0!important}@media (min-width:568px){.aa-dropdown-menu{min-width:400px}.algolia-docsearch-suggestion--text{display:block;font-size:.9em;padding:2px 0}}@media (min-width:768px){.aa-dropdown-menu{min-width:600px}.algolia-docsearch-suggestion{display:table;width:100%}.algolia-docsearch-suggestion__secondary{border-top:1px solid #606060}.algolia-docsearch-suggestion--subcategory-column{border-right:1px solid #606060;background:#f1f3f5;color:#555;display:table-cell;overflow:hidden;padding:5px 7px 5px 5px;text-align:right;text-overflow:ellipsis;vertical-
 align:top;width:135px;max-width:135px;min-width:135px}.algolia-docsearch-suggestion--subcategory-column-text{display:none}.algolia-docsearch-suggestion__secondary .algolia-docsearch-suggestion--subcategory-column-text{display:block}.algolia-docsearch-suggestion--content{display:table-cell;padding:5px 10px}.algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-docsearch-suggestion--title{font-weight:600}.algolia-docsearch-suggestion--text{display:block;font-weight:400;padding:2px}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5b4c93e9/doc/themes/weex/source/css/partial/search-form.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/partial/search-form.scss b/doc/themes/weex/source/css/partial/search-form.scss
index 1f18e6c..989635c 100644
--- a/doc/themes/weex/source/css/partial/search-form.scss
+++ b/doc/themes/weex/source/css/partial/search-form.scss
@@ -18,6 +18,7 @@
     border-radius: 20px;
     margin: 10px 0;
     -webkit-appearance: none;
+    vertical-align: middle !important;
 
     &:focus {
       border: 1px solid $border-blue;
@@ -30,7 +31,7 @@
     font-size: 14px;
     line-height: 30px;
     top: 50%;
-    margin-top: -14px;
+    margin-top: -13px;
     right: 15px;
     color: $text-gray;
   }
@@ -68,4 +69,45 @@
     color: $text-blue;
   }
 
+}
+
+.algolia-autocomplete {
+  line-height: normal;
+}
+.aa-dropdown-menu {
+  width: 100%;
+  border-color: #999;
+  font-size: 0.9rem;
+  left: auto !important;
+  right: 0px !important;
+  top: 40px !important;
+}
+@media (min-width: 768px) {
+  .aa-dropdown-menu {
+    min-width: 515px;
+  }
+}
+.algolia-docsearch-suggestion {
+  border-color: #ddd;
+}
+.algolia-docsearch-suggestion--content {
+  color: #2c3e50;
+}
+.algolia-docsearch-suggestion--subcategory-column {
+  border-color: #ddd;
+}
+.algolia-docsearch-suggestion--category-header {
+  background: $bg-blue;
+}
+.algolia-docsearch-footer {
+  border-color: #ddd;
+}
+.algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight {
+  background: rgba(255,255,255,0.6);
+}
+.algolia-docsearch-suggestion--highlight {
+  color: $text-blue;
+}
+.aa-cursor .algolia-docsearch-suggestion--content {
+  color: #2c3e50;
 }
\ No newline at end of file


[45/50] [abbrv] incubator-weex git commit: * [doc] update input components document & bubble document

Posted by zs...@apache.org.
* [doc] update input components document & bubble document


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

Branch: refs/heads/master
Commit: b16f36fca70ce60d94b9a5f276873455024cb6af
Parents: 9db8054
Author: tancy <ro...@gmail.com>
Authored: Wed Jul 19 15:12:22 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Fri Jul 21 15:33:06 2017 +0800

----------------------------------------------------------------------
 doc/source/_posts/coreml.md                  | 79 +++++++++++++++++++++++
 doc/source/_posts/hello_world.md             |  3 +-
 doc/source/_posts/test.md                    | 14 ++++
 doc/source/cn/references/bubble.md           |  4 +-
 doc/source/cn/references/components/input.md | 34 +++++-----
 doc/source/cn/v-0.10/references/bubble.md    |  6 +-
 doc/source/references/bubble.md              |  4 +-
 doc/source/references/components/input.md    | 34 +++++-----
 doc/source/v-0.10/references/bubble.md       |  8 +--
 9 files changed, 142 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b16f36fc/doc/source/_posts/coreml.md
----------------------------------------------------------------------
diff --git a/doc/source/_posts/coreml.md b/doc/source/_posts/coreml.md
new file mode 100644
index 0000000..c628fb3
--- /dev/null
+++ b/doc/source/_posts/coreml.md
@@ -0,0 +1,79 @@
+title: Weex ❤️ iOS 11 系列之一:Core ML 初探
+type: blog
+date: 2017-06-21 15:46:44
+
+---
+
+## 背景
+
+WWDC 2017 有一个非常明确的信号:**端上机器学习将会是未来苹果的一个重要发力点,同时开发者的使用门槛在不断降低**。
+
+Core ML 是今年 WWDC 上苹果发布的机器学习框架。它允许开发者在自己开发的 app 上使用机器学习,同时不需要收集用户数据。 有了 Core ML,你可以将自己训练得到的模型,借助苹果提供的转换工具,转化成 Core ML 类型的模型文件,你可以非常轻松地直接实现模型和 app 数据的互通。
+
+WWDC 上展示了一张简单的架构图:
+
+![屏幕快照 2017-06-20 下午8.50.21](https://gw.alicdn.com/tfs/TB1YT5dRVXXXXc1XFXXXXXXXXXX-498-392.png)
+
+最底层的 Accelerate 和 MPS,其实是苹果去年推出的接口,前者可以直接调用 CPU,后者则直接调用 GPU。 Core ML 会自行决定到底使用 CPU 还是 GPU 来进行运算,可以最大程度地利用硬件资源来处理模型数据。
+
+而 Core ML 往上一层则是应用层。Vision 主要负责图像相关的人工智能处理,如人脸识别、面部追踪、文字识别等等;NLP 则提供语义分析相关 API。这部分内容在以前版本的 SDK 中也存在,这次被集成到了新框架当中。好处在于,开发者拥有了更大的自由度。在以前,开发者的 app 调用这些高级接口,对底层的实现细节的掌控力度非常小。现在,你可以通过自定义底层所使用的机器学习模型,从而实现更个性化的需求。
+
+## Weex-ML
+
+Weex 交互视觉能力小结中提到,**Weex 最大的特别之处在于其 native 的能力, 我们要最大化利用 native 的特性, 而不是去模仿它**。
+
+作为本次 iOS 11 的一个重要 native 能力,我也第一时间尝试将 Core ML 透传到了 Weex 上。所有代码和 Demo 都已开源到 [Github](https://github.com/cxfeng1/Weex-ML),后续也会将机器学习相关的Weex 模块统一放到 Weex Market 上。
+
+得益于 Core ML API 的简洁,在 Weex 上使用 Core ML 相关能力变得非常简单:
+
+```javascript
+let imageRecognition = weex.requireModule('imageRecognition')
+imageRecognition.predictWithImage(this.$refs.image.ref, (results)=>{
+  this.results = results.slice(0,5);
+})
+```
+
+通过调用透传的 module `imageRecognition` , 并传入 image 组件的 ref 作为参数,就可以实现图片识别的功能,最后提取出识别结果中 confidence 最高的 5 个结果。
+
+## Demo
+
+### imageRecognition
+
+![](https://gw.alicdn.com/tfs/TB1AmqgRVXXXXcmXFXXXXXXXXXX-240-427.gif)
+
+使用 [Inceptionv3](https://github.com/fchollet/keras/blob/0bb4e0fad5b4bb3743c8a7d03c260b62a35e7045/keras/applications/inception_v3.py) 作为模型,能够高效识别, 该模型已经在 [keras](https://github.com/fchollet/keras) 中被训练好并通过苹果提供的工具转换成 **mlmodel** 文件, 只需拖拽的方式就可以集成到 iOS 开发环境中, 上述 demo 输出了对一张图片分类最大可能的5个预测结果, 对于 Weex 来说,几行代码就能搞定。
+
+
+
+### digitDetect
+
+![](https://gw.alicdn.com/tfs/TB1nZ8_RVXXXXczXVXXXXXXXXXX-240-427.gif)
+
+上述 demo 首先使用 [weex-gcanvas](http://market.dotwe.org/ext/list.htm#6) 插件做了一个简单的绘制板,然后使用 MNIST model 完成了对手写数字的识别。
+
+### faceDetect
+
+![](https://gw.alicdn.com/tfs/TB1lN0_RVXXXXa_XVXXXXXXXXXX-240-427.gif)
+
+这个 demo 没有加载任何 model,使用了 iOS 11 内置的 Vision Framework,顾名思义,Vision 可以让开发者运行计算机视觉相关的任务,它相当于 Core ML 的 High-Level Solution, 它可以做很多事情:
+
+- 脸部识别,会返回一个矩形数组来表示每一个脸部
+- 脸部更精细识别,比如眼睛和鼻子的具体位置、头部的形状等,上述 demo 就是拿到这些信息以后使用 gcanvas 绘制出了面部精细轮廓
+- 图片中的矩形探测
+- 图片中的文字探测
+- 二维码/条形码探测
+- 视频中跟踪移动的物体
+
+## 总结
+
+这次 Core ML 的推出,同时得益于苹果对软硬件的全面掌控,使得从系统级到第三方开发者,都具备了在端上就可以进行机器学习模型处理的能力。所有代码和 Demo 都已上传到 [Github](https://github.com/cxfeng1/Weex-ML),欢迎贡献和交流。
+
+当然在实际研究过程中,也发现了 Core ML 的一些限制:
+
+- 无法在端上进行模型的训练,所有模型必须提前训练好再转换成 Core ML 的格式
+- 无法动态下载和更新模型,对于需要经常重新训练的模型不太友好
+- 目前看只支持监督学习的模型,不支持非监督学习。
+
+Weex 未来在提供更多功能透传的同时,也会继续探索更深层次的结合。
+
+最后,本文是 Weex 和 iOS 11 结合系列的第一篇文章,后续将会有更多有意思的iOS 11 feature (如 ARKit、 drag & drop 等) 和大家一起探讨。
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b16f36fc/doc/source/_posts/hello_world.md
----------------------------------------------------------------------
diff --git a/doc/source/_posts/hello_world.md b/doc/source/_posts/hello_world.md
index 07f4223..803ef70 100644
--- a/doc/source/_posts/hello_world.md
+++ b/doc/source/_posts/hello_world.md
@@ -1,6 +1,7 @@
 title: Hello World
 type: blog
-order: 1
+
 ---
 
 # Hello world 
+

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b16f36fc/doc/source/_posts/test.md
----------------------------------------------------------------------
diff --git a/doc/source/_posts/test.md b/doc/source/_posts/test.md
new file mode 100644
index 0000000..afaa8ec
--- /dev/null
+++ b/doc/source/_posts/test.md
@@ -0,0 +1,14 @@
+title: test
+type: blog
+
+---
+
+
+# test
+
+asdfadfasdfasdfadfadsf
+asdfasdfadsf
+adsfadsfadsf
+
+## sdfasdfasdf
+sdfsdfsdf
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b16f36fc/doc/source/cn/references/bubble.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/bubble.md b/doc/source/cn/references/bubble.md
index 4b63cad..6f8f0ed 100644
--- a/doc/source/cn/references/bubble.md
+++ b/doc/source/cn/references/bubble.md
@@ -11,7 +11,7 @@ Weex 2.0 实现了 W3C 标准的事件冒泡机制。
 
 ### 使用
 
-```javascript
+```html
 <template>
   <div class="root" @click="rootClick" bubble="true">
     <text style="font-size: 40px;">{{rootText}}</text>
@@ -81,7 +81,7 @@ Weex 2.0 实现了 W3C 标准的事件冒泡机制。
 
 在事件处理函数中,可以使用 `e.stopPropagation()` 方法,来阻止本次事件向上的传递过程。注意,`e.stopPropagation()` 与 `bubble="true"` 不同,前者只会影响当前元素以及父元素的传播,不会影响子元素的传播;后者是为了版本兼容而增加的开关机制,会全局关闭或者开启冒泡机制,两者可以共同存在使用,如下:
 
-```javascript
+```html
 <template>
   <div class="root" @click="rootClick" bubble="true">
     <text style="font-size: 40px;">{{rootText}}</text>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b16f36fc/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 a0aecf8..3cf83fd 100644
--- a/doc/source/cn/references/components/input.md
+++ b/doc/source/cn/references/components/input.md
@@ -135,13 +135,15 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
       <text style="font-size: 40px">oninput: {{txtInput}}</text>
       <text style="font-size: 40px">onchange: {{txtChange}}</text>
       <text style="font-size: 40px">onreturntype: {{txtReturnType}}</text>
+      <text style="font-size: 40px">selection: {{txtSelection}}</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"/>
+        <input type="text" placeholder="Input Text" class="input" :autofocus=true value="" @change="onchange" @input="oninput"/>
       </div>
 
       <div>
@@ -181,6 +183,13 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
 
       <div>
         <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = number</text>
+        </div>
+        <input type="number" placeholder="Input number" 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"/>
@@ -248,6 +257,7 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
         </div>
         <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
           <text class="button" value="setRange" type="primary" @click="setRange"></text>
+          <text class="button" value="getSelectionRange" type="primary" @click="getSelectionRange"></text>
         </div>
         <input type="text"  ref="inputselection" placeholder="please input" value="123456789"  class="input" @change="onchange" @return = "onreturn" @input="oninput"/>
       </div>
@@ -280,7 +290,6 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
 </style>
 
 <script>
-  const modal = weex.requireModule('modal')
   module.exports = {
     data: function () {
       return {
@@ -320,23 +329,16 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
         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
-        })
+      getSelectionRange: function() {
+        console.log(this.$refs["inputselection"]);
+        var self = this;
+        this.$refs["inputselection"].getSelectionRange(function(e) {
+          self.txtSelection = e.selectionStart +'-' + e.selectionEnd;
+        });
       }
     }
   };
 </script>
 ```
 
-[体验一下](http://dotwe.org/vue/dd83d941d2364f2849e45dc3c5d91ab4)
+[体验一下](http://dotwe.org/vue/3470e4d0194f3879a72d38e2ab02cc9f)

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b16f36fc/doc/source/cn/v-0.10/references/bubble.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/references/bubble.md b/doc/source/cn/v-0.10/references/bubble.md
index cb25e05..74b7e98 100644
--- a/doc/source/cn/v-0.10/references/bubble.md
+++ b/doc/source/cn/v-0.10/references/bubble.md
@@ -2,7 +2,7 @@
 title: 事件冒泡 
 type: references
 order: 1.3
-version: 2.1
+version: 0.10
 ---
 
 # 事件冒泡 <span class="api-version">v0.13+</span>
@@ -11,7 +11,7 @@ Weex 1.0 实现了 W3C 标准的事件冒泡机制。
 
 ### 使用
 
-```javascript
+```html
 <template>
   <div class="root" onclick="rootClick" bubble="true">
     <div>
@@ -83,7 +83,7 @@ Weex 1.0 实现了 W3C 标准的事件冒泡机制。
 
 在事件处理函数中,可以使用 `e.stopPropagation()` 方法,来阻止本次事件向上的传递过程。注意,`e.stopPropagation()` 与 `bubble="true"` 不同,前者只会影响当前元素以及父元素的传播,不会影响子元素的传播;后者是为了版本兼容而增加的开关机制,会全局关闭或者开启冒泡机制,两者可以共同存在使用,如下:
 
-```javascript
+```html
 <template>
   <div class="root" onclick="rootClick" bubble="true">
     <div>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b16f36fc/doc/source/references/bubble.md
----------------------------------------------------------------------
diff --git a/doc/source/references/bubble.md b/doc/source/references/bubble.md
index c66d9b9..8d2470c 100644
--- a/doc/source/references/bubble.md
+++ b/doc/source/references/bubble.md
@@ -11,7 +11,7 @@ Weex 2.0 implements the W3C standard event bubbling mechanism.
 
 ### Usage
 
-```javascript
+```html
 <template>
   <div class="root" @click="rootClick" bubble="true">
     <text style="font-size: 40px;">{{rootText}}</text>
@@ -81,7 +81,7 @@ One thing should be noticed: **For compatibility with previous versions, Weex do
 
 In the event handler function, you can use the `e.stopPropagation()` method to prevent the event from escalating. Note that `e.stopPropagation()` differs from `bubble = "true"`, which affects only the current elements and the propagation of parent elements, without affecting the propagation of child elements; the latter is a switching mechanism that is added for compatibility, Will be a global shutdown or open the bubble mechanism, the two can co-exist, as follows:
 
-```javascript
+```html
 <template>
   <div class="root" @click="rootClick" bubble="true">
     <text style="font-size: 40px;">{{rootText}}</text>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b16f36fc/doc/source/references/components/input.md
----------------------------------------------------------------------
diff --git a/doc/source/references/components/input.md b/doc/source/references/components/input.md
index 8eea2ad..fdd4d0a 100644
--- a/doc/source/references/components/input.md
+++ b/doc/source/references/components/input.md
@@ -113,13 +113,15 @@ does not support the common-event 'click'. Please listen to the 'input' or '
       <text style="font-size: 40px">oninput: {{txtInput}}</text>
       <text style="font-size: 40px">onchange: {{txtChange}}</text>
       <text style="font-size: 40px">onreturntype: {{txtReturnType}}</text>
+      <text style="font-size: 40px">selection: {{txtSelection}}</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"/>
+        <input type="text" placeholder="Input Text" class="input" :autofocus=true value="" @change="onchange" @input="oninput"/>
       </div>
 
       <div>
@@ -159,6 +161,13 @@ does not support the common-event 'click'. Please listen to the 'input' or '
 
       <div>
         <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = number</text>
+        </div>
+        <input type="number" placeholder="Input number" 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"/>
@@ -226,6 +235,7 @@ does not support the common-event 'click'. Please listen to the 'input' or '
         </div>
         <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
           <text class="button" value="setRange" type="primary" @click="setRange"></text>
+          <text class="button" value="getSelectionRange" type="primary" @click="getSelectionRange"></text>
         </div>
         <input type="text"  ref="inputselection" placeholder="please input" value="123456789"  class="input" @change="onchange" @return = "onreturn" @input="oninput"/>
       </div>
@@ -258,7 +268,6 @@ does not support the common-event 'click'. Please listen to the 'input' or '
 </style>
 
 <script>
-  const modal = weex.requireModule('modal')
   module.exports = {
     data: function () {
       return {
@@ -298,23 +307,16 @@ does not support the common-event 'click'. Please listen to the 'input' or '
         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
-        })
+      getSelectionRange: function() {
+        console.log(this.$refs["inputselection"]);
+        var self = this;
+        this.$refs["inputselection"].getSelectionRange(function(e) {
+          self.txtSelection = e.selectionStart +'-' + e.selectionEnd;
+        });
       }
     }
   };
 </script>
 ```
 
-[try it](http://dotwe.org/vue/dd83d941d2364f2849e45dc3c5d91ab4)
+[try it](http://dotwe.org/vue/3470e4d0194f3879a72d38e2ab02cc9f)

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b16f36fc/doc/source/v-0.10/references/bubble.md
----------------------------------------------------------------------
diff --git a/doc/source/v-0.10/references/bubble.md b/doc/source/v-0.10/references/bubble.md
index 849ab36..ba59a90 100644
--- a/doc/source/v-0.10/references/bubble.md
+++ b/doc/source/v-0.10/references/bubble.md
@@ -2,16 +2,16 @@
 title: Event Bubble 
 type: references
 order: 1.3
-version: 2.1
+version: 0.10
 ---
 
 # Event Bubble <span class="api-version">v0.13+</span>
 
-Weex 2.0 implements the W3C standard event bubbling mechanism.
+Weex 1.0 implements the W3C standard event bubbling mechanism.
 
 ### Usage
 
-```javascript
+```html
 <template>
   <div class="root" onclick="rootClick" bubble="true">
     <div>
@@ -83,7 +83,7 @@ One thing should be noticed: **For compatibility with previous versions, Weex do
 
 In the event handler function, you can use the `e.stopPropagation()` method to prevent the event from escalating. Note that `e.stopPropagation()` differs from `bubble = "true"`, which affects only the current elements and the propagation of parent elements, without affecting the propagation of child elements; the latter is a switching mechanism that is added for compatibility, Will be a global shutdown or open the bubble mechanism, the two can co-exist, as follows:
 
-```javascript
+```html
 <template>
   <div class="root" onclick="rootClick" bubble="true">
     <div>


[36/50] [abbrv] incubator-weex git commit: Merge branch 'patch-1' of https://github.com/lukaszb/incubator-weex into dev

Posted by zs...@apache.org.
Merge branch 'patch-1' of https://github.com/lukaszb/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/a4931a68
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/a4931a68
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/a4931a68

Branch: refs/heads/master
Commit: a4931a68abedede5ef0fb62f4ad578c8f0273b52
Parents: 515b003 3d4a52d
Author: tancy <ro...@gmail.com>
Authored: Mon Jul 10 11:10:56 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Mon Jul 10 11:10:56 2017 +0800

----------------------------------------------------------------------
 doc/source/guide/intro/write-once.md | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------



[19/50] [abbrv] incubator-weex git commit: Merge branch '0.14-dev' of gitlab.alibaba-inc.com:weex/weex into 0.14-dev

Posted by zs...@apache.org.
Merge branch '0.14-dev' of gitlab.alibaba-inc.com:weex/weex 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/24fbad2f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/24fbad2f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/24fbad2f

Branch: refs/heads/master
Commit: 24fbad2f0e0735427c1cb2bf87f68f2a50c094ad
Parents: 5d75a6f 25a6dbd
Author: sospartan <so...@apache.org>
Authored: Wed Jun 28 10:24:00 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Wed Jun 28 10:24:00 2017 +0800

----------------------------------------------------------------------
 android/sdk/libs/armeabi/libweexjsc.so          | Bin 7575352 -> 7570504 bytes
 android/sdk/libs/x86/libweexjsc.so              | Bin 12130116 -> 12121924 bytes
 .../ui/component/list/BasicListComponent.java   |  16 ++++++++++------
 3 files changed, 10 insertions(+), 6 deletions(-)
----------------------------------------------------------------------



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

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

Branch: refs/heads/master
Commit: 44e959a418737511c3215fcabb5a121cecc3f7f1
Parents: 2510206 24fbad2
Author: sospartan <so...@apache.org>
Authored: Wed Jun 28 16:44:48 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Wed Jun 28 16:44:48 2017 +0800

----------------------------------------------------------------------
 android/sdk/libs/armeabi/libweexjsc.so          | Bin 7575352 -> 7570504 bytes
 android/sdk/libs/x86/libweexjsc.so              | Bin 12130116 -> 12121924 bytes
 .../java/com/taobao/weex/ComponentObserver.java |  50 ++++++++
 .../java/com/taobao/weex/WXSDKInstance.java     |  16 +++
 .../taobao/weex/ui/component/WXComponent.java   |  14 +++
 .../ui/component/list/BasicListComponent.java   |  16 ++-
 examples/vue/index.vue                          |   1 +
 examples/vue/modules/websocket.vue              | 116 +++++++++++++++++++
 html5/render/vue/README.md                      |  19 ++-
 html5/render/vue/components/input.js            |  52 +++++++--
 .../components/scrollable/loading-indicator.js  |  11 +-
 .../render/vue/components/slider/slideMixin.js  |  24 ++--
 html5/render/vue/core/style.js                  |  31 +++--
 html5/render/vue/env/weex.js                    |   3 +
 html5/render/vue/mixins/scrollable.js           |  38 +++---
 html5/render/vue/modules/index.js               |   2 +
 html5/render/vue/modules/websocket/index.js     |  26 +++++
 html5/render/vue/modules/websocket/websocket.js |  60 ++++++++++
 html5/render/vue/utils/style.js                 |  44 +++++++
 html5/test/render/vue/modules/websocket.js      |  11 ++
 .../Sources/Component/WXCycleSliderComponent.m  |   7 ++
 package.json                                    |   2 +-
 packages/weex-vue-render/package.json           |   2 +-
 test/pages/components/textarea-maxlength.vue    |  10 +-
 .../components/textarea-maxlength.test.js       |   6 +-
 test/scripts/util.js                            |   2 +-
 26 files changed, 491 insertions(+), 72 deletions(-)
----------------------------------------------------------------------



[13/50] [abbrv] incubator-weex git commit: [weex-vue-render] add some features including:

Posted by zs...@apache.org.
[weex-vue-render] add some features including:

+ [html5] add 'loadmore' event to horizontal scroller.

* [html5] fix slider's autoplay.

+ [html5] release v0.11.51 @notdanger.

* [html5] fix slider auto-play

+ [html5] support pseudo class.


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

Branch: refs/heads/master
Commit: 456775451532bba975612e0a8bab08067ced502c
Parents: 06232f2
Author: MrRaindrop <te...@gmail.com>
Authored: Fri Jun 23 14:52:50 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Mon Jun 26 18:00:16 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/README.md                      | 19 +++++++++-
 .../render/vue/components/slider/slideMixin.js  | 24 +++++++------
 html5/render/vue/core/style.js                  | 31 ++++++++++++----
 html5/render/vue/mixins/scrollable.js           | 38 ++++++++++++--------
 html5/render/vue/utils/style.js                 | 28 +++++++++++++++
 package.json                                    |  2 +-
 packages/weex-vue-render/package.json           |  2 +-
 7 files changed, 108 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/45677545/html5/render/vue/README.md
----------------------------------------------------------------------
diff --git a/html5/render/vue/README.md b/html5/render/vue/README.md
index e2f39d0..f0d3ba8 100644
--- a/html5/render/vue/README.md
+++ b/html5/render/vue/README.md
@@ -27,7 +27,24 @@ If you perfer cdn way, and use script tag to import a script link, just import i
 
 ## 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.
+NOTE: you should inject `$processStyle` to preprocess vnode's style in vue-loader's postTransformNode hook.
+
+```javascript
+vue: {
+  /**
+    * important! should use postTransformNode to add $processStyle for
+    * inline style prefixing.
+    */
+  compilerModules: [
+    {
+      postTransformNode: el => {
+        el.staticStyle = `$processStyle(${el.staticStyle})`
+        el.styleBinding = `$processStyle(${el.styleBinding})`
+      }
+    }
+  ],
+}
+```
 
 ## component -> dom map
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/45677545/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 da2c848..73960e5 100644
--- a/html5/render/vue/components/slider/slideMixin.js
+++ b/html5/render/vue/components/slider/slideMixin.js
@@ -48,7 +48,6 @@ export default {
   },
 
   updated () {
-    this._startAutoPlay()
     const children = this.$children
     const len = children && children.length
     if (children && len > 0) {
@@ -69,7 +68,6 @@ export default {
 
   mounted () {
     this._getWrapperSize()
-    this._startAutoPlay()
     this._slideTo(this.currentIndex)
     fireLazyload(this.$el, true)
   },
@@ -79,8 +77,8 @@ export default {
       const wrapper = this.$refs.wrapper
       if (wrapper) {
         const rect = wrapper.getBoundingClientRect()
-        this.wrapperWidth = rect.width
-        this.wrapperHeight = rect.height
+        this._wrapperWidth = rect.width
+        this._wrapperHeight = rect.height
       }
     },
 
@@ -198,7 +196,7 @@ export default {
         const match = translate && translate.match(/translate[^(]+\(([+-\d.]+)/)
         const innerX = match && match[1] || 0
         const dist = innerX - this.innerOffset
-        this.innerOffset += step * this.wrapperWidth
+        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`
@@ -341,7 +339,7 @@ export default {
       }
 
       node._inShow = true
-      const translateX = index * this.wrapperWidth - this.innerOffset
+      const translateX = index * this._wrapperWidth - this.innerOffset
       addTransform(node, {
         translate: `translate3d(${translateX}px, 0px, 0px)`
       })
@@ -439,7 +437,7 @@ export default {
       origNode._inShow = true
       const transObj = getTransformObj(clone)
       transObj.translate = transObj.translate.replace(/[+-\d.]+[pw]x/, ($0) => {
-        return pos * this.wrapperWidth - this.innerOffset + 'px'
+        return pos * this._wrapperWidth - this.innerOffset + 'px'
       })
       this._copyStyle(clone, origNode, styleProps, transObj)
       this._removeClone(clone)
@@ -456,6 +454,10 @@ export default {
         this.currentIndex = 0
         return
       }
+
+      // clear autoPlay timer (and restart after updated hook).
+      this._startAutoPlay()
+
       /**
        * clean nodes. replace current node with non-cloned node.
        * set current index to the new index.
@@ -505,7 +507,7 @@ export default {
         }
         // calculate position offsets according to neighbor scales.
         if (Math.abs(i) === 1) {
-          const dist = ((this.wrapperWidth - this._neighborWidth * this.neighborScale) / 2
+          const dist = ((this._wrapperWidth - this._neighborWidth * this.neighborScale) / 2
             + this.neighborSpace * weex.config.env.scale) / this.neighborScale
           translateX = -i * dist
         }
@@ -582,7 +584,7 @@ export default {
           this._clearNodesOffset()
         }
         this._emitScrollEvent('scroll', {
-          offsetXRatio: offsetX / this.wrapperWidth
+          offsetXRatio: offsetX / this._wrapperWidth
         })
         inner.style.transform = `translate3d(${this.innerOffset + offsetX}px, 0, 0)`
         inner.style.webkitTransform = `translate3d(${this.innerOffset + offsetX}px, 0, 0)`
@@ -602,7 +604,7 @@ export default {
       if (inner) {
         this._nodesOffsetCleared = false
         // TODO: test the velocity if it's less than 0.2.
-        const reset = Math.abs(offsetX / this.wrapperWidth) < 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, true)
@@ -623,7 +625,7 @@ export default {
       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 r = Math.abs(offset / this._wrapperWidth)
       const throttledScroll = () => {
         if (++i > cnt) {
           return callback && callback.call(this)

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/45677545/html5/render/vue/core/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/core/style.js b/html5/render/vue/core/style.js
index 063c1e5..7230b74 100644
--- a/html5/render/vue/core/style.js
+++ b/html5/render/vue/core/style.js
@@ -26,11 +26,13 @@ import {
   autoPrefix,
   isArray,
   getParentScroller,
-  supportSticky
+  supportSticky,
+  appendCss
 } from '../utils'
 import { tagBegin, tagEnd } from '../utils/perf'
 /* istanbul ignore next */
 
+let pseudoId = 0
 /**
  * get scoped class style map from stylesheets in <head>.
  */
@@ -55,6 +57,9 @@ export function getHeadStyleMap () {
          */
         return pre
       }
+      if (styleSheet.ownerNode.id.match(/weex-pseudo-\d+/)) {
+        return pre
+      }
       const strArr = trimComment(styleSheet.ownerNode.textContent.trim()).split(/}/)
       const len = strArr.length
       const rules = []
@@ -65,7 +70,8 @@ export function getHeadStyleMap () {
         }
         /**
          * should match these cases:
-         * .a[data-v-xxx] { color: red }
+         * .a[data-v-xxx] { color: red; }
+         * .a[data-v-xxx]:active { color: green; }
          * .a[data-v-xxx], .b[data-v-xxx] { color: red; }
          *
          * should not match these cases:
@@ -92,6 +98,10 @@ export function getHeadStyleMap () {
       }
       Array.from(rules).forEach(rule => {
         const selector = rule.selectorText || ''
+        let isPseudo = false
+        if (selector.match(/:(?:active|focus|enabled|disabled)/)) {
+          isPseudo = true
+        }
         const styleObj = trimComment(rule.cssText).split(';')
           .reduce((styleObj, statement) => {
             statement = statement.trim()
@@ -101,12 +111,19 @@ export function getHeadStyleMap () {
             }
             return styleObj
           }, {})
-        const res = pre[selector]
+        if (isPseudo) {
+          const txt = Object.keys(styleObj).reduce(function (pre, cur) {
+            return pre + `${cur}:${styleObj[cur]}!important;`
+          }, '')
+          appendCss(`${selector}{${txt}}`, `weex-pseudo-${pseudoId++}`)
+        }
+        const objMap = !isPseudo ? pre : pre.pseudo
+        const res = objMap[selector]
         if (!res) {
-          pre[selector] = styleObj
+          objMap[selector] = styleObj
         }
         else {
-          extend(pre[selector], styleObj)
+          extend(objMap[selector], styleObj)
         }
       })
       /**
@@ -116,7 +133,7 @@ export function getHeadStyleMap () {
        */
       needToRemoveStyleSheetNodes.push(styleSheet.ownerNode)
       return pre
-    }, {})
+    }, { pseudo: {}})
   if (!window._no_remove_style_sheets) {
     needToRemoveStyleSheetNodes.forEach(function (node) {
       node.parentNode.removeChild(node)
@@ -301,7 +318,7 @@ export function processSticky (context) {
     return
   }
   // current only support list and vertical scroller.
-  if (container.scrollDirection === 'horizontal') {
+  if (context.scrollDirection === 'horizontal') {
     return
   }
   const stickyChildren = context._stickyChildren

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/45677545/html5/render/vue/mixins/scrollable.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/mixins/scrollable.js b/html5/render/vue/mixins/scrollable.js
index 011c8e0..4f7b03c 100644
--- a/html5/render/vue/mixins/scrollable.js
+++ b/html5/render/vue/mixins/scrollable.js
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import { getThrottleLazyload, throttle } from '../utils'
+import { getThrottleLazyload, throttle, getRangeWidth } from '../utils'
 import { processSticky } from '../core'
 
 const DEFAULT_OFFSET_ACCURACY = 10
@@ -97,8 +97,20 @@ export default {
       const wrapper = this.$refs.wrapper
       if (wrapper) {
         const rect = wrapper.getBoundingClientRect()
-        this.wrapperWidth = rect.width
-        this.wrapperHeight = rect.height
+        this._wrapperWidth = rect.width
+        this._wrapperHeight = rect.height
+      }
+      const inner = this.$refs.inner
+      const children = inner && inner.children
+      if (inner) {
+        const rect = inner.getBoundingClientRect()
+        this._innerWidth = rect.width
+        this._innerHeight = rect.height
+      }
+      // inner width is always the viewport width somehow in horizontal
+      // scoller, therefore the inner width should be reclaculated.
+      if (this.scrollDirection === 'horizontal' && children) {
+        this._innerWidth = getRangeWidth(inner)
       }
     },
 
@@ -115,19 +127,13 @@ export default {
       // fire loadmore event.
       const inner = this.$refs.inner
       if (inner) {
-        const innerRect = inner.getBoundingClientRect()
         const innerLength = this.scrollDirection === 'horizontal'
-          ? innerRect.width
-          : innerRect.height
-        // hscroller not support loadmore event yet.
-        if (this.scrollDirection === 'horizontal') {
-          return
-        }
+          ? this._innerWidth
+          : this._innerHeight
         if (!this._innerLength) {
           this._innerLength = innerLength
         }
         if (this._innerLength !== innerLength) {
-          console.log(this._innerLength, innerLength)
           this._innerLength = innerLength
           this._loadmoreReset = true
         }
@@ -149,13 +155,15 @@ export default {
       const offset = parseInt(this.loadmoreoffset) * weex.config.env.scale
 
       if (wrapper && inner) {
-        const innerRect = inner.getBoundingClientRect()
-        const wrapperRect = wrapper.getBoundingClientRect()
+        // const innerRect = inner.getBoundingClientRect()
+        // const wrapperRect = wrapper.getBoundingClientRect()
         const key = this.scrollDirection === 'horizontal'
           ? 'width'
           : 'height'
-        const innerLength = innerRect[key]
-        const wrapperLength = wrapperRect[key]
+        // const innerLength = innerRect[key]
+        // const wrapperLength = wrapperRect[key]
+        const innerLength = this[`_inner${key[0].toUpperCase()}${key.substr(1)}`]
+        const wrapperLength = this[`_wrapper${key[0].toUpperCase()}${key.substr(1)}`]
         const scrollOffset = this.scrollDirection === 'horizontal'
           ? wrapper.scrollLeft
           : wrapper.scrollTop

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/45677545/html5/render/vue/utils/style.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/utils/style.js b/html5/render/vue/utils/style.js
index a9f7ef1..0d74721 100644
--- a/html5/render/vue/utils/style.js
+++ b/html5/render/vue/utils/style.js
@@ -303,3 +303,31 @@ export function getStyleSheetById (id?: string) {
     }
   }
 }
+
+function getChildrenTotalWidth (children) {
+  const len = children.length
+  let total = 0
+  for (let i = 0; i < len; i++) {
+    total += children[i].getBoundingClientRect().width
+  }
+  return total
+}
+/**
+ * get total content width of the element.
+ * @param {HTMLElement} elm
+ */
+export function getRangeWidth (elm: HTMLElement) {
+  const children = elm.children
+  if (!children) {
+    return elm.getBoundingClientRect().width
+  }
+  if (!Range) {
+    return getChildrenTotalWidth(children)
+  }
+  const range = document.createRange()
+  if (!range.selectNodeContents) {
+    return getChildrenTotalWidth(children)
+  }
+  range.selectNodeContents(elm)
+  return range.getBoundingClientRect().width
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/45677545/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 381190f..0a9e951 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
   "subversion": {
     "browser": "0.5.0",
     "framework": "0.20.6",
-    "vue-render": "0.11.50",
+    "vue-render": "0.11.51",
     "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/45677545/packages/weex-vue-render/package.json
----------------------------------------------------------------------
diff --git a/packages/weex-vue-render/package.json b/packages/weex-vue-render/package.json
index e97525f..80d6443 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.50",
+  "version": "0.11.51",
   "description": "Weex built-in components for Vue 2.x.",
   "license": "Apache-2.0",
   "main": "dist/index.js",


[43/50] [abbrv] incubator-weex git commit: *[doc] add color-name file color block

Posted by zs...@apache.org.
*[doc] add color-name file color block


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

Branch: refs/heads/master
Commit: 8a5e0ee7819e2c085b17fafc9b2ff6b86a3b4b46
Parents: bf87411
Author: tancy <ro...@gmail.com>
Authored: Wed Jul 19 17:15:49 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Wed Jul 19 17:15:49 2017 +0800

----------------------------------------------------------------------
 doc/themes/weex/source/js/common.js | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8a5e0ee7/doc/themes/weex/source/js/common.js
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/js/common.js b/doc/themes/weex/source/js/common.js
index 3e92ba4..c3f6631 100644
--- a/doc/themes/weex/source/js/common.js
+++ b/doc/themes/weex/source/js/common.js
@@ -105,6 +105,28 @@
 
   initPickLang()
 
+ /**
+   * color name
+   */
+
+  function colorname(){
+    if(location.pathname.indexOf('references/color-names.html')>0){
+      var t = document.querySelectorAll("table");
+      Array.prototype.forEach.call(t, function (table) {
+          var d = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
+          Array.prototype.forEach.call(d, function (tr) {
+            var r = tr.getElementsByTagName("td")[1];
+            r.innerHTML ='<span style="background:'+ r.innerHTML +';color:'+ r.innerHTML +'"> yy </span>  ' + r.innerHTML
+          });
+
+      });
+    }
+  }
+
+  colorname();
+
+
+
   /**
    *  Search
    */


[23/50] [abbrv] incubator-weex git commit: * [doc] update title style

Posted by zs...@apache.org.
* [doc] update title style


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

Branch: refs/heads/master
Commit: 825c6e308effbb652c29369ab946e13754a6929d
Parents: 2510206
Author: tancy <ro...@gmail.com>
Authored: Fri Jun 30 11:08:30 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Fri Jun 30 11:08:30 2017 +0800

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


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/825c6e30/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 e1e744b..7d8614c 100644
--- a/doc/themes/weex/source/css/index.scss
+++ b/doc/themes/weex/source/css/index.scss
@@ -124,6 +124,7 @@
       top: 70px;
       left: 50%;
       margin-left: -250px;
+      line-height: 120%;
     }
 
     .btn-group {
@@ -226,6 +227,7 @@
   .left-text h2 {
     width: 300px;
     text-align: left;
+    line-height: 120%;
   }
 
   .left-text p {


[37/50] [abbrv] incubator-weex git commit: Merge branch 'master' of https://github.com/dennythecoder/incubator-weex into dev

Posted by zs...@apache.org.
Merge branch 'master' of https://github.com/dennythecoder/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/17943752
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/17943752
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/17943752

Branch: refs/heads/master
Commit: 179437521b97d2a2a703edb8910763f3d302e15f
Parents: a4931a6 5fcb08d
Author: tancy <ro...@gmail.com>
Authored: Mon Jul 10 11:24:48 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Mon Jul 10 11:24:48 2017 +0800

----------------------------------------------------------------------
 doc/source/guide/set-up-env.md | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)
----------------------------------------------------------------------



[20/50] [abbrv] incubator-weex git commit: * [doc] update article style

Posted by zs...@apache.org.
* [doc] update article style


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

Branch: refs/heads/master
Commit: 2510206f443d9f7984fa532e6c5a6c867354fc1c
Parents: ad732d2
Author: tancy <ro...@gmail.com>
Authored: Wed Jun 28 10:42:29 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Wed Jun 28 10:42:29 2017 +0800

----------------------------------------------------------------------
 doc/themes/weex/source/css/common.scss            | 14 ++++++++++----
 doc/themes/weex/source/css/media-queries.scss     |  2 +-
 doc/themes/weex/source/css/partial/highlight.scss |  7 ++++---
 doc/themes/weex/source/css/variable.scss          |  4 ++--
 4 files changed, 17 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2510206f/doc/themes/weex/source/css/common.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/common.scss b/doc/themes/weex/source/css/common.scss
index 47a1fe9..10c25cf 100644
--- a/doc/themes/weex/source/css/common.scss
+++ b/doc/themes/weex/source/css/common.scss
@@ -18,9 +18,12 @@ html, body {
 
 body {
   background: $bg-gray;
-  font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue","PingFang SC","Helvetica Neue",Arial,STHeiti,"Microsoft YaHei","Source Han Sans SC","Noto Sans CJK SC","Source Han Sans CN","Noto Sans SC","Noto Sans CJK TC",SimSun,sans-serif;
+  // font-family: Exo,'-apple-system','Open Sans',HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue','Hiragino Sans GB','Microsoft YaHei',Helvetica,Arial,sans-serif;
+  font-family: Lato, "Microsoft Jhenghei", "Hiragino Sans GB", "Microsoft YaHei", sans-serif,'-apple-system','Open Sans',HelveticaNeue-Light,'Helvetica Neue Light';
+  // font-family: 'PingFang SC', 'Hiragino Sans GB', 'Microsoft Yahei', 'WenQuanYi Micro Hei',sans-serif;
+  // font-size:62.5%;max-height:100%;
   font-size: 14px;
-  line-height: 1.4;
+  line-height: 120%;
   color: $text-light-black;
   -webkit-tap-highlight-color: transparent;
 }
@@ -72,11 +75,14 @@ img {
   vertical-align:middle;
 }
 
-h1,h2,h3,h4,h5,h6,p {
+p {
   font-weight: normal;
   margin: 0 0 1em;
 }
-
+h1,h2,h3,h4,h5,h6{
+  font-weight: bold;
+  margin: 0 0 1em;
+}
 h1 {
   font-size: 2em;
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2510206f/doc/themes/weex/source/css/media-queries.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/media-queries.scss b/doc/themes/weex/source/css/media-queries.scss
index f461e84..f31a880 100644
--- a/doc/themes/weex/source/css/media-queries.scss
+++ b/doc/themes/weex/source/css/media-queries.scss
@@ -7,7 +7,7 @@
    **********************************************/
   body {
     user-select: none;
-    font-size: 13px;
+    font-size: 14px;
   }
 
   #header {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2510206f/doc/themes/weex/source/css/partial/highlight.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/partial/highlight.scss b/doc/themes/weex/source/css/partial/highlight.scss
index 521357a..cf9e25c 100644
--- a/doc/themes/weex/source/css/partial/highlight.scss
+++ b/doc/themes/weex/source/css/partial/highlight.scss
@@ -1,13 +1,14 @@
 code, pre {
-  font-family: Source Code Pro,Monaco,Menlo,Consolas,monospace;
+  // font-family: Source Code Pro,Monaco,Menlo,Consolas,monospace;
   color: #abb2bf;
   font-size: 14px;
 }
 
 code {
-  color: #e06c75;
-  background: #eaeaea;
+  color: #c7254e;
+  background: #f9f2f4;
   padding: 0 5px;
+  border-radius: 5px;
 }
 
 pre {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2510206f/doc/themes/weex/source/css/variable.scss
----------------------------------------------------------------------
diff --git a/doc/themes/weex/source/css/variable.scss b/doc/themes/weex/source/css/variable.scss
index 7586c0b..50e35cd 100644
--- a/doc/themes/weex/source/css/variable.scss
+++ b/doc/themes/weex/source/css/variable.scss
@@ -2,7 +2,7 @@
 * Variable
 ***********************/
 
-$text-light-black: #363539;
+$text-light-black: #333;
 $text-black: #333;
 $text-white: #fff;
 $text-gray: #999;
@@ -10,7 +10,7 @@ $text-blue: #00BDFF;
 $bg-blue: $text-blue;
 $bg-light-blue: #23CEFD;
 $bg-white: #fff;
-$bg-gray: #f5f5f5;
+$bg-gray: #fafafa;
 $border-light: #ddd;
 $border-blue: $text-blue;
 $border-gray: #999ba4;


[42/50] [abbrv] incubator-weex git commit: * [doc] update input components document & bubble document

Posted by zs...@apache.org.
* [doc] update input components document & bubble document


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

Branch: refs/heads/master
Commit: bf874113e47186bf11903db829d1a77765ad18c3
Parents: 3b9b5a5
Author: tancy <ro...@gmail.com>
Authored: Wed Jul 19 15:12:22 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Wed Jul 19 15:12:22 2017 +0800

----------------------------------------------------------------------
 doc/source/_posts/coreml.md                  | 79 +++++++++++++++++++++++
 doc/source/_posts/hello_world.md             |  3 +-
 doc/source/_posts/test.md                    | 14 ++++
 doc/source/cn/references/bubble.md           |  4 +-
 doc/source/cn/references/components/input.md | 34 +++++-----
 doc/source/cn/v-0.10/references/bubble.md    |  6 +-
 doc/source/references/bubble.md              |  4 +-
 doc/source/references/components/input.md    | 34 +++++-----
 doc/source/v-0.10/references/bubble.md       |  8 +--
 9 files changed, 142 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bf874113/doc/source/_posts/coreml.md
----------------------------------------------------------------------
diff --git a/doc/source/_posts/coreml.md b/doc/source/_posts/coreml.md
new file mode 100644
index 0000000..c628fb3
--- /dev/null
+++ b/doc/source/_posts/coreml.md
@@ -0,0 +1,79 @@
+title: Weex ❤️ iOS 11 系列之一:Core ML 初探
+type: blog
+date: 2017-06-21 15:46:44
+
+---
+
+## 背景
+
+WWDC 2017 有一个非常明确的信号:**端上机器学习将会是未来苹果的一个重要发力点,同时开发者的使用门槛在不断降低**。
+
+Core ML 是今年 WWDC 上苹果发布的机器学习框架。它允许开发者在自己开发的 app 上使用机器学习,同时不需要收集用户数据。 有了 Core ML,你可以将自己训练得到的模型,借助苹果提供的转换工具,转化成 Core ML 类型的模型文件,你可以非常轻松地直接实现模型和 app 数据的互通。
+
+WWDC 上展示了一张简单的架构图:
+
+![屏幕快照 2017-06-20 下午8.50.21](https://gw.alicdn.com/tfs/TB1YT5dRVXXXXc1XFXXXXXXXXXX-498-392.png)
+
+最底层的 Accelerate 和 MPS,其实是苹果去年推出的接口,前者可以直接调用 CPU,后者则直接调用 GPU。 Core ML 会自行决定到底使用 CPU 还是 GPU 来进行运算,可以最大程度地利用硬件资源来处理模型数据。
+
+而 Core ML 往上一层则是应用层。Vision 主要负责图像相关的人工智能处理,如人脸识别、面部追踪、文字识别等等;NLP 则提供语义分析相关 API。这部分内容在以前版本的 SDK 中也存在,这次被集成到了新框架当中。好处在于,开发者拥有了更大的自由度。在以前,开发者的 app 调用这些高级接口,对底层的实现细节的掌控力度非常小。现在,你可以通过自定义底层所使用的机器学习模型,从而实现更个性化的需求。
+
+## Weex-ML
+
+Weex 交互视觉能力小结中提到,**Weex 最大的特别之处在于其 native 的能力, 我们要最大化利用 native 的特性, 而不是去模仿它**。
+
+作为本次 iOS 11 的一个重要 native 能力,我也第一时间尝试将 Core ML 透传到了 Weex 上。所有代码和 Demo 都已开源到 [Github](https://github.com/cxfeng1/Weex-ML),后续也会将机器学习相关的Weex 模块统一放到 Weex Market 上。
+
+得益于 Core ML API 的简洁,在 Weex 上使用 Core ML 相关能力变得非常简单:
+
+```javascript
+let imageRecognition = weex.requireModule('imageRecognition')
+imageRecognition.predictWithImage(this.$refs.image.ref, (results)=>{
+  this.results = results.slice(0,5);
+})
+```
+
+通过调用透传的 module `imageRecognition` , 并传入 image 组件的 ref 作为参数,就可以实现图片识别的功能,最后提取出识别结果中 confidence 最高的 5 个结果。
+
+## Demo
+
+### imageRecognition
+
+![](https://gw.alicdn.com/tfs/TB1AmqgRVXXXXcmXFXXXXXXXXXX-240-427.gif)
+
+使用 [Inceptionv3](https://github.com/fchollet/keras/blob/0bb4e0fad5b4bb3743c8a7d03c260b62a35e7045/keras/applications/inception_v3.py) 作为模型,能够高效识别, 该模型已经在 [keras](https://github.com/fchollet/keras) 中被训练好并通过苹果提供的工具转换成 **mlmodel** 文件, 只需拖拽的方式就可以集成到 iOS 开发环境中, 上述 demo 输出了对一张图片分类最大可能的5个预测结果, 对于 Weex 来说,几行代码就能搞定。
+
+
+
+### digitDetect
+
+![](https://gw.alicdn.com/tfs/TB1nZ8_RVXXXXczXVXXXXXXXXXX-240-427.gif)
+
+上述 demo 首先使用 [weex-gcanvas](http://market.dotwe.org/ext/list.htm#6) 插件做了一个简单的绘制板,然后使用 MNIST model 完成了对手写数字的识别。
+
+### faceDetect
+
+![](https://gw.alicdn.com/tfs/TB1lN0_RVXXXXa_XVXXXXXXXXXX-240-427.gif)
+
+这个 demo 没有加载任何 model,使用了 iOS 11 内置的 Vision Framework,顾名思义,Vision 可以让开发者运行计算机视觉相关的任务,它相当于 Core ML 的 High-Level Solution, 它可以做很多事情:
+
+- 脸部识别,会返回一个矩形数组来表示每一个脸部
+- 脸部更精细识别,比如眼睛和鼻子的具体位置、头部的形状等,上述 demo 就是拿到这些信息以后使用 gcanvas 绘制出了面部精细轮廓
+- 图片中的矩形探测
+- 图片中的文字探测
+- 二维码/条形码探测
+- 视频中跟踪移动的物体
+
+## 总结
+
+这次 Core ML 的推出,同时得益于苹果对软硬件的全面掌控,使得从系统级到第三方开发者,都具备了在端上就可以进行机器学习模型处理的能力。所有代码和 Demo 都已上传到 [Github](https://github.com/cxfeng1/Weex-ML),欢迎贡献和交流。
+
+当然在实际研究过程中,也发现了 Core ML 的一些限制:
+
+- 无法在端上进行模型的训练,所有模型必须提前训练好再转换成 Core ML 的格式
+- 无法动态下载和更新模型,对于需要经常重新训练的模型不太友好
+- 目前看只支持监督学习的模型,不支持非监督学习。
+
+Weex 未来在提供更多功能透传的同时,也会继续探索更深层次的结合。
+
+最后,本文是 Weex 和 iOS 11 结合系列的第一篇文章,后续将会有更多有意思的iOS 11 feature (如 ARKit、 drag & drop 等) 和大家一起探讨。
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bf874113/doc/source/_posts/hello_world.md
----------------------------------------------------------------------
diff --git a/doc/source/_posts/hello_world.md b/doc/source/_posts/hello_world.md
index 07f4223..803ef70 100644
--- a/doc/source/_posts/hello_world.md
+++ b/doc/source/_posts/hello_world.md
@@ -1,6 +1,7 @@
 title: Hello World
 type: blog
-order: 1
+
 ---
 
 # Hello world 
+

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bf874113/doc/source/_posts/test.md
----------------------------------------------------------------------
diff --git a/doc/source/_posts/test.md b/doc/source/_posts/test.md
new file mode 100644
index 0000000..afaa8ec
--- /dev/null
+++ b/doc/source/_posts/test.md
@@ -0,0 +1,14 @@
+title: test
+type: blog
+
+---
+
+
+# test
+
+asdfadfasdfasdfadfadsf
+asdfasdfadsf
+adsfadsfadsf
+
+## sdfasdfasdf
+sdfsdfsdf
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bf874113/doc/source/cn/references/bubble.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/references/bubble.md b/doc/source/cn/references/bubble.md
index 4b63cad..6f8f0ed 100644
--- a/doc/source/cn/references/bubble.md
+++ b/doc/source/cn/references/bubble.md
@@ -11,7 +11,7 @@ Weex 2.0 实现了 W3C 标准的事件冒泡机制。
 
 ### 使用
 
-```javascript
+```html
 <template>
   <div class="root" @click="rootClick" bubble="true">
     <text style="font-size: 40px;">{{rootText}}</text>
@@ -81,7 +81,7 @@ Weex 2.0 实现了 W3C 标准的事件冒泡机制。
 
 在事件处理函数中,可以使用 `e.stopPropagation()` 方法,来阻止本次事件向上的传递过程。注意,`e.stopPropagation()` 与 `bubble="true"` 不同,前者只会影响当前元素以及父元素的传播,不会影响子元素的传播;后者是为了版本兼容而增加的开关机制,会全局关闭或者开启冒泡机制,两者可以共同存在使用,如下:
 
-```javascript
+```html
 <template>
   <div class="root" @click="rootClick" bubble="true">
     <text style="font-size: 40px;">{{rootText}}</text>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bf874113/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 a0aecf8..3cf83fd 100644
--- a/doc/source/cn/references/components/input.md
+++ b/doc/source/cn/references/components/input.md
@@ -135,13 +135,15 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
       <text style="font-size: 40px">oninput: {{txtInput}}</text>
       <text style="font-size: 40px">onchange: {{txtChange}}</text>
       <text style="font-size: 40px">onreturntype: {{txtReturnType}}</text>
+      <text style="font-size: 40px">selection: {{txtSelection}}</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"/>
+        <input type="text" placeholder="Input Text" class="input" :autofocus=true value="" @change="onchange" @input="oninput"/>
       </div>
 
       <div>
@@ -181,6 +183,13 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
 
       <div>
         <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = number</text>
+        </div>
+        <input type="number" placeholder="Input number" 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"/>
@@ -248,6 +257,7 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
         </div>
         <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
           <text class="button" value="setRange" type="primary" @click="setRange"></text>
+          <text class="button" value="getSelectionRange" type="primary" @click="getSelectionRange"></text>
         </div>
         <input type="text"  ref="inputselection" placeholder="please input" value="123456789"  class="input" @change="onchange" @return = "onreturn" @input="oninput"/>
       </div>
@@ -280,7 +290,6 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
 </style>
 
 <script>
-  const modal = weex.requireModule('modal')
   module.exports = {
     data: function () {
       return {
@@ -320,23 +329,16 @@ Weex 内置的 `<input>` 组件用来创建接收用户输入字符的输入组
         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
-        })
+      getSelectionRange: function() {
+        console.log(this.$refs["inputselection"]);
+        var self = this;
+        this.$refs["inputselection"].getSelectionRange(function(e) {
+          self.txtSelection = e.selectionStart +'-' + e.selectionEnd;
+        });
       }
     }
   };
 </script>
 ```
 
-[体验一下](http://dotwe.org/vue/dd83d941d2364f2849e45dc3c5d91ab4)
+[体验一下](http://dotwe.org/vue/3470e4d0194f3879a72d38e2ab02cc9f)

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bf874113/doc/source/cn/v-0.10/references/bubble.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/references/bubble.md b/doc/source/cn/v-0.10/references/bubble.md
index cb25e05..74b7e98 100644
--- a/doc/source/cn/v-0.10/references/bubble.md
+++ b/doc/source/cn/v-0.10/references/bubble.md
@@ -2,7 +2,7 @@
 title: 事件冒泡 
 type: references
 order: 1.3
-version: 2.1
+version: 0.10
 ---
 
 # 事件冒泡 <span class="api-version">v0.13+</span>
@@ -11,7 +11,7 @@ Weex 1.0 实现了 W3C 标准的事件冒泡机制。
 
 ### 使用
 
-```javascript
+```html
 <template>
   <div class="root" onclick="rootClick" bubble="true">
     <div>
@@ -83,7 +83,7 @@ Weex 1.0 实现了 W3C 标准的事件冒泡机制。
 
 在事件处理函数中,可以使用 `e.stopPropagation()` 方法,来阻止本次事件向上的传递过程。注意,`e.stopPropagation()` 与 `bubble="true"` 不同,前者只会影响当前元素以及父元素的传播,不会影响子元素的传播;后者是为了版本兼容而增加的开关机制,会全局关闭或者开启冒泡机制,两者可以共同存在使用,如下:
 
-```javascript
+```html
 <template>
   <div class="root" onclick="rootClick" bubble="true">
     <div>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bf874113/doc/source/references/bubble.md
----------------------------------------------------------------------
diff --git a/doc/source/references/bubble.md b/doc/source/references/bubble.md
index c66d9b9..8d2470c 100644
--- a/doc/source/references/bubble.md
+++ b/doc/source/references/bubble.md
@@ -11,7 +11,7 @@ Weex 2.0 implements the W3C standard event bubbling mechanism.
 
 ### Usage
 
-```javascript
+```html
 <template>
   <div class="root" @click="rootClick" bubble="true">
     <text style="font-size: 40px;">{{rootText}}</text>
@@ -81,7 +81,7 @@ One thing should be noticed: **For compatibility with previous versions, Weex do
 
 In the event handler function, you can use the `e.stopPropagation()` method to prevent the event from escalating. Note that `e.stopPropagation()` differs from `bubble = "true"`, which affects only the current elements and the propagation of parent elements, without affecting the propagation of child elements; the latter is a switching mechanism that is added for compatibility, Will be a global shutdown or open the bubble mechanism, the two can co-exist, as follows:
 
-```javascript
+```html
 <template>
   <div class="root" @click="rootClick" bubble="true">
     <text style="font-size: 40px;">{{rootText}}</text>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bf874113/doc/source/references/components/input.md
----------------------------------------------------------------------
diff --git a/doc/source/references/components/input.md b/doc/source/references/components/input.md
index 8eea2ad..fdd4d0a 100644
--- a/doc/source/references/components/input.md
+++ b/doc/source/references/components/input.md
@@ -113,13 +113,15 @@ does not support the common-event 'click'. Please listen to the 'input' or '
       <text style="font-size: 40px">oninput: {{txtInput}}</text>
       <text style="font-size: 40px">onchange: {{txtChange}}</text>
       <text style="font-size: 40px">onreturntype: {{txtReturnType}}</text>
+      <text style="font-size: 40px">selection: {{txtSelection}}</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"/>
+        <input type="text" placeholder="Input Text" class="input" :autofocus=true value="" @change="onchange" @input="oninput"/>
       </div>
 
       <div>
@@ -159,6 +161,13 @@ does not support the common-event 'click'. Please listen to the 'input' or '
 
       <div>
         <div style="background-color: #286090">
+          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = number</text>
+        </div>
+        <input type="number" placeholder="Input number" 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"/>
@@ -226,6 +235,7 @@ does not support the common-event 'click'. Please listen to the 'input' or '
         </div>
         <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
           <text class="button" value="setRange" type="primary" @click="setRange"></text>
+          <text class="button" value="getSelectionRange" type="primary" @click="getSelectionRange"></text>
         </div>
         <input type="text"  ref="inputselection" placeholder="please input" value="123456789"  class="input" @change="onchange" @return = "onreturn" @input="oninput"/>
       </div>
@@ -258,7 +268,6 @@ does not support the common-event 'click'. Please listen to the 'input' or '
 </style>
 
 <script>
-  const modal = weex.requireModule('modal')
   module.exports = {
     data: function () {
       return {
@@ -298,23 +307,16 @@ does not support the common-event 'click'. Please listen to the 'input' or '
         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
-        })
+      getSelectionRange: function() {
+        console.log(this.$refs["inputselection"]);
+        var self = this;
+        this.$refs["inputselection"].getSelectionRange(function(e) {
+          self.txtSelection = e.selectionStart +'-' + e.selectionEnd;
+        });
       }
     }
   };
 </script>
 ```
 
-[try it](http://dotwe.org/vue/dd83d941d2364f2849e45dc3c5d91ab4)
+[try it](http://dotwe.org/vue/3470e4d0194f3879a72d38e2ab02cc9f)

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bf874113/doc/source/v-0.10/references/bubble.md
----------------------------------------------------------------------
diff --git a/doc/source/v-0.10/references/bubble.md b/doc/source/v-0.10/references/bubble.md
index 849ab36..ba59a90 100644
--- a/doc/source/v-0.10/references/bubble.md
+++ b/doc/source/v-0.10/references/bubble.md
@@ -2,16 +2,16 @@
 title: Event Bubble 
 type: references
 order: 1.3
-version: 2.1
+version: 0.10
 ---
 
 # Event Bubble <span class="api-version">v0.13+</span>
 
-Weex 2.0 implements the W3C standard event bubbling mechanism.
+Weex 1.0 implements the W3C standard event bubbling mechanism.
 
 ### Usage
 
-```javascript
+```html
 <template>
   <div class="root" onclick="rootClick" bubble="true">
     <div>
@@ -83,7 +83,7 @@ One thing should be noticed: **For compatibility with previous versions, Weex do
 
 In the event handler function, you can use the `e.stopPropagation()` method to prevent the event from escalating. Note that `e.stopPropagation()` differs from `bubble = "true"`, which affects only the current elements and the propagation of parent elements, without affecting the propagation of child elements; the latter is a switching mechanism that is added for compatibility, Will be a global shutdown or open the bubble mechanism, the two can co-exist, as follows:
 
-```javascript
+```html
 <template>
   <div class="root" onclick="rootClick" bubble="true">
     <div>


[32/50] [abbrv] incubator-weex git commit: Merge branch 'dev' of https://github.com/cxfeng1/incubator-weex into dev

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

Branch: refs/heads/master
Commit: 515b003ba769a9e153461d6f01017f33845eb8bd
Parents: 96ef64c e26e4a7
Author: tancy <ro...@gmail.com>
Authored: Tue Jul 4 16:47:23 2017 +0800
Committer: tancy <ro...@gmail.com>
Committed: Tue Jul 4 16:47:23 2017 +0800

----------------------------------------------------------------------
 doc/source/references/components/list.md | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------



[39/50] [abbrv] incubator-weex git commit: * [doc] update docsearch apiKey

Posted by zs...@apache.org.
* [doc] update docsearch apiKey


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

Branch: refs/heads/master
Commit: 081b7a3de3dd5c6d472773cd07b436bd09328449
Parents: 4742d5d
Author: parryworld <pa...@gmail.com>
Authored: Thu Jul 13 10:56:59 2017 +0800
Committer: parryworld <pa...@gmail.com>
Committed: Thu Jul 13 10:56:59 2017 +0800

----------------------------------------------------------------------
 doc/_config.yml                   | 6 ++++--
 doc/_config_cn.yml                | 6 ++++--
 doc/themes/weex/layout/layout.ejs | 6 +++---
 3 files changed, 11 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/081b7a3d/doc/_config.yml
----------------------------------------------------------------------
diff --git a/doc/_config.yml b/doc/_config.yml
index dd564d7..e262984 100644
--- a/doc/_config.yml
+++ b/doc/_config.yml
@@ -125,8 +125,10 @@ autoprefixer:
 # docsearch
 docsearch:
   enable: true
-  en: weex
-  cn: weex_cn
+  index_name_en: weex
+  index_name_cn: weex_cn
+  api_key_en: a6896fe3619315a7f04e9a76bbbbbfcb
+  api_key_cn: db5b2379e5ffbc33509585c35ccabba8
 
 alias:
   doc/index.html: index.html

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/081b7a3d/doc/_config_cn.yml
----------------------------------------------------------------------
diff --git a/doc/_config_cn.yml b/doc/_config_cn.yml
index c98a00b..ef5679f 100644
--- a/doc/_config_cn.yml
+++ b/doc/_config_cn.yml
@@ -123,8 +123,10 @@ autoprefixer:
 # docsearch
 docsearch:
   enable: true
-  en: weex_io
-  cn: weex_io_cn
+  index_name_en: weex_io
+  index_name_cn: weex_io_cn
+  api_key_en: e487bb3d17e4fa1787db9976b086792c
+  api_key_cn: ce50ba9d18b3295d568b305a7171ceef
 
 alias:
   doc/index.html: index.html

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/081b7a3d/doc/themes/weex/layout/layout.ejs
----------------------------------------------------------------------
diff --git a/doc/themes/weex/layout/layout.ejs b/doc/themes/weex/layout/layout.ejs
index 9e5ee1f..df3b12b 100644
--- a/doc/themes/weex/layout/layout.ejs
+++ b/doc/themes/weex/layout/layout.ejs
@@ -14,12 +14,12 @@
   <%- js('js/reqwest.js') %>
   <%- js('js/common.js') %>
   <% if (config.docsearch.enable){ %>    
-    <% index_name = page.path.indexOf('cn/') === 0 ? config.docsearch.cn : config.docsearch.en %>
+    <% index_name = page.path.indexOf('cn/') === 0 ? config.docsearch.index_name_cn : config.docsearch.index_name_en %>
+    <% api_key = page.path.indexOf('cn/') === 0 ? config.docsearch.api_key_cn : config.docsearch.api_key_en %>
     <%- js('js/docsearch.min.js') %>
     <script type="text/javascript">
     docsearch({
-      appId: '2BE9FVK6FX',
-      apiKey: '4879a7b2e4f3a664bd3b219340657475',
+      apiKey: "<%= api_key %>",
       indexName: "<%= index_name %>",
       inputSelector: '#search-input-header',
       algoliaOptions: {


[10/50] [abbrv] incubator-weex git commit: Merge branch '0.14-dev' of https://github.com/erha19/incubator-weex into 0.14-dev

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

Branch: refs/heads/master
Commit: cbc2e2d89b5ecd4882968c9f4e1af252f122cdac
Parents: 43adf40 96cf5de
Author: MrRaindrop <te...@gmail.com>
Authored: Mon Jun 26 17:13:24 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Mon Jun 26 17:13:24 2017 +0800

----------------------------------------------------------------------
 examples/vue/index.vue                          |   1 +
 examples/vue/modules/websocket.vue              | 116 +++++++++++++++++++
 html5/render/vue/env/weex.js                    |   3 +
 html5/render/vue/modules/index.js               |   2 +
 html5/render/vue/modules/websocket/index.js     |  26 +++++
 html5/render/vue/modules/websocket/websocket.js |  60 ++++++++++
 html5/test/render/vue/modules/websocket.js      |  11 ++
 7 files changed, 219 insertions(+)
----------------------------------------------------------------------



[05/50] [abbrv] incubator-weex git commit: * [html5] fix lint error in webSocket test code

Posted by zs...@apache.org.
 * [html5] fix lint error in webSocket test code


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

Branch: refs/heads/master
Commit: 96cf5de6399ed8ad741e5d8eeac06feee0c3430e
Parents: e6b55f7
Author: erha19 <fa...@gmail.com>
Authored: Sat Jun 24 21:20:19 2017 +0800
Committer: erha19 <fa...@gmail.com>
Committed: Sat Jun 24 21:20:19 2017 +0800

----------------------------------------------------------------------
 html5/test/render/vue/modules/websocket.js | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/96cf5de6/html5/test/render/vue/modules/websocket.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/modules/websocket.js b/html5/test/render/vue/modules/websocket.js
index 28b5958..f3534ef 100644
--- a/html5/test/render/vue/modules/websocket.js
+++ b/html5/test/render/vue/modules/websocket.js
@@ -1,11 +1,11 @@
-import websocket from '../../../../render/vue/modules/websocket/websocket';
-describe('webSocket module', function() {
-  afterEach(function(done) {
+import websocket from '../../../../render/vue/modules/websocket/websocket'
+describe('webSocket module', function () {
+  afterEach(function (done) {
     // Cleanup
-    websocket.close();
-    done();
-  });
+    websocket.close()
+    done()
+  })
   it('should have connection lifecycle constants defined on the instance', () => {
-    expect(websocket.WebSocket('wss://echo.websocket.org').CONNECTING).to.be.equal(0);
-  });
-});
+    expect(websocket.WebSocket('wss://echo.websocket.org').CONNECTING).to.be.equal(0)
+  })
+})