From 2b062cee7c041cffccfbf528719789b100a53581 Mon Sep 17 00:00:00 2001 From: devfake Date: Thu, 30 Jul 2015 14:07:13 +0200 Subject: [PATCH] simple lazy loading --- client/app/sites/category.js | 41 +++++++++++++++++++++++++------- client/assets/sass/_content.scss | 16 +++++++++++-- public/assets/css/app.css | 2 +- public/assets/js/bundle.js | 18 +++++++------- 4 files changed, 58 insertions(+), 19 deletions(-) diff --git a/client/app/sites/category.js b/client/app/sites/category.js index 5d63c77..fcf5384 100644 --- a/client/app/sites/category.js +++ b/client/app/sites/category.js @@ -7,7 +7,9 @@ class Category extends React.Component { state = { category: {}, items: [], - currentLoaded: config.loadingItems + currentLoaded: config.loadingItems, + moreLoaded: false, + moreToLoad: true } componentWillReceiveProps(nextProps) { @@ -27,11 +29,24 @@ class Category extends React.Component { // todo: fix icon load. render() { + let loadContent; + + if( ! this.state.moreLoaded) { + loadContent =
Load more {this.state.category.name}
+ } else { + loadContent = + } + return (
- { ! this.state.items.length ? : } - {this.state.items.length >= config.loadingItems ?
Load more {this.state.category.name}
: ''} + {this.state.items.length + ? + : } + + {this.state.items.length >= config.loadingItems && this.state.moreToLoad + ?
{loadContent}
+ : ''}
); @@ -49,12 +64,22 @@ class Category extends React.Component { } loadMore() { - Api.moreCategoryItems(this.state.category, this.state.currentLoaded).then((value) => { - this.setState({ - currentLoaded: this.state.currentLoaded + config.loadingItems, - items: this.state.items.concat(value) - }); + this.setState({ + moreLoaded: true }); + + setTimeout(() => { + + Api.moreCategoryItems(this.state.category, this.state.currentLoaded).then((value) => { + this.setState({ + currentLoaded: this.state.currentLoaded + config.loadingItems, + items: this.state.items.concat(value), + moreLoaded: false, + moreToLoad: value.length ? true : false + }); + }); + + }, 400); } } diff --git a/client/assets/sass/_content.scss b/client/assets/sass/_content.scss index 8bb1c84..b131534 100644 --- a/client/assets/sass/_content.scss +++ b/client/assets/sass/_content.scss @@ -70,7 +70,8 @@ } .icon-content-load, -.icon-box-load { +.icon-box-load, +.icon-load-more { background: url(../img/content-load.gif) no-repeats; width: 32px; height: 32px; @@ -88,6 +89,17 @@ top: 280px; } +.load-more-wrap { + position: relative; + float: left; + width: 100%; + height: 70px; +} + +.icon-load-more { + top: 0; +} + .show-item-wrap { float: left; width: 100%; @@ -114,11 +126,11 @@ padding: 10px; float: left; width: 100%; - margin: 0 0 40px 0; text-align: center; text-transform: uppercase; color: #555; cursor: pointer; + position: relative; .light-theme & { background: #e9e9e9; diff --git a/public/assets/css/app.css b/public/assets/css/app.css index 4a505d3..ee2a0a4 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -1 +1 @@ -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@font-face{font-family:'Titillium Web';font-style:normal;font-weight:400;src:local("Titillium Web"),local("TitilliumWeb-Regular"),url(http://fonts.gstatic.com/s/titilliumweb/v4/7XUFZ5tgS-tD6QamInJTcZSnX671uNZIV63UdXh3Mg0.woff2) format("woff2"),url(http://fonts.gstatic.com/s/titilliumweb/v4/7XUFZ5tgS-tD6QamInJTcdGU7DQ8I6RFMlK0vgclk7w.woff) format("woff")}@font-face{font-family:'Titillium Web';font-style:normal;font-weight:600;src:local("Titillium WebSemiBold"),local("TitilliumWeb-SemiBold"),url(http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr46gJz9aNFrmnwBdd69aqzY.woff2) format("woff2"),url(http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wprx7IBmrqA5IG9z8WNe77b9o.woff) format("woff")}*{margin:0;padding:0;box-sizing:border-box}.wrap{width:1100px;margin:0 auto;padding:0 20px}body{background:#1b1b1b;font-family:'Titillium Web',sans-serif;padding:65px 0 0;overflow-y:scroll}.modal-active{overflow:hidden}.light-theme{background:#fff}::-moz-selection{background:rgba(71,71,71,.99);color:#fff}::selection{background:rgba(71,71,71,.99);color:#fff}::-webkit-input-placeholder{color:#636363}::-moz-placeholder{color:#636363;opacity:1}::-ms-input-placeholder{color:#636363}::-ms-clear{display:none}ul{list-style:none}a{text-decoration:none;outline:0}img{border:0}input,textarea{outline:0}.icon-add{background-image:url(../img/sprite.png);background-position:-64px 0;width:32px;height:32px}.icon-close{background-image:url(../img/sprite.png);background-position:-64px -32px;width:32px;height:32px}.icon-github{background-image:url(../img/sprite.png);background-position:0 -96px;width:33px;height:27px}.icon-no-image{background-image:url(../img/sprite.png);background-position:0 0;width:64px;height:64px}.icon-search{background-image:url(../img/sprite.png);background-position:0 -64px;width:32px;height:32px}.icon-star-active,.icon-star.active{background-image:url(../img/sprite.png);background-position:-32px -64px;width:32px;height:32px}.icon-star{background-image:url(../img/sprite.png);background-position:-64px -64px;width:32px;height:32px}.icon-time-active,.icon-time.active{background-image:url(../img/sprite.png);background-position:-96px 0;width:32px;height:32px}.icon-time{background-image:url(../img/sprite.png);background-position:-96px -32px;width:32px;height:32px}.icon-tmdb{background-image:url(../img/sprite.png);background-position:-128px 0;width:138px;height:18px}.site-header{position:fixed;width:100%;left:0;top:0;background:rgba(186,89,210,.95);height:65px;overflow:hidden;z-index:100}.logo{float:left;padding:19px 0}.site-nav{float:right;margin:0 20px 0 0;padding:0 20px 0 0;border-right:1px solid #c86ede}.site-nav li{float:left}.site-nav a{color:#fff;padding:16px 20px 18px;float:left;font-size:17px;border-top:3px solid transparent;transition:border .2s ease-in-out 0s}.site-nav a.active{border-top:3px solid #fff}.add-wrap,.icon-search-wrap{float:right;padding:16px 0 19px;cursor:pointer}.add-wrap i,.icon-search-wrap i{display:block}.add-wrap:active,.icon-search-wrap:active{opacity:.8}.icon-search-wrap{margin:0 0 0 10px}.flox{position:relative;width:100%;min-height:calc(100vh + 120px);float:left;padding:0 0 120px}.box{float:left;width:100%;padding:60px 0;position:relative}.box:nth-child(2){background:#242424}.light-theme .box:nth-child(2){background:#e9e9e9}.box-headline{font-size:22px;color:#555}.light-theme .box-headline{color:#1b1b1b}.box-headline:hover{background:#ba59d2;color:#fff}.box-options{float:right}.box-options i{float:left;cursor:pointer;margin:0 0 0 20px;opacity:.8}.light-theme .box-options i{opacity:1}.box-options i:active{opacity:.6}.icon-box-load,.icon-content-load{background:url(../img/content-load.gif);width:32px;height:32px;position:absolute;left:50%;top:50vh;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.light-theme .icon-box-load,.light-theme .icon-content-load{background:url(../img/content-load-light.gif)}.icon-box-load{top:280px}.show-item-wrap{float:left;width:100%;margin:50px 0 0}.image-wrap{float:left;width:350px}.show-content{float:left;width:710px}.show-content h2{color:#ba59d2;font-size:32px}.load-more{background:#242424;padding:10px;float:left;width:100%;margin:0 0 40px;text-align:center;text-transform:uppercase;color:#555;cursor:pointer}.light-theme .load-more{background:#e9e9e9}.items{float:left;width:100%;min-height:400px}.item{float:left;width:185px;margin:50px 33px 0 0;position:relative}.item:nth-child(5n){margin:50px 0 0}.rating{float:right;width:10px;height:270px;opacity:.9;background:silver}.item-image-big .rating{height:450px}.rating-1{background:#ac1b1b}.rating-1-5{background:linear-gradient(#c15e33 20%,#ac1b1b 25%)}.rating-2{background:#c15e33}.rating-2-5{background:linear-gradient(#dea621 20%,#c15e33 25%)}.rating-3{background:#dea621}.rating-3-5{background:linear-gradient(#73a01c 20%,#dea621 25%)}.rating-4{background:#73a01c}.rating-4-5{background:linear-gradient(#ba59d2 20%,#73a01c 25%)}.rating-5{background:#ba59d2}.item-image{background-color:#101010;float:left;width:185px;height:270px;position:relative;top:0;opacity:1;box-shadow:0 10px 12px 5px rgba(0,0,0,.4);transition:top .4s ease-in-out 0s,opacity .4s ease-in-out 0s,-webkit-transform .15s ease-in-out 0s;transition:top .4s ease-in-out 0s,opacity .4s ease-in-out 0s,transform .15s ease-in-out 0s;-webkit-filter:blur(0);filter:blur(0);cursor:pointer}.light-theme .item-image{box-shadow:0 10px 12px 0 rgba(0,0,0,.3)}.loading .item-image{top:-5px;opacity:0}.item-image:hover{-webkit-transform:translateZ(0) scale(1.05,1.05);transform:translateZ(0) scale(1.05,1.05)}.item-image-big{width:300px;height:450px}.item-content{float:left;margin:20px 0 0;padding:0 5px;width:100%}.icon-no-image{position:absolute;top:95px;left:60px}.item-image-big .icon-no-image{top:175px;left:120px}.item-date{float:left;clear:both;color:#555;font-size:15px;cursor:help}.light-theme .item-date{color:#909090}.item-title{float:left;clear:both;font-size:17px;color:#909090;border-bottom:1px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.light-theme .item-title{color:#1b1b1b}.item-title:active,.item-title:hover{background:#ba59d2;color:#fff}.modal-wrap{background:rgba(14,14,14,.98);position:fixed;left:0;top:0;height:100%;width:100%;z-index:200;opacity:1;transition:opacity .1s ease-in-out 0s}.light-theme .modal-wrap{background:rgba(255,255,255,.98)}.modal-active .modal-wrap{overflow-y:scroll}.modal-wrap.loading{opacity:0}.modal-header{background:#ba59d2;float:left;width:100%;height:65px;position:fixed;left:0;top:0;transition:top .5s ease-in-out 0s}.loading .modal-header{top:-100%}.modal-header .icon-search{float:left;margin:17px 0 0}.icon-close-wrap{padding:16px;float:right;cursor:pointer;margin:5px 0 0}.icon-close-wrap .icon-close{float:left}.icon-close-wrap:active{opacity:.6}.modal-input{border:0;background:0 0;font-size:38px;color:#ba59d2;width:100%}.search-wrap{float:left;width:calc(100% - 100px)}.search-items{width:100%;float:left;padding:80px 0}.no-items-found{width:100%;float:left;margin:30vh 0 0;text-align:center;color:#474747;font-size:32px}.modal-label{float:left;text-transform:uppercase;color:#3e3e3e;font-size:15px}.site-footer{float:left;width:100%;background:#131313;padding:40px 0;position:absolute;bottom:0;font-size:14px}.site-footer a:active{opacity:.5}.light-theme .site-footer{background:#cdcdcd}.attribution{color:#555;float:left}.icon-tmdb{float:left;margin:3px 10px 0 0}.light-theme .icon-tmdb{opacity:.6}.icon-github{float:right}.light-theme .icon-github{opacity:.6} \ No newline at end of file +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@font-face{font-family:'Titillium Web';font-style:normal;font-weight:400;src:local("Titillium Web"),local("TitilliumWeb-Regular"),url(http://fonts.gstatic.com/s/titilliumweb/v4/7XUFZ5tgS-tD6QamInJTcZSnX671uNZIV63UdXh3Mg0.woff2) format("woff2"),url(http://fonts.gstatic.com/s/titilliumweb/v4/7XUFZ5tgS-tD6QamInJTcdGU7DQ8I6RFMlK0vgclk7w.woff) format("woff")}@font-face{font-family:'Titillium Web';font-style:normal;font-weight:600;src:local("Titillium WebSemiBold"),local("TitilliumWeb-SemiBold"),url(http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr46gJz9aNFrmnwBdd69aqzY.woff2) format("woff2"),url(http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wprx7IBmrqA5IG9z8WNe77b9o.woff) format("woff")}*{margin:0;padding:0;box-sizing:border-box}.wrap{width:1100px;margin:0 auto;padding:0 20px}body{background:#1b1b1b;font-family:'Titillium Web',sans-serif;padding:65px 0 0;overflow-y:scroll}.modal-active{overflow:hidden}.light-theme{background:#fff}::-moz-selection{background:rgba(71,71,71,.99);color:#fff}::selection{background:rgba(71,71,71,.99);color:#fff}::-webkit-input-placeholder{color:#636363}::-moz-placeholder{color:#636363;opacity:1}::-ms-input-placeholder{color:#636363}::-ms-clear{display:none}ul{list-style:none}a{text-decoration:none;outline:0}img{border:0}input,textarea{outline:0}.icon-add{background-image:url(../img/sprite.png);background-position:-64px 0;width:32px;height:32px}.icon-close{background-image:url(../img/sprite.png);background-position:-64px -32px;width:32px;height:32px}.icon-github{background-image:url(../img/sprite.png);background-position:0 -96px;width:33px;height:27px}.icon-no-image{background-image:url(../img/sprite.png);background-position:0 0;width:64px;height:64px}.icon-search{background-image:url(../img/sprite.png);background-position:0 -64px;width:32px;height:32px}.icon-star-active,.icon-star.active{background-image:url(../img/sprite.png);background-position:-32px -64px;width:32px;height:32px}.icon-star{background-image:url(../img/sprite.png);background-position:-64px -64px;width:32px;height:32px}.icon-time-active,.icon-time.active{background-image:url(../img/sprite.png);background-position:-96px 0;width:32px;height:32px}.icon-time{background-image:url(../img/sprite.png);background-position:-96px -32px;width:32px;height:32px}.icon-tmdb{background-image:url(../img/sprite.png);background-position:-128px 0;width:138px;height:18px}.site-header{position:fixed;width:100%;left:0;top:0;background:rgba(186,89,210,.95);height:65px;overflow:hidden;z-index:100}.logo{float:left;padding:19px 0}.site-nav{float:right;margin:0 20px 0 0;padding:0 20px 0 0;border-right:1px solid #c86ede}.site-nav li{float:left}.site-nav a{color:#fff;padding:16px 20px 18px;float:left;font-size:17px;border-top:3px solid transparent;transition:border .2s ease-in-out 0s}.site-nav a.active{border-top:3px solid #fff}.add-wrap,.icon-search-wrap{float:right;padding:16px 0 19px;cursor:pointer}.add-wrap i,.icon-search-wrap i{display:block}.add-wrap:active,.icon-search-wrap:active{opacity:.8}.icon-search-wrap{margin:0 0 0 10px}.flox{position:relative;width:100%;min-height:calc(100vh + 120px);float:left;padding:0 0 120px}.box{float:left;width:100%;padding:60px 0;position:relative}.box:nth-child(2){background:#242424}.light-theme .box:nth-child(2){background:#e9e9e9}.box-headline{font-size:22px;color:#555}.light-theme .box-headline{color:#1b1b1b}.box-headline:hover{background:#ba59d2;color:#fff}.box-options{float:right}.box-options i{float:left;cursor:pointer;margin:0 0 0 20px;opacity:.8}.light-theme .box-options i{opacity:1}.box-options i:active{opacity:.6}.icon-box-load,.icon-content-load,.icon-load-more{background:url(../img/content-load.gif);width:32px;height:32px;position:absolute;left:50%;top:50vh;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.light-theme .icon-box-load,.light-theme .icon-content-load,.light-theme .icon-load-more{background:url(../img/content-load-light.gif)}.icon-box-load{top:280px}.load-more-wrap{position:relative;float:left;width:100%;height:70px}.icon-load-more{top:0}.show-item-wrap{float:left;width:100%;margin:50px 0 0}.image-wrap{float:left;width:350px}.show-content{float:left;width:710px}.show-content h2{color:#ba59d2;font-size:32px}.load-more{background:#242424;padding:10px;float:left;width:100%;text-align:center;text-transform:uppercase;color:#555;cursor:pointer;position:relative}.light-theme .load-more{background:#e9e9e9}.items{float:left;width:100%;min-height:400px}.item{float:left;width:185px;margin:50px 33px 0 0;position:relative}.item:nth-child(5n){margin:50px 0 0}.rating{float:right;width:10px;height:270px;opacity:.9;background:silver}.item-image-big .rating{height:450px}.rating-1{background:#ac1b1b}.rating-1-5{background:linear-gradient(#c15e33 20%,#ac1b1b 25%)}.rating-2{background:#c15e33}.rating-2-5{background:linear-gradient(#dea621 20%,#c15e33 25%)}.rating-3{background:#dea621}.rating-3-5{background:linear-gradient(#73a01c 20%,#dea621 25%)}.rating-4{background:#73a01c}.rating-4-5{background:linear-gradient(#ba59d2 20%,#73a01c 25%)}.rating-5{background:#ba59d2}.item-image{background-color:#101010;float:left;width:185px;height:270px;position:relative;top:0;opacity:1;box-shadow:0 10px 12px 5px rgba(0,0,0,.4);transition:top .4s ease-in-out 0s,opacity .4s ease-in-out 0s,-webkit-transform .15s ease-in-out 0s;transition:top .4s ease-in-out 0s,opacity .4s ease-in-out 0s,transform .15s ease-in-out 0s;-webkit-filter:blur(0);filter:blur(0);cursor:pointer}.light-theme .item-image{box-shadow:0 10px 12px 0 rgba(0,0,0,.3)}.loading .item-image{top:-5px;opacity:0}.item-image:hover{-webkit-transform:translateZ(0) scale(1.05,1.05);transform:translateZ(0) scale(1.05,1.05)}.item-image-big{width:300px;height:450px}.item-content{float:left;margin:20px 0 0;padding:0 5px;width:100%}.icon-no-image{position:absolute;top:95px;left:60px}.item-image-big .icon-no-image{top:175px;left:120px}.item-date{float:left;clear:both;color:#555;font-size:15px;cursor:help}.light-theme .item-date{color:#909090}.item-title{float:left;clear:both;font-size:17px;color:#909090;border-bottom:1px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.light-theme .item-title{color:#1b1b1b}.item-title:active,.item-title:hover{background:#ba59d2;color:#fff}.modal-wrap{background:rgba(14,14,14,.98);position:fixed;left:0;top:0;height:100%;width:100%;z-index:200;opacity:1;transition:opacity .1s ease-in-out 0s}.light-theme .modal-wrap{background:rgba(255,255,255,.98)}.modal-active .modal-wrap{overflow-y:scroll}.modal-wrap.loading{opacity:0}.modal-header{background:#ba59d2;float:left;width:100%;height:65px;position:fixed;left:0;top:0;transition:top .5s ease-in-out 0s}.loading .modal-header{top:-100%}.modal-header .icon-search{float:left;margin:17px 0 0}.icon-close-wrap{padding:16px;float:right;cursor:pointer;margin:5px 0 0}.icon-close-wrap .icon-close{float:left}.icon-close-wrap:active{opacity:.6}.modal-input{border:0;background:0 0;font-size:38px;color:#ba59d2;width:100%}.search-wrap{float:left;width:calc(100% - 100px)}.search-items{width:100%;float:left;padding:80px 0}.no-items-found{width:100%;float:left;margin:30vh 0 0;text-align:center;color:#474747;font-size:32px}.modal-label{float:left;text-transform:uppercase;color:#3e3e3e;font-size:15px}.site-footer{float:left;width:100%;background:#131313;padding:40px 0;position:absolute;bottom:0;font-size:14px}.site-footer a:active{opacity:.5}.light-theme .site-footer{background:#cdcdcd}.attribution{color:#555;float:left}.icon-tmdb{float:left;margin:3px 10px 0 0}.light-theme .icon-tmdb{opacity:.6}.icon-github{float:right}.light-theme .icon-github{opacity:.6} \ No newline at end of file diff --git a/public/assets/js/bundle.js b/public/assets/js/bundle.js index d65e73f..58b1b04 100644 --- a/public/assets/js/bundle.js +++ b/public/assets/js/bundle.js @@ -1,10 +1,12 @@ -!function e(t,n,r){function o(i,s){if(!n[i]){if(!t[i]){var u="function"==typeof require&&require;if(!s&&u)return u(i,!0);if(a)return a(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[i]={exports:{}};t[i][0].call(l.exports,function(e){var n=t[i][1][e];return o(n?n:e)},l,l.exports,e,t,n,r)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i=config.loadingItems?c["default"].createElement("div",{className:"wrap"},c["default"].createElement("div",{className:"load-more",onClick:this.loadMore.bind(this)},"Load more ",this.state.category.name)):"")}},{key:"loadCategoryItems",value:function(e){var t=this;setTimeout(function(){f["default"].categoryItems(e.params.category).then(function(e){t.setState({category:e.category,items:e.items})})},200)}},{key:"loadMore",value:function(){var e=this;f["default"].moreCategoryItems(this.state.category,this.state.currentLoaded).then(function(t){e.setState({currentLoaded:e.state.currentLoaded+config.loadingItems,items:e.state.items.concat(t)})})}}]),t}(c["default"].Component);n["default"]=h,t.exports=n["default"]},{"../api":2,"../partials/box":3,react:208}],12:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;nc;++c)if(u=o[c],!u.isDefault&&!u.isNotFound&&(a=r(u,t,n)))return a.routes.unshift(e),a;var p=e.defaultRoute;if(p&&(f=i.extractParams(p.path,t)))return new s(t,f,n,[e,p]);var d=e.notFoundRoute;if(d&&(f=i.extractParams(d.path,t)))return new s(t,f,n,[e,d]);var f=i.extractParams(e.path,t);return f?new s(t,f,n,[e]):null}var o=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},a=function(){function e(e,t){for(var n=0;ns;++s)a=r(e[s],n,o);return a}}]),e}();t.exports=s},{"./PathUtils":19}],18:[function(e,t,n){"use strict";var r=e("./PropTypes"),o={contextTypes:{router:r.router.isRequired},makePath:function(e,t,n){return this.context.router.makePath(e,t,n)},makeHref:function(e,t,n){return this.context.router.makeHref(e,t,n)},transitionTo:function(e,t,n){this.context.router.transitionTo(e,t,n)},replaceWith:function(e,t,n){this.context.router.replaceWith(e,t,n)},goBack:function(){return this.context.router.goBack()}};t.exports=o},{"./PropTypes":20}],19:[function(e,t,n){"use strict";function r(e){if(!(e in p)){var t=[],n=e.replace(s,function(e,n){return n?(t.push(n),"([^/?#]+)"):"*"===e?(t.push("splat"),"(.*?)"):"\\"+e});p[e]={matcher:new RegExp("^"+n+"$","i"),paramNames:t}}return p[e]}var o=e("react/lib/invariant"),a=e("object-assign"),i=e("qs"),s=/:([a-zA-Z_$][a-zA-Z0-9_$]*)|[*.()\[\]\\+|{}^$]/g,u=/:([a-zA-Z_$][a-zA-Z0-9_$?]*[?]?)|[*]/g,c=/\/\/\?|\/\?\/|\/\?/g,l=/\?(.*)$/,p={},d={isAbsolute:function(e){return"/"===e.charAt(0)},join:function(e,t){return e.replace(/\/*$/,"/")+t},extractParamNames:function(e){return r(e).paramNames},extractParams:function(e,t){var n=r(e),o=n.matcher,a=n.paramNames,i=t.match(o);if(!i)return null;var s={};return a.forEach(function(e,t){s[e]=i[t+1]}),s},injectParams:function(e,t){t=t||{};var n=0;return e.replace(u,function(r,a){if(a=a||"splat","?"===a.slice(-1)){if(a=a.slice(0,-1),null==t[a])return""}else o(null!=t[a],'Missing "%s" parameter for path "%s"',a,e);var i;return"splat"===a&&Array.isArray(t[a])?(i=t[a][n++],o(null!=i,'Missing splat # %s for path "%s"',n,e)):i=t[a],i}).replace(c,"/")},extractQuery:function(e){var t=e.match(l);return t&&i.parse(t[1])},withoutQuery:function(e){return e.replace(l,"")},withQuery:function(e,t){var n=d.extractQuery(e);n&&(t=t?a(n,t):n);var r=i.stringify(t,{arrayFormat:"brackets"});return r?d.withoutQuery(e)+"?"+r:d.withoutQuery(e)}};t.exports=d},{"object-assign":48,qs:49,"react/lib/invariant":188}],20:[function(e,t,n){"use strict";var r=e("react/lib/Object.assign"),o=e("react").PropTypes,a=e("./Route"),i=r({},o,{falsy:function(e,t,n){return e[t]?new Error("<"+n+'> should not have a "'+t+'" prop'):void 0},route:o.instanceOf(a),router:o.func});t.exports=i},{"./Route":22,react:208,"react/lib/Object.assign":79}],21:[function(e,t,n){"use strict";function r(e,t,n){this.to=e,this.params=t,this.query=n}t.exports=r},{}],22:[function(e,t,n){"use strict";var r,o=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},a=function(){function e(e,t){for(var n=0;n'}}],[{key:"createRoute",value:function(t,n){t=t||{},"string"==typeof t&&(t={path:t});var o=r;o?u(null==t.parentRoute||t.parentRoute===o,"You should not use parentRoute with createRoute inside another route's child callback; it is ignored"):o=t.parentRoute;var a=t.name,i=t.path||a;!i||t.isDefault||t.isNotFound?i=o?o.path:"/":c.isAbsolute(i)?o&&s(i===o.path||0===o.paramNames.length,'You cannot nest path "%s" inside "%s"; the parent requires URL parameters',i,o.path):i=o?c.join(o.path,i):"/"+i,t.isNotFound&&!/\*$/.test(i)&&(i+="*");var l=new e(a,i,t.ignoreScrollBehavior,t.isDefault,t.isNotFound,t.onEnter,t.onLeave,t.handler);if(o&&(l.isDefault?(s(null==o.defaultRoute,"%s may not have more than one default route",o),o.defaultRoute=l):l.isNotFound&&(s(null==o.notFoundRoute,"%s may not have more than one not found route",o),o.notFoundRoute=l),o.appendChild(l)),"function"==typeof n){var p=r;r=l,n.call(l,l),r=p}return l}},{key:"createDefaultRoute",value:function(t){return e.createRoute(i({},t,{isDefault:!0}))}},{key:"createNotFoundRoute",value:function(t){return e.createRoute(i({},t,{isNotFound:!0}))}},{key:"createRedirect",value:function(t){return e.createRoute(i({},t,{path:t.path||t.from||"*",onEnter:function(e,n,r){e.redirect(t.to,t.params||n,t.query||r)}}))}}]),e}();t.exports=l},{"./PathUtils":19,"react/lib/Object.assign":79,"react/lib/invariant":188,"react/lib/warning":207}],23:[function(e,t,n){"use strict";function r(e,t){if(!t)return!0;if(e.pathname===t.pathname)return!1;var n=e.routes,r=t.routes,o=n.filter(function(e){return-1!==r.indexOf(e)});return!o.some(function(e){return e.ignoreScrollBehavior})}var o=e("react/lib/invariant"),a=e("react/lib/ExecutionEnvironment").canUseDOM,i=e("./getWindowScrollPosition"),s={statics:{recordScrollPosition:function(e){this.scrollHistory||(this.scrollHistory={}),this.scrollHistory[e]=i()},getScrollPosition:function(e){return this.scrollHistory||(this.scrollHistory={}),this.scrollHistory[e]||null}},componentWillMount:function(){o(null==this.constructor.getScrollBehavior()||a,"Cannot use scroll behavior without a DOM")},componentDidMount:function(){this._updateScroll()},componentDidUpdate:function(e,t){this._updateScroll(t)},_updateScroll:function(e){if(r(this.state,e)){var t=this.constructor.getScrollBehavior();t&&t.updateScrollPosition(this.constructor.getScrollPosition(this.state.path),this.state.action)}}};t.exports=s},{"./getWindowScrollPosition":38,"react/lib/ExecutionEnvironment":73,"react/lib/invariant":188}],24:[function(e,t,n){"use strict";var r=e("./PropTypes"),o={contextTypes:{router:r.router.isRequired},getPath:function(){return this.context.router.getCurrentPath()},getPathname:function(){return this.context.router.getCurrentPathname()},getParams:function(){return this.context.router.getCurrentParams()},getQuery:function(){return this.context.router.getCurrentQuery()},getRoutes:function(){return this.context.router.getCurrentRoutes()},isActive:function(e,t,n){return this.context.router.isActive(e,t,n)}};t.exports=o},{"./PropTypes":20}],25:[function(e,t,n){"use strict";function r(e,t){this.path=e,this.abortReason=null,this.retry=t.bind(this)}var o=e("./Cancellation"),a=e("./Redirect");r.prototype.abort=function(e){null==this.abortReason&&(this.abortReason=e||"ABORT")},r.prototype.redirect=function(e,t,n){this.abort(new a(e,t,n))},r.prototype.cancel=function(){this.abort(new o)},r.from=function(e,t,n,r){t.reduce(function(t,r,o){return function(a){if(a||e.abortReason)t(a);else if(r.onLeave)try{r.onLeave(e,n[o],t),r.onLeave.length<3&&t()}catch(i){t(i)}else t()}},r)()},r.to=function(e,t,n,r,o){t.reduceRight(function(t,o){return function(a){if(a||e.abortReason)t(a);else if(o.onEnter)try{o.onEnter(e,n,r,t),o.onEnter.length<4&&t()}catch(i){t(i)}else t()}},o)()},t.exports=r},{"./Cancellation":15,"./Redirect":21}],26:[function(e,t,n){"use strict";var r={PUSH:"push",REPLACE:"replace",POP:"pop"};t.exports=r},{}],27:[function(e,t,n){"use strict";var r=e("../actions/LocationActions"),o={updateScrollPosition:function(e,t){switch(t){case r.PUSH:case r.REPLACE:window.scrollTo(0,0);break;case r.POP:e?window.scrollTo(e.x,e.y):window.scrollTo(0,0)}}};t.exports=o},{"../actions/LocationActions":26}],28:[function(e,t,n){"use strict";var r={updateScrollPosition:function(){window.scrollTo(0,0)}};t.exports=r},{}],29:[function(e,t,n){"use strict";var r=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},o=function(){function e(e,t){for(var n=0;nc;++c)if(s=u[c],o[s]!==n[s])return!1;return r(a,i)&&r(i,a)})}function a(e,t){for(var n,r=0,o=e.length;o>r;++r)n=e[r],n.name&&(d(null==t[n.name],'You may not have more than one route named "%s"',n.name),t[n.name]=n),n.childRoutes&&a(n.childRoutes,t)}function i(e,t){return e.some(function(e){return e.name===t})}function s(e,t){for(var n in t)if(String(e[n])!==String(t[n]))return!1;return!0}function u(e,t){for(var n in t)if(String(e[n])!==String(t[n]))return!1;return!0}function c(e){e=e||{},_(e)&&(e={routes:e});var t=[],r=e.location||I,c=e.scrollBehavior||S,m={},k={},A=null,L=null;"string"==typeof r&&(r=new E(r)),r instanceof E?p(!f||"test"===n.env.NODE_ENV,"You should not use a static location in a DOM environment because the router will not be kept in sync with the current URL"):d(f||r.needsDOM===!1,"You cannot use %s without a DOM",r),r!==y||M()||(r=g);var V=l.createClass({displayName:"Router",statics:{isRunning:!1,cancelPendingTransition:function(){A&&(A.cancel(),A=null)},clearAllRoutes:function(){V.cancelPendingTransition(),V.namedRoutes={},V.routes=[]},addRoutes:function(e){_(e)&&(e=C(e)),a(e,V.namedRoutes),V.routes.push.apply(V.routes,e)},replaceRoutes:function(e){V.clearAllRoutes(),V.addRoutes(e),V.refresh()},match:function(e){return x.findMatch(V.routes,e)},makePath:function(e,t,n){var r;if(T.isAbsolute(e))r=e;else{var o=e instanceof P?e:V.namedRoutes[e];d(o instanceof P,'Cannot find a route named "%s"',e),r=o.path}return T.withQuery(T.injectParams(r,t),n)},makeHref:function(e,t,n){var o=V.makePath(e,t,n);return r===v?"#"+o:o},transitionTo:function(e,t,n){var o=V.makePath(e,t,n);A?r.replace(o):r.push(o)},replaceWith:function(e,t,n){r.replace(V.makePath(e,t,n))},goBack:function(){return w.length>1||r===g?(r.pop(),!0):(p(!1,"goBack() was ignored because there is no router history"),!1)},handleAbort:e.onAbort||function(e){if(r instanceof E)throw new Error("Unhandled aborted transition! Reason: "+e);e instanceof D||(e instanceof O?r.replace(V.makePath(e.to,e.params,e.query)):r.pop())},handleError:e.onError||function(e){throw e},handleLocationChange:function(e){V.dispatch(e.path,e.type)},dispatch:function(e,n){V.cancelPendingTransition();var r=m.path,a=null==n;if(r!==e||a){r&&n===h.PUSH&&V.recordScrollPosition(r);var i=V.match(e);p(null!=i,'No route matches path "%s". Make sure you have somewhere in your routes',e,e),null==i&&(i={});var s,u,c=m.routes||[],l=m.params||{},d=m.query||{},f=i.routes||[],v=i.params||{},y=i.query||{};c.length?(s=c.filter(function(e){return!o(f,e,l,v,d,y)}),u=f.filter(function(e){return!o(c,e,l,v,d,y)})):(s=[],u=f);var g=new R(e,V.replaceWith.bind(V,e));A=g;var E=t.slice(c.length-s.length);R.from(g,s,E,function(t){return t||g.abortReason?L.call(V,t,g):void R.to(g,u,v,y,function(t){L.call(V,t,g,{path:e,action:n,pathname:i.pathname,routes:f,params:v,query:y})})})}},run:function(e){d(!V.isRunning,"Router is already running"),L=function(t,n,r){t&&V.handleError(t),A===n&&(A=null,n.abortReason?V.handleAbort(n.abortReason):e.call(V,V,k=r))},r instanceof E||(r.addChangeListener&&r.addChangeListener(V.handleLocationChange),V.isRunning=!0),V.refresh()},refresh:function(){V.dispatch(r.getCurrentPath(),null)},stop:function(){V.cancelPendingTransition(),r.removeChangeListener&&r.removeChangeListener(V.handleLocationChange),V.isRunning=!1},getLocation:function(){return r},getScrollBehavior:function(){return c},getRouteAtDepth:function(e){var t=m.routes;return t&&t[e]},setRouteComponentAtDepth:function(e,n){t[e]=n},getCurrentPath:function(){return m.path},getCurrentPathname:function(){return m.pathname},getCurrentParams:function(){return m.params},getCurrentQuery:function(){return m.query},getCurrentRoutes:function(){return m.routes},isActive:function(e,t,n){return T.isAbsolute(e)?e===m.path:i(m.routes,e)&&s(m.params,t)&&(null==n||u(m.query,n))}},mixins:[b],propTypes:{children:N.falsy},childContextTypes:{routeDepth:N.number.isRequired,router:N.router.isRequired},getChildContext:function(){return{routeDepth:1,router:V}},getInitialState:function(){return m=k},componentWillReceiveProps:function(){this.setState(m=k)},componentWillUnmount:function(){V.stop()},render:function(){var e=V.getRouteAtDepth(0);return e?l.createElement(e.handler,this.props):null}});return V.clearAllRoutes(),e.routes&&V.addRoutes(e.routes),V}var l=e("react"),p=e("react/lib/warning"),d=e("react/lib/invariant"),f=e("react/lib/ExecutionEnvironment").canUseDOM,h=e("./actions/LocationActions"),m=e("./behaviors/ImitateBrowserBehavior"),v=e("./locations/HashLocation"),y=e("./locations/HistoryLocation"),g=e("./locations/RefreshLocation"),E=e("./locations/StaticLocation"),b=e("./ScrollHistory"),C=e("./createRoutesFromReactChildren"),_=e("./isReactChildren"),R=e("./Transition"),N=e("./PropTypes"),O=e("./Redirect"),w=e("./History"),D=e("./Cancellation"),x=e("./Match"),P=e("./Route"),M=e("./supportsHistory"),T=e("./PathUtils"),I=f?v:"/",S=f?m:null;t.exports=c}).call(this,e("_process"))},{"./Cancellation":15,"./History":16,"./Match":17,"./PathUtils":19,"./PropTypes":20,"./Redirect":21,"./Route":22,"./ScrollHistory":23,"./Transition":25,"./actions/LocationActions":26,"./behaviors/ImitateBrowserBehavior":27,"./createRoutesFromReactChildren":37,"./isReactChildren":40,"./locations/HashLocation":41,"./locations/HistoryLocation":42,"./locations/RefreshLocation":43,"./locations/StaticLocation":44,"./supportsHistory":47,_process:14,react:208,"react/lib/ExecutionEnvironment":73,"react/lib/invariant":188,"react/lib/warning":207}],37:[function(e,t,n){"use strict";function r(e,t,n){e=e||"UnknownComponent";for(var r in t)if(t.hasOwnProperty(r)){var o=t[r](n,r,e);o instanceof Error&&c(!1,o.message)}}function o(e){var t=u({},e),n=t.handler;return n&&(t.onEnter=n.willTransitionTo,t.onLeave=n.willTransitionFrom),t}function a(e){if(s.isValidElement(e)){var t=e.type,n=u({},t.defaultProps,e.props);return t.propTypes&&r(t.displayName,t.propTypes,n),t===l?f.createDefaultRoute(o(n)):t===p?f.createNotFoundRoute(o(n)):t===d?f.createRedirect(o(n)):f.createRoute(o(n),function(){n.children&&i(n.children)})}}function i(e){var t=[];return s.Children.forEach(e,function(e){(e=a(e))&&t.push(e)}),t}var s=e("react"),u=e("react/lib/Object.assign"),c=e("react/lib/warning"),l=e("./components/DefaultRoute"),p=e("./components/NotFoundRoute"),d=e("./components/Redirect"),f=e("./Route");t.exports=i},{"./Route":22,"./components/DefaultRoute":30,"./components/NotFoundRoute":32,"./components/Redirect":33,react:208,"react/lib/Object.assign":79,"react/lib/warning":207}],38:[function(e,t,n){"use strict";function r(){return o(a,"Cannot get current scroll position without a DOM"),{x:window.pageXOffset||document.documentElement.scrollLeft,y:window.pageYOffset||document.documentElement.scrollTop}}var o=e("react/lib/invariant"),a=e("react/lib/ExecutionEnvironment").canUseDOM;t.exports=r},{"react/lib/ExecutionEnvironment":73,"react/lib/invariant":188}],39:[function(e,t,n){"use strict";n.DefaultRoute=e("./components/DefaultRoute"),n.Link=e("./components/Link"),n.NotFoundRoute=e("./components/NotFoundRoute"),n.Redirect=e("./components/Redirect"),n.Route=e("./components/Route"),n.ActiveHandler=e("./components/RouteHandler"),n.RouteHandler=n.ActiveHandler,n.HashLocation=e("./locations/HashLocation"),n.HistoryLocation=e("./locations/HistoryLocation"),n.RefreshLocation=e("./locations/RefreshLocation"),n.StaticLocation=e("./locations/StaticLocation"),n.TestLocation=e("./locations/TestLocation"),n.ImitateBrowserBehavior=e("./behaviors/ImitateBrowserBehavior"),n.ScrollToTopBehavior=e("./behaviors/ScrollToTopBehavior"),n.History=e("./History"),n.Navigation=e("./Navigation"),n.State=e("./State"),n.createRoute=e("./Route").createRoute,n.createDefaultRoute=e("./Route").createDefaultRoute,n.createNotFoundRoute=e("./Route").createNotFoundRoute,n.createRedirect=e("./Route").createRedirect,n.createRoutesFromReactChildren=e("./createRoutesFromReactChildren"),n.create=e("./createRouter"),n.run=e("./runRouter")},{"./History":16,"./Navigation":18,"./Route":22,"./State":24,"./behaviors/ImitateBrowserBehavior":27,"./behaviors/ScrollToTopBehavior":28,"./components/DefaultRoute":30,"./components/Link":31,"./components/NotFoundRoute":32,"./components/Redirect":33,"./components/Route":34,"./components/RouteHandler":35,"./createRouter":36,"./createRoutesFromReactChildren":37,"./locations/HashLocation":41,"./locations/HistoryLocation":42,"./locations/RefreshLocation":43,"./locations/StaticLocation":44,"./locations/TestLocation":45,"./runRouter":46}],40:[function(e,t,n){"use strict";function r(e){return null==e||a.isValidElement(e)}function o(e){return r(e)||Array.isArray(e)&&e.every(r)}var a=e("react");t.exports=o},{react:208}],41:[function(e,t,n){"use strict";function r(e){e===s.PUSH&&(u.length+=1);var t={path:p.getCurrentPath(),type:e};c.forEach(function(e){e.call(p,t)})}function o(){var e=p.getCurrentPath();return"/"===e.charAt(0)?!0:(p.replace("/"+e),!1)}function a(){if(o()){var e=i;i=null,r(e||s.POP)}}var i,s=e("../actions/LocationActions"),u=e("../History"),c=[],l=!1,p={addChangeListener:function(e){c.push(e),o(),l||(window.addEventListener?window.addEventListener("hashchange",a,!1):window.attachEvent("onhashchange",a),l=!0)},removeChangeListener:function(e){c=c.filter(function(t){return t!==e}),0===c.length&&(window.removeEventListener?window.removeEventListener("hashchange",a,!1):window.removeEvent("onhashchange",a),l=!1)},push:function(e){i=s.PUSH,window.location.hash=e},replace:function(e){i=s.REPLACE,window.location.replace(window.location.pathname+window.location.search+"#"+e)},pop:function(){i=s.POP,u.back()},getCurrentPath:function(){return decodeURI(window.location.href.split("#")[1]||"")},toString:function(){return""}};t.exports=p},{"../History":16,"../actions/LocationActions":26}],42:[function(e,t,n){"use strict";function r(e){var t={path:c.getCurrentPath(),type:e};s.forEach(function(e){e.call(c,t)})}function o(e){void 0!==e.state&&r(a.POP)}var a=e("../actions/LocationActions"),i=e("../History"),s=[],u=!1,c={addChangeListener:function(e){s.push(e),u||(window.addEventListener?window.addEventListener("popstate",o,!1):window.attachEvent("onpopstate",o),u=!0)},removeChangeListener:function(e){s=s.filter(function(t){return t!==e}),0===s.length&&(window.addEventListener?window.removeEventListener("popstate",o,!1):window.removeEvent("onpopstate",o),u=!1)},push:function(e){window.history.pushState({path:e},"",e),i.length+=1,r(a.PUSH)},replace:function(e){window.history.replaceState({path:e},"",e),r(a.REPLACE)},pop:i.back,getCurrentPath:function(){return decodeURI(window.location.pathname+window.location.search)},toString:function(){return""}};t.exports=c},{"../History":16,"../actions/LocationActions":26}],43:[function(e,t,n){"use strict";var r=e("./HistoryLocation"),o=e("../History"),a={push:function(e){window.location=e},replace:function(e){window.location.replace(e)},pop:o.back,getCurrentPath:r.getCurrentPath,toString:function(){return""}};t.exports=a},{"../History":16,"./HistoryLocation":42}],44:[function(e,t,n){"use strict";function r(){i(!1,"You cannot modify a static location")}var o=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},a=function(){function e(e,t){for(var n=0;n'}}]),e}();s.prototype.push=r,s.prototype.replace=r,s.prototype.pop=r,t.exports=s},{"react/lib/invariant":188}],45:[function(e,t,n){"use strict";var r=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},o=function(){function e(e,t){for(var n=0;nn;++n)this.listeners[n].call(this,t)}},{key:"addChangeListener",value:function(e){this.listeners.push(e)}},{key:"removeChangeListener",value:function(e){this.listeners=this.listeners.filter(function(t){return t!==e})}},{key:"push",value:function(e){this.history.push(e),this._updateHistoryLength(),this._notifyChange(i.PUSH)}},{key:"replace",value:function(e){a(this.history.length,"You cannot replace the current path with no history"),this.history[this.history.length-1]=e,this._notifyChange(i.REPLACE)}},{key:"pop",value:function(){this.history.pop(),this._updateHistoryLength(),this._notifyChange(i.POP)}},{key:"getCurrentPath",value:function(){return this.history[this.history.length-1]}},{key:"toString",value:function(){return""}}]),e}();t.exports=u},{"../History":16,"../actions/LocationActions":26,"react/lib/invariant":188}],46:[function(e,t,n){"use strict";function r(e,t,n){"function"==typeof t&&(n=t,t=null);var r=o({routes:e,location:t});return r.run(n),r}var o=e("./createRouter");t.exports=r},{"./createRouter":36}],47:[function(e,t,n){"use strict";function r(){var e=navigator.userAgent;return-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone")?window.history&&"pushState"in window.history:!1}t.exports=r},{}],48:[function(e,t,n){ -"use strict";function r(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}t.exports=Object.assign||function(e,t){for(var n,o,a=r(e),i=1;ia;++a){var s=o[a],u=-1===s.indexOf("]=")?s.indexOf("="):s.indexOf("]=")+1;if(-1===u)n[r.decode(s)]="";else{var c=r.decode(s.slice(0,u)),l=r.decode(s.slice(u+1));if(Object.prototype.hasOwnProperty(c))continue;n[c]=n.hasOwnProperty(c)?[].concat(n[c]).concat(l):l}}return n},o.parseObject=function(e,t,n){if(!e.length)return t;var r=e.shift(),a={};if("[]"===r)a=[],a=a.concat(o.parseObject(e,t,n));else{var i="["===r[0]&&"]"===r[r.length-1]?r.slice(1,r.length-1):r,s=parseInt(i,10),u=""+s;!isNaN(s)&&r!==i&&u===i&&s>=0&&s<=n.arrayLimit?(a=[],a[s]=o.parseObject(e,t,n)):a[i]=o.parseObject(e,t,n)}return a},o.parseKeys=function(e,t,n){if(e){var r=/^([^\[\]]*)/,a=/(\[[^\[\]]*\])/g,i=r.exec(e);if(!Object.prototype.hasOwnProperty(i[1])){var s=[];i[1]&&s.push(i[1]);for(var u=0;null!==(i=a.exec(e))&&us;++s){var c=i[s],l=o.parseKeys(c,n[c],t);a=r.merge(a,l)}return r.compact(a)}},{"./utils":53}],52:[function(e,t,n){var r=e("./utils"),o={delimiter:"&",arrayPrefixGenerators:{brackets:function(e,t){return e+"[]"},indices:function(e,t){return e+"["+t+"]"},repeat:function(e,t){return e}}};o.stringify=function(e,t,n){if(r.isBuffer(e)?e=e.toString():e instanceof Date?e=e.toISOString():null===e&&(e=""),"string"==typeof e||"number"==typeof e||"boolean"==typeof e)return[encodeURIComponent(t)+"="+encodeURIComponent(e)];var a=[];if("undefined"==typeof e)return a;for(var i=Object.keys(e),s=0,u=i.length;u>s;++s){var c=i[s];a=a.concat(Array.isArray(e)?o.stringify(e[c],n(t,c),n):o.stringify(e[c],t+"["+c+"]",n))}return a},t.exports=function(e,t){t=t||{};var n="undefined"==typeof t.delimiter?o.delimiter:t.delimiter,r=[];if("object"!=typeof e||null===e)return"";var a;a=t.arrayFormat in o.arrayPrefixGenerators?t.arrayFormat:"indices"in t?t.indices?"indices":"repeat":"indices";for(var i=o.arrayPrefixGenerators[a],s=Object.keys(e),u=0,c=s.length;c>u;++u){var l=s[u];r=r.concat(o.stringify(e[l],l,i))}return r.join(n)}},{"./utils":53}],53:[function(e,t,n){n.arrayToObject=function(e){for(var t={},n=0,r=e.length;r>n;++n)"undefined"!=typeof e[n]&&(t[n]=e[n]);return t},n.merge=function(e,t){if(!t)return e;if("object"!=typeof t)return Array.isArray(e)?e.push(t):e[t]=!0,e;if("object"!=typeof e)return e=[e].concat(t);Array.isArray(e)&&!Array.isArray(t)&&(e=n.arrayToObject(e));for(var r=Object.keys(t),o=0,a=r.length;a>o;++o){var i=r[o],s=t[i];e[i]=e[i]?n.merge(e[i],s):s}return e},n.decode=function(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(t){return e}},n.compact=function(e,t){if("object"!=typeof e||null===e)return e;t=t||[];var r=t.indexOf(e);if(-1!==r)return t[r];if(t.push(e),Array.isArray(e)){for(var o=[],a=0,i=e.length;i>a;++a)"undefined"!=typeof e[a]&&o.push(e[a]);return o}var s=Object.keys(e);for(a=0,i=s.length;i>a;++a){var u=s[a];e[u]=n.compact(e[u],t)}return e},n.isRegExp=function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},n.isBuffer=function(e){return null===e||"undefined"==typeof e?!1:!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))}},{}],54:[function(e,t,n){"use strict";var r=e("./focusNode"),o={componentDidMount:function(){this.props.autoFocus&&r(this.getDOMNode())}};t.exports=o},{"./focusNode":172}],55:[function(e,t,n){"use strict";function r(){var e=window.opera;return"object"==typeof e&&"function"==typeof e.version&&parseInt(e.version(),10)<=12}function o(e){return(e.ctrlKey||e.altKey||e.metaKey)&&!(e.ctrlKey&&e.altKey)}function a(e){switch(e){case x.topCompositionStart:return P.compositionStart;case x.topCompositionEnd:return P.compositionEnd;case x.topCompositionUpdate:return P.compositionUpdate}}function i(e,t){return e===x.topKeyDown&&t.keyCode===C}function s(e,t){switch(e){case x.topKeyUp:return-1!==b.indexOf(t.keyCode);case x.topKeyDown:return t.keyCode!==C;case x.topKeyPress:case x.topMouseDown:case x.topBlur:return!0;default:return!1}}function u(e){var t=e.detail;return"object"==typeof t&&"data"in t?t.data:null}function c(e,t,n,r){var o,c;if(_?o=a(e):T?s(e,r)&&(o=P.compositionEnd):i(e,r)&&(o=P.compositionStart),!o)return null;O&&(T||o!==P.compositionStart?o===P.compositionEnd&&T&&(c=T.getData()):T=v.getPooled(t));var l=y.getPooled(o,n,r);if(c)l.data=c;else{var p=u(r);null!==p&&(l.data=p)}return h.accumulateTwoPhaseDispatches(l),l}function l(e,t){switch(e){case x.topCompositionEnd:return u(t);case x.topKeyPress:var n=t.which;return n!==w?null:(M=!0,D);case x.topTextInput:var r=t.data;return r===D&&M?null:r;default:return null}}function p(e,t){if(T){if(e===x.topCompositionEnd||s(e,t)){var n=T.getData();return v.release(T),T=null,n}return null}switch(e){case x.topPaste:return null;case x.topKeyPress:return t.which&&!o(t)?String.fromCharCode(t.which):null;case x.topCompositionEnd:return O?null:t.data;default:return null}}function d(e,t,n,r){var o;if(o=N?l(e,r):p(e,r),!o)return null;var a=g.getPooled(P.beforeInput,n,r);return a.data=o,h.accumulateTwoPhaseDispatches(a),a}var f=e("./EventConstants"),h=e("./EventPropagators"),m=e("./ExecutionEnvironment"),v=e("./FallbackCompositionState"),y=e("./SyntheticCompositionEvent"),g=e("./SyntheticInputEvent"),E=e("./keyOf"),b=[9,13,27,32],C=229,_=m.canUseDOM&&"CompositionEvent"in window,R=null;m.canUseDOM&&"documentMode"in document&&(R=document.documentMode);var N=m.canUseDOM&&"TextEvent"in window&&!R&&!r(),O=m.canUseDOM&&(!_||R&&R>8&&11>=R),w=32,D=String.fromCharCode(w),x=f.topLevelTypes,P={beforeInput:{phasedRegistrationNames:{bubbled:E({onBeforeInput:null}),captured:E({onBeforeInputCapture:null})},dependencies:[x.topCompositionEnd,x.topKeyPress,x.topTextInput,x.topPaste]},compositionEnd:{phasedRegistrationNames:{bubbled:E({onCompositionEnd:null}),captured:E({onCompositionEndCapture:null})},dependencies:[x.topBlur,x.topCompositionEnd,x.topKeyDown,x.topKeyPress,x.topKeyUp,x.topMouseDown]},compositionStart:{phasedRegistrationNames:{bubbled:E({onCompositionStart:null}),captured:E({onCompositionStartCapture:null})},dependencies:[x.topBlur,x.topCompositionStart,x.topKeyDown,x.topKeyPress,x.topKeyUp,x.topMouseDown]},compositionUpdate:{phasedRegistrationNames:{bubbled:E({onCompositionUpdate:null}),captured:E({onCompositionUpdateCapture:null})},dependencies:[x.topBlur,x.topCompositionUpdate,x.topKeyDown,x.topKeyPress,x.topKeyUp,x.topMouseDown]}},M=!1,T=null,I={eventTypes:P,extractEvents:function(e,t,n,r){return[c(e,t,n,r),d(e,t,n,r)]}};t.exports=I},{"./EventConstants":67,"./EventPropagators":72,"./ExecutionEnvironment":73,"./FallbackCompositionState":74,"./SyntheticCompositionEvent":146,"./SyntheticInputEvent":150,"./keyOf":194}],56:[function(e,t,n){"use strict";function r(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var o={boxFlex:!0,boxFlexGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,strokeDashoffset:!0,strokeOpacity:!0,strokeWidth:!0},a=["Webkit","ms","Moz","O"];Object.keys(o).forEach(function(e){a.forEach(function(t){o[r(t,e)]=o[e]})});var i={background:{backgroundImage:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundColor:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0}},s={isUnitlessNumber:o,shorthandPropertyExpansions:i};t.exports=s},{}],57:[function(e,t,n){(function(n){"use strict";var r=e("./CSSProperty"),o=e("./ExecutionEnvironment"),a=e("./camelizeStyleName"),i=e("./dangerousStyleValue"),s=e("./hyphenateStyleName"),u=e("./memoizeStringOnly"),c=e("./warning"),l=u(function(e){return s(e)}),p="cssFloat";if(o.canUseDOM&&void 0===document.documentElement.style.cssFloat&&(p="styleFloat"),"production"!==n.env.NODE_ENV)var d=/^(?:webkit|moz|o)[A-Z]/,f=/;\s*$/,h={},m={},v=function(e){h.hasOwnProperty(e)&&h[e]||(h[e]=!0,"production"!==n.env.NODE_ENV?c(!1,"Unsupported style property %s. Did you mean %s?",e,a(e)):null)},y=function(e){h.hasOwnProperty(e)&&h[e]||(h[e]=!0,"production"!==n.env.NODE_ENV?c(!1,"Unsupported vendor-prefixed style property %s. Did you mean %s?",e,e.charAt(0).toUpperCase()+e.slice(1)):null)},g=function(e,t){m.hasOwnProperty(t)&&m[t]||(m[t]=!0,"production"!==n.env.NODE_ENV?c(!1,'Style property values shouldn\'t contain a semicolon. Try "%s: %s" instead.',e,t.replace(f,"")):null)},E=function(e,t){e.indexOf("-")>-1?v(e):d.test(e)?y(e):f.test(t)&&g(e,t)};var b={createMarkupForStyles:function(e){var t="";for(var r in e)if(e.hasOwnProperty(r)){var o=e[r];"production"!==n.env.NODE_ENV&&E(r,o),null!=o&&(t+=l(r)+":",t+=i(r,o)+";")}return t||null},setValueForStyles:function(e,t){var o=e.style;for(var a in t)if(t.hasOwnProperty(a)){"production"!==n.env.NODE_ENV&&E(a,t[a]);var s=i(a,t[a]);if("float"===a&&(a=p),s)o[a]=s;else{var u=r.shorthandPropertyExpansions[a];if(u)for(var c in u)o[c]="";else o[a]=""}}}};t.exports=b}).call(this,e("_process"))},{"./CSSProperty":56,"./ExecutionEnvironment":73,"./camelizeStyleName":161,"./dangerousStyleValue":166,"./hyphenateStyleName":186,"./memoizeStringOnly":196,"./warning":207,_process:14}],58:[function(e,t,n){(function(n){"use strict";function r(){this._callbacks=null,this._contexts=null}var o=e("./PooledClass"),a=e("./Object.assign"),i=e("./invariant");a(r.prototype,{enqueue:function(e,t){this._callbacks=this._callbacks||[],this._contexts=this._contexts||[],this._callbacks.push(e),this._contexts.push(t)},notifyAll:function(){var e=this._callbacks,t=this._contexts;if(e){"production"!==n.env.NODE_ENV?i(e.length===t.length,"Mismatched list of contexts in callback queue"):i(e.length===t.length),this._callbacks=null,this._contexts=null;for(var r=0,o=e.length;o>r;r++)e[r].call(t[r]);e.length=0,t.length=0}},reset:function(){this._callbacks=null,this._contexts=null},destructor:function(){this.reset()}}),o.addPoolingTo(r),t.exports=r}).call(this,e("_process"))},{"./Object.assign":79,"./PooledClass":80,"./invariant":188,_process:14}],59:[function(e,t,n){"use strict";function r(e){return"SELECT"===e.nodeName||"INPUT"===e.nodeName&&"file"===e.type}function o(e){var t=R.getPooled(x.change,M,e);b.accumulateTwoPhaseDispatches(t),_.batchedUpdates(a,t)}function a(e){E.enqueueEvents(e),E.processEventQueue()}function i(e,t){P=e,M=t,P.attachEvent("onchange",o)}function s(){P&&(P.detachEvent("onchange",o),P=null,M=null)}function u(e,t,n){return e===D.topChange?n:void 0}function c(e,t,n){e===D.topFocus?(s(),i(t,n)):e===D.topBlur&&s()}function l(e,t){P=e,M=t,T=e.value,I=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(P,"value",A),P.attachEvent("onpropertychange",d)}function p(){P&&(delete P.value,P.detachEvent("onpropertychange",d),P=null,M=null,T=null,I=null)}function d(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==T&&(T=t,o(e))}}function f(e,t,n){return e===D.topInput?n:void 0}function h(e,t,n){e===D.topFocus?(p(),l(t,n)):e===D.topBlur&&p()}function m(e,t,n){return e!==D.topSelectionChange&&e!==D.topKeyUp&&e!==D.topKeyDown||!P||P.value===T?void 0:(T=P.value,M)}function v(e){return"INPUT"===e.nodeName&&("checkbox"===e.type||"radio"===e.type)}function y(e,t,n){return e===D.topClick?n:void 0}var g=e("./EventConstants"),E=e("./EventPluginHub"),b=e("./EventPropagators"),C=e("./ExecutionEnvironment"),_=e("./ReactUpdates"),R=e("./SyntheticEvent"),N=e("./isEventSupported"),O=e("./isTextInputElement"),w=e("./keyOf"),D=g.topLevelTypes,x={change:{phasedRegistrationNames:{bubbled:w({onChange:null}),captured:w({onChangeCapture:null})},dependencies:[D.topBlur,D.topChange,D.topClick,D.topFocus,D.topInput,D.topKeyDown,D.topKeyUp,D.topSelectionChange]}},P=null,M=null,T=null,I=null,S=!1;C.canUseDOM&&(S=N("change")&&(!("documentMode"in document)||document.documentMode>8));var k=!1;C.canUseDOM&&(k=N("input")&&(!("documentMode"in document)||document.documentMode>9));var A={get:function(){return I.get.call(this)},set:function(e){T=""+e,I.set.call(this,e)}},L={eventTypes:x,extractEvents:function(e,t,n,o){var a,i;if(r(t)?S?a=u:i=c:O(t)?k?a=f:(a=m,i=h):v(t)&&(a=y),a){var s=a(e,t,n);if(s){var l=R.getPooled(x.change,s,o);return b.accumulateTwoPhaseDispatches(l),l}}i&&i(e,t,n)}};t.exports=L},{"./EventConstants":67,"./EventPluginHub":69,"./EventPropagators":72,"./ExecutionEnvironment":73,"./ReactUpdates":140,"./SyntheticEvent":148,"./isEventSupported":189,"./isTextInputElement":191,"./keyOf":194}],60:[function(e,t,n){"use strict";var r=0,o={createReactRootIndex:function(){return r++}};t.exports=o},{}],61:[function(e,t,n){(function(n){"use strict";function r(e,t,n){e.insertBefore(t,e.childNodes[n]||null)}var o=e("./Danger"),a=e("./ReactMultiChildUpdateTypes"),i=e("./setTextContent"),s=e("./invariant"),u={dangerouslyReplaceNodeWithMarkup:o.dangerouslyReplaceNodeWithMarkup,updateTextContent:i,processUpdates:function(e,t){for(var u,c=null,l=null,p=0;p when using tables, nesting tags like
,

, or , or using non-SVG elements in an parent. Try inspecting the child nodes of the element with React ID `%s`.",d,h):s(f),c=c||{},c[h]=c[h]||[],c[h][d]=f,l=l||[],l.push(f)}var m=o.dangerouslyRenderMarkup(t);if(l)for(var v=0;vt||o.hasOverloadedBooleanValue[e]&&t===!1}var o=e("./DOMProperty"),a=e("./quoteAttributeValueForBrowser"),i=e("./warning");if("production"!==n.env.NODE_ENV)var s={children:!0,dangerouslySetInnerHTML:!0,key:!0,ref:!0},u={},c=function(e){if(!(s.hasOwnProperty(e)&&s[e]||u.hasOwnProperty(e)&&u[e])){u[e]=!0;var t=e.toLowerCase(),r=o.isCustomAttribute(t)?t:o.getPossibleStandardName.hasOwnProperty(t)?o.getPossibleStandardName[t]:null;"production"!==n.env.NODE_ENV?i(null==r,"Unknown DOM property %s. Did you mean %s?",e,r):null}};var l={createMarkupForID:function(e){return o.ID_ATTRIBUTE_NAME+"="+a(e)},createMarkupForProperty:function(e,t){if(o.isStandardName.hasOwnProperty(e)&&o.isStandardName[e]){if(r(e,t))return"";var i=o.getAttributeName[e];return o.hasBooleanValue[e]||o.hasOverloadedBooleanValue[e]&&t===!0?i:i+"="+a(t)}return o.isCustomAttribute(e)?null==t?"":e+"="+a(t):("production"!==n.env.NODE_ENV&&c(e),null)},setValueForProperty:function(e,t,a){if(o.isStandardName.hasOwnProperty(t)&&o.isStandardName[t]){var i=o.getMutationMethod[t];if(i)i(e,a);else if(r(t,a))this.deleteValueForProperty(e,t);else if(o.mustUseAttribute[t])e.setAttribute(o.getAttributeName[t],""+a);else{var s=o.getPropertyName[t];o.hasSideEffects[t]&&""+e[s]==""+a||(e[s]=a)}}else o.isCustomAttribute(t)?null==a?e.removeAttribute(t):e.setAttribute(t,""+a):"production"!==n.env.NODE_ENV&&c(t)},deleteValueForProperty:function(e,t){if(o.isStandardName.hasOwnProperty(t)&&o.isStandardName[t]){var r=o.getMutationMethod[t];if(r)r(e,void 0);else if(o.mustUseAttribute[t])e.removeAttribute(o.getAttributeName[t]);else{var a=o.getPropertyName[t],i=o.getDefaultValueForProperty(e.nodeName,a);o.hasSideEffects[t]&&""+e[a]===i||(e[a]=i)}}else o.isCustomAttribute(t)?e.removeAttribute(t):"production"!==n.env.NODE_ENV&&c(t)}};t.exports=l}).call(this,e("_process"))},{"./DOMProperty":62,"./quoteAttributeValueForBrowser":200,"./warning":207,_process:14}],64:[function(e,t,n){(function(n){"use strict";function r(e){return e.substring(1,e.indexOf(" "))}var o=e("./ExecutionEnvironment"),a=e("./createNodesFromMarkup"),i=e("./emptyFunction"),s=e("./getMarkupWrap"),u=e("./invariant"),c=/^(<[^ \/>]+)/,l="data-danger-index",p={dangerouslyRenderMarkup:function(e){"production"!==n.env.NODE_ENV?u(o.canUseDOM,"dangerouslyRenderMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use React.renderToString for server rendering."):u(o.canUseDOM);for(var t,p={},d=0;d node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See React.renderToString()."):u("html"!==e.tagName.toLowerCase());var r=a(t,i)[0];e.parentNode.replaceChild(r,e)}};t.exports=p}).call(this,e("_process"))},{"./ExecutionEnvironment":73,"./createNodesFromMarkup":165,"./emptyFunction":167,"./getMarkupWrap":180,"./invariant":188,_process:14}],65:[function(e,t,n){"use strict";var r=e("./keyOf"),o=[r({ResponderEventPlugin:null}),r({SimpleEventPlugin:null}),r({TapEventPlugin:null}),r({EnterLeaveEventPlugin:null}),r({ChangeEventPlugin:null}),r({SelectEventPlugin:null}),r({BeforeInputEventPlugin:null}),r({AnalyticsEventPlugin:null}),r({MobileSafariClickEventPlugin:null})];t.exports=o},{"./keyOf":194}],66:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./EventPropagators"),a=e("./SyntheticMouseEvent"),i=e("./ReactMount"),s=e("./keyOf"),u=r.topLevelTypes,c=i.getFirstReactDOM,l={mouseEnter:{registrationName:s({onMouseEnter:null}),dependencies:[u.topMouseOut,u.topMouseOver]},mouseLeave:{registrationName:s({onMouseLeave:null}),dependencies:[u.topMouseOut,u.topMouseOver]}},p=[null,null],d={eventTypes:l,extractEvents:function(e,t,n,r){if(e===u.topMouseOver&&(r.relatedTarget||r.fromElement))return null;if(e!==u.topMouseOut&&e!==u.topMouseOver)return null;var s;if(t.window===t)s=t;else{var d=t.ownerDocument;s=d?d.defaultView||d.parentWindow:window}var f,h;if(e===u.topMouseOut?(f=t,h=c(r.relatedTarget||r.toElement)||s):(f=s,h=t),f===h)return null;var m=f?i.getID(f):"",v=h?i.getID(h):"",y=a.getPooled(l.mouseLeave,m,r);y.type="mouseleave",y.target=f,y.relatedTarget=h;var g=a.getPooled(l.mouseEnter,v,r);return g.type="mouseenter",g.target=h,g.relatedTarget=f,o.accumulateEnterLeaveDispatches(y,g,m,v),p[0]=y,p[1]=g,p}};t.exports=d},{"./EventConstants":67,"./EventPropagators":72,"./ReactMount":123,"./SyntheticMouseEvent":152,"./keyOf":194}],67:[function(e,t,n){"use strict";var r=e("./keyMirror"),o=r({bubbled:null,captured:null}),a=r({topBlur:null,topChange:null,topClick:null,topCompositionEnd:null,topCompositionStart:null,topCompositionUpdate:null,topContextMenu:null,topCopy:null,topCut:null,topDoubleClick:null,topDrag:null,topDragEnd:null,topDragEnter:null,topDragExit:null,topDragLeave:null,topDragOver:null,topDragStart:null,topDrop:null,topError:null,topFocus:null,topInput:null,topKeyDown:null,topKeyPress:null,topKeyUp:null,topLoad:null,topMouseDown:null,topMouseMove:null,topMouseOut:null,topMouseOver:null,topMouseUp:null,topPaste:null,topReset:null,topScroll:null,topSelectionChange:null,topSubmit:null,topTextInput:null,topTouchCancel:null,topTouchEnd:null,topTouchMove:null,topTouchStart:null,topWheel:null}),i={topLevelTypes:a,PropagationPhases:o};t.exports=i},{"./keyMirror":193}],68:[function(e,t,n){(function(n){var r=e("./emptyFunction"),o={listen:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!1),{remove:function(){e.removeEventListener(t,n,!1)}}):e.attachEvent?(e.attachEvent("on"+t,n),{remove:function(){e.detachEvent("on"+t,n)}}):void 0},capture:function(e,t,o){return e.addEventListener?(e.addEventListener(t,o,!0),{remove:function(){e.removeEventListener(t,o,!0)}}):("production"!==n.env.NODE_ENV&&console.error("Attempted to listen to events during the capture phase on a browser that does not support the capture phase. Your application will not receive some events."),{remove:r})},registerDefault:function(){}};t.exports=o}).call(this,e("_process"))},{"./emptyFunction":167,_process:14}],69:[function(e,t,n){(function(n){"use strict";function r(){var e=d&&d.traverseTwoPhase&&d.traverseEnterLeave;"production"!==n.env.NODE_ENV?u(e,"InstanceHandle not injected before use!"):u(e)}var o=e("./EventPluginRegistry"),a=e("./EventPluginUtils"),i=e("./accumulateInto"),s=e("./forEachAccumulated"),u=e("./invariant"),c={},l=null,p=function(e){if(e){var t=a.executeDispatch,n=o.getPluginModuleForEvent(e);n&&n.executeDispatch&&(t=n.executeDispatch),a.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e)}},d=null,f={injection:{injectMount:a.injection.injectMount,injectInstanceHandle:function(e){d=e,"production"!==n.env.NODE_ENV&&r()},getInstanceHandle:function(){return"production"!==n.env.NODE_ENV&&r(),d},injectEventPluginOrder:o.injectEventPluginOrder,injectEventPluginsByName:o.injectEventPluginsByName},eventNameDispatchConfigs:o.eventNameDispatchConfigs,registrationNameModules:o.registrationNameModules,putListener:function(e,t,r){"production"!==n.env.NODE_ENV?u(!r||"function"==typeof r,"Expected %s listener to be a function, instead got type %s",t,typeof r):u(!r||"function"==typeof r);var o=c[t]||(c[t]={});o[e]=r},getListener:function(e,t){var n=c[t];return n&&n[e]},deleteListener:function(e,t){var n=c[t];n&&delete n[e]},deleteAllListeners:function(e){for(var t in c)delete c[t][e]},extractEvents:function(e,t,n,r){for(var a,s=o.plugins,u=0,c=s.length;c>u;u++){var l=s[u];if(l){var p=l.extractEvents(e,t,n,r);p&&(a=i(a,p))}}return a},enqueueEvents:function(e){e&&(l=i(l,e))},processEventQueue:function(){var e=l;l=null,s(e,p),"production"!==n.env.NODE_ENV?u(!l,"processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented."):u(!l)},__purge:function(){c={}},__getListenerBank:function(){return c}};t.exports=f}).call(this,e("_process"))},{"./EventPluginRegistry":70,"./EventPluginUtils":71,"./accumulateInto":158,"./forEachAccumulated":173,"./invariant":188,_process:14}],70:[function(e,t,n){(function(n){"use strict";function r(){if(s)for(var e in u){var t=u[e],r=s.indexOf(e);if("production"!==n.env.NODE_ENV?i(r>-1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e):i(r>-1),!c.plugins[r]){"production"!==n.env.NODE_ENV?i(t.extractEvents,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e):i(t.extractEvents),c.plugins[r]=t;var a=t.eventTypes;for(var l in a)"production"!==n.env.NODE_ENV?i(o(a[l],t,l),"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",l,e):i(o(a[l],t,l))}}}function o(e,t,r){"production"!==n.env.NODE_ENV?i(!c.eventNameDispatchConfigs.hasOwnProperty(r),"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",r):i(!c.eventNameDispatchConfigs.hasOwnProperty(r)),c.eventNameDispatchConfigs[r]=e;var o=e.phasedRegistrationNames;if(o){for(var s in o)if(o.hasOwnProperty(s)){var u=o[s];a(u,t,r)}return!0}return e.registrationName?(a(e.registrationName,t,r),!0):!1}function a(e,t,r){"production"!==n.env.NODE_ENV?i(!c.registrationNameModules[e],"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e):i(!c.registrationNameModules[e]),c.registrationNameModules[e]=t,c.registrationNameDependencies[e]=t.eventTypes[r].dependencies}var i=e("./invariant"),s=null,u={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},injectEventPluginOrder:function(e){"production"!==n.env.NODE_ENV?i(!s,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):i(!s),s=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var t=!1;for(var o in e)if(e.hasOwnProperty(o)){var a=e[o];u.hasOwnProperty(o)&&u[o]===a||("production"!==n.env.NODE_ENV?i(!u[o],"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",o):i(!u[o]),u[o]=a,t=!0)}t&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return c.registrationNameModules[t.registrationName]||null;for(var n in t.phasedRegistrationNames)if(t.phasedRegistrationNames.hasOwnProperty(n)){var r=c.registrationNameModules[t.phasedRegistrationNames[n]];if(r)return r}return null},_resetEventPlugins:function(){s=null;for(var e in u)u.hasOwnProperty(e)&&delete u[e];c.plugins.length=0;var t=c.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=c.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};t.exports=c}).call(this,e("_process"))},{"./invariant":188,_process:14}],71:[function(e,t,n){(function(n){"use strict";function r(e){return e===y.topMouseUp||e===y.topTouchEnd||e===y.topTouchCancel}function o(e){return e===y.topMouseMove||e===y.topTouchMove}function a(e){return e===y.topMouseDown||e===y.topTouchStart}function i(e,t){var r=e._dispatchListeners,o=e._dispatchIDs;if("production"!==n.env.NODE_ENV&&f(e),Array.isArray(r))for(var a=0;a=config.loadingItems&&this.state.moreToLoad?c["default"].createElement("div",{className:"wrap"},c["default"].createElement("div",{className:"load-more-wrap"},e)):"")}},{key:"loadCategoryItems",value:function(e){var t=this;setTimeout(function(){f["default"].categoryItems(e.params.category).then(function(e){t.setState({category:e.category,items:e.items})})},200)}},{key:"loadMore",value:function(){var e=this;this.setState({moreLoaded:!0}),setTimeout(function(){f["default"].moreCategoryItems(e.state.category,e.state.currentLoaded).then(function(t){e.setState({currentLoaded:e.state.currentLoaded+config.loadingItems,items:e.state.items.concat(t),moreLoaded:!1,moreToLoad:t.length?!0:!1})})},400)}}]),t}(c["default"].Component);n["default"]=h,t.exports=n["default"]},{"../api":2,"../partials/box":3,react:208}],12:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;ne&&n[e]===o[e];e++);var i=r-e;for(t=1;i>=t&&n[r-t]===o[a-t];t++);var s=t>1?1-t:void 0;return this._fallbackText=o.slice(e,s),this._fallbackText}}),o.addPoolingTo(r),t.exports=r},{"./Object.assign":79,"./PooledClass":80,"./getTextContentAccessor":183}],75:[function(e,t,n){"use strict";var r,o=e("./DOMProperty"),a=e("./ExecutionEnvironment"),i=o.injection.MUST_USE_ATTRIBUTE,s=o.injection.MUST_USE_PROPERTY,u=o.injection.HAS_BOOLEAN_VALUE,c=o.injection.HAS_SIDE_EFFECTS,l=o.injection.HAS_NUMERIC_VALUE,p=o.injection.HAS_POSITIVE_NUMERIC_VALUE,d=o.injection.HAS_OVERLOADED_BOOLEAN_VALUE;if(a.canUseDOM){var f=document.implementation;r=f&&f.hasFeature&&f.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}var h={isCustomAttribute:RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/),Properties:{accept:null,acceptCharset:null,accessKey:null,action:null,allowFullScreen:i|u,allowTransparency:i,alt:null,async:u,autoComplete:null,autoPlay:u,cellPadding:null,cellSpacing:null,charSet:i,checked:s|u,classID:i,className:r?i:s,cols:i|p,colSpan:null,content:null,contentEditable:null,contextMenu:i,controls:s|u,coords:null,crossOrigin:null,data:null,dateTime:i,defer:u,dir:null,disabled:i|u,download:d,draggable:null,encType:null,form:i,formAction:i,formEncType:i,formMethod:i,formNoValidate:u,formTarget:i,frameBorder:i,headers:null,height:i,hidden:i|u,high:null,href:null,hrefLang:null,htmlFor:null,httpEquiv:null,icon:null,id:s,label:null,lang:null,list:i,loop:s|u,low:null,manifest:i,marginHeight:null,marginWidth:null,max:null,maxLength:i,media:i,mediaGroup:null,method:null,min:null,multiple:s|u,muted:s|u,name:null,noValidate:u,open:u,optimum:null,pattern:null,placeholder:null,poster:null,preload:null,radioGroup:null,readOnly:s|u,rel:null,required:u,role:i,rows:i|p,rowSpan:null,sandbox:null,scope:null,scoped:u,scrolling:null,seamless:i|u,selected:s|u,shape:null,size:i|p,sizes:i,span:p,spellCheck:null,src:null,srcDoc:s,srcSet:i,start:l,step:null,style:null,tabIndex:null,target:null,title:null,type:null,useMap:null,value:s|c,width:i,wmode:i,autoCapitalize:null,autoCorrect:null,itemProp:i,itemScope:i|u,itemType:i,itemID:i,itemRef:i,property:null,unselectable:i},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{autoCapitalize:"autocapitalize",autoComplete:"autocomplete",autoCorrect:"autocorrect",autoFocus:"autofocus",autoPlay:"autoplay",encType:"encoding",hrefLang:"hreflang",radioGroup:"radiogroup",spellCheck:"spellcheck",srcDoc:"srcdoc",srcSet:"srcset"}};t.exports=h},{"./DOMProperty":62,"./ExecutionEnvironment":73}],76:[function(e,t,n){(function(n){"use strict";function r(e){"production"!==n.env.NODE_ENV?c(null==e.props.checkedLink||null==e.props.valueLink,"Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don't want to use valueLink and vice versa."):c(null==e.props.checkedLink||null==e.props.valueLink)}function o(e){r(e),"production"!==n.env.NODE_ENV?c(null==e.props.value&&null==e.props.onChange,"Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don't want to use valueLink."):c(null==e.props.value&&null==e.props.onChange)}function a(e){r(e),"production"!==n.env.NODE_ENV?c(null==e.props.checked&&null==e.props.onChange,"Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don't want to use checkedLink"):c(null==e.props.checked&&null==e.props.onChange)}function i(e){this.props.valueLink.requestChange(e.target.value)}function s(e){this.props.checkedLink.requestChange(e.target.checked)}var u=e("./ReactPropTypes"),c=e("./invariant"),l={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0},p={Mixin:{propTypes:{value:function(e,t,n){return!e[t]||l[e.type]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(e,t,n){return!e[t]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:u.func}},getValue:function(e){return e.props.valueLink?(o(e),e.props.valueLink.value):e.props.value},getChecked:function(e){return e.props.checkedLink?(a(e),e.props.checkedLink.value):e.props.checked},getOnChange:function(e){return e.props.valueLink?(o(e),i):e.props.checkedLink?(a(e),s):e.props.onChange}};t.exports=p}).call(this,e("_process"))},{"./ReactPropTypes":131,"./invariant":188,_process:14}],77:[function(e,t,n){(function(n){"use strict";function r(e){e.remove()}var o=e("./ReactBrowserEventEmitter"),a=e("./accumulateInto"),i=e("./forEachAccumulated"),s=e("./invariant"),u={trapBubbledEvent:function(e,t){"production"!==n.env.NODE_ENV?s(this.isMounted(),"Must be mounted to trap events"):s(this.isMounted());var r=this.getDOMNode();"production"!==n.env.NODE_ENV?s(r,"LocalEventTrapMixin.trapBubbledEvent(...): Requires node to be rendered."):s(r);var i=o.trapBubbledEvent(e,t,r);this._localEventListeners=a(this._localEventListeners,i)},componentWillUnmount:function(){this._localEventListeners&&i(this._localEventListeners,r)}};t.exports=u}).call(this,e("_process"))},{"./ReactBrowserEventEmitter":83,"./accumulateInto":158,"./forEachAccumulated":173,"./invariant":188,_process:14}],78:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./emptyFunction"),a=r.topLevelTypes,i={eventTypes:null,extractEvents:function(e,t,n,r){if(e===a.topTouchStart){var i=r.target;i&&!i.onclick&&(i.onclick=o)}}};t.exports=i},{"./EventConstants":67,"./emptyFunction":167}],79:[function(e,t,n){"use strict";function r(e,t){if(null==e)throw new TypeError("Object.assign target cannot be null or undefined");for(var n=Object(e),r=Object.prototype.hasOwnProperty,o=1;o-1&&"undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&console.debug("Download the React DevTools for a better development experience: https://fb.me/react-devtools");for(var P=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.split,String.prototype.trim,Object.create,Object.freeze],M=0;Mc;c++){var d=s[c];a.hasOwnProperty(d)&&a[d]||(d===u.topWheel?l("wheel")?v.ReactEventListener.trapBubbledEvent(u.topWheel,"wheel",n):l("mousewheel")?v.ReactEventListener.trapBubbledEvent(u.topWheel,"mousewheel",n):v.ReactEventListener.trapBubbledEvent(u.topWheel,"DOMMouseScroll",n):d===u.topScroll?l("scroll",!0)?v.ReactEventListener.trapCapturedEvent(u.topScroll,"scroll",n):v.ReactEventListener.trapBubbledEvent(u.topScroll,"scroll",v.ReactEventListener.WINDOW_HANDLE):d===u.topFocus||d===u.topBlur?(l("focus",!0)?(v.ReactEventListener.trapCapturedEvent(u.topFocus,"focus",n),v.ReactEventListener.trapCapturedEvent(u.topBlur,"blur",n)):l("focusin")&&(v.ReactEventListener.trapBubbledEvent(u.topFocus,"focusin",n),v.ReactEventListener.trapBubbledEvent(u.topBlur,"focusout",n)),a[u.topBlur]=!0,a[u.topFocus]=!0):h.hasOwnProperty(d)&&v.ReactEventListener.trapBubbledEvent(d,h[d],n),a[d]=!0)}},trapBubbledEvent:function(e,t,n){return v.ReactEventListener.trapBubbledEvent(e,t,n)},trapCapturedEvent:function(e,t,n){return v.ReactEventListener.trapCapturedEvent(e,t,n)},ensureScrollValueMonitoring:function(){if(!d){var e=u.refreshScrollValues;v.ReactEventListener.monitorScrollValue(e),d=!0}},eventNameDispatchConfigs:a.eventNameDispatchConfigs,registrationNameModules:a.registrationNameModules,putListener:a.putListener,getListener:a.getListener,deleteListener:a.deleteListener,deleteAllListeners:a.deleteAllListeners});t.exports=v},{"./EventConstants":67,"./EventPluginHub":69,"./EventPluginRegistry":70,"./Object.assign":79,"./ReactEventEmitterMixin":114,"./ViewportMetrics":157,"./isEventSupported":189}],84:[function(e,t,n){"use strict";var r=e("./ReactReconciler"),o=e("./flattenChildren"),a=e("./instantiateReactComponent"),i=e("./shouldUpdateReactComponent"),s={instantiateChildren:function(e,t,n){var r=o(e);for(var i in r)if(r.hasOwnProperty(i)){var s=r[i],u=a(s,null);r[i]=u}return r},updateChildren:function(e,t,n,s){var u=o(t);if(!u&&!e)return null;var c;for(c in u)if(u.hasOwnProperty(c)){var l=e&&e[c],p=l&&l._currentElement,d=u[c];if(i(p,d))r.receiveComponent(l,d,n,s),u[c]=l;else{l&&r.unmountComponent(l,c);var f=a(d,null);u[c]=f}}for(c in e)!e.hasOwnProperty(c)||u&&u.hasOwnProperty(c)||r.unmountComponent(e[c]);return u},unmountChildren:function(e){for(var t in e){var n=e[t];r.unmountComponent(n)}}};t.exports=s},{"./ReactReconciler":134,"./flattenChildren":171,"./instantiateReactComponent":187,"./shouldUpdateReactComponent":204}],85:[function(e,t,n){(function(n){"use strict";function r(e,t){this.forEachFunction=e,this.forEachContext=t}function o(e,t,n,r){var o=e;o.forEachFunction.call(o.forEachContext,t,r)}function a(e,t,n){if(null==e)return e;var a=r.getPooled(t,n);f(e,o,a),r.release(a)}function i(e,t,n){this.mapResult=e,this.mapFunction=t,this.mapContext=n}function s(e,t,r,o){var a=e,i=a.mapResult,s=!i.hasOwnProperty(r);if("production"!==n.env.NODE_ENV&&("production"!==n.env.NODE_ENV?h(s,"ReactChildren.map(...): Encountered two children with the same key, `%s`. Child keys must be unique; when two children share a key, only the first child will be used.",r):null),s){var u=a.mapFunction.call(a.mapContext,t,o);i[r]=u}}function u(e,t,n){if(null==e)return e;var r={},o=i.getPooled(r,t,n);return f(e,s,o),i.release(o),d.create(r)}function c(e,t,n,r){return null}function l(e,t){return f(e,c,null)}var p=e("./PooledClass"),d=e("./ReactFragment"),f=e("./traverseAllChildren"),h=e("./warning"),m=p.twoArgumentPooler,v=p.threeArgumentPooler;p.addPoolingTo(r,m),p.addPoolingTo(i,v);var y={forEach:a,map:u,count:l};t.exports=y}).call(this,e("_process"))},{"./PooledClass":80,"./ReactFragment":116,"./traverseAllChildren":206,"./warning":207,_process:14}],86:[function(e,t,n){(function(n){"use strict";function r(e,t,r){for(var o in t)t.hasOwnProperty(o)&&("production"!==n.env.NODE_ENV?O("function"==typeof t[o],"%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.",e.displayName||"ReactClass",E[r],o):null)}function o(e,t){var r=P.hasOwnProperty(t)?P[t]:null;I.hasOwnProperty(t)&&("production"!==n.env.NODE_ENV?_(r===D.OVERRIDE_BASE,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",t):_(r===D.OVERRIDE_BASE)),e.hasOwnProperty(t)&&("production"!==n.env.NODE_ENV?_(r===D.DEFINE_MANY||r===D.DEFINE_MANY_MERGED,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",t):_(r===D.DEFINE_MANY||r===D.DEFINE_MANY_MERGED))}function a(e,t){if(t){"production"!==n.env.NODE_ENV?_("function"!=typeof t,"ReactClass: You're attempting to use a component class as a mixin. Instead, just use a regular object."):_("function"!=typeof t),"production"!==n.env.NODE_ENV?_(!h.isValidElement(t),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object."):_(!h.isValidElement(t));var r=e.prototype;t.hasOwnProperty(w)&&M.mixins(e,t.mixins);for(var a in t)if(t.hasOwnProperty(a)&&a!==w){var i=t[a];if(o(r,a),M.hasOwnProperty(a))M[a](e,i);else{var s=P.hasOwnProperty(a),l=r.hasOwnProperty(a),p=i&&i.__reactDontBind,d="function"==typeof i,f=d&&!s&&!l&&!p;if(f)r.__reactAutoBindMap||(r.__reactAutoBindMap={}),r.__reactAutoBindMap[a]=i,r[a]=i;else if(l){var m=P[a];"production"!==n.env.NODE_ENV?_(s&&(m===D.DEFINE_MANY_MERGED||m===D.DEFINE_MANY),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",m,a):_(s&&(m===D.DEFINE_MANY_MERGED||m===D.DEFINE_MANY)),m===D.DEFINE_MANY_MERGED?r[a]=u(r[a],i):m===D.DEFINE_MANY&&(r[a]=c(r[a],i))}else r[a]=i,"production"!==n.env.NODE_ENV&&"function"==typeof i&&t.displayName&&(r[a].displayName=t.displayName+"_"+a)}}}}function i(e,t){if(t)for(var r in t){var o=t[r];if(t.hasOwnProperty(r)){var a=r in M;"production"!==n.env.NODE_ENV?_(!a,'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',r):_(!a);var i=r in e;"production"!==n.env.NODE_ENV?_(!i,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",r):_(!i),e[r]=o}}}function s(e,t){"production"!==n.env.NODE_ENV?_(e&&t&&"object"==typeof e&&"object"==typeof t,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects."):_(e&&t&&"object"==typeof e&&"object"==typeof t);for(var r in t)t.hasOwnProperty(r)&&("production"!==n.env.NODE_ENV?_(void 0===e[r],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",r):_(void 0===e[r]),e[r]=t[r]);return e}function u(e,t){return function(){var n=e.apply(this,arguments),r=t.apply(this,arguments);if(null==n)return r;if(null==r)return n;var o={};return s(o,n),s(o,r),o}}function c(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function l(e,t){var r=t.bind(e);if("production"!==n.env.NODE_ENV){r.__reactBoundContext=e,r.__reactBoundMethod=t,r.__reactBoundArguments=null;var o=e.constructor.displayName,a=r.bind;r.bind=function(i){for(var s=[],u=1,c=arguments.length;c>u;u++)s.push(arguments[u]);if(i!==e&&null!==i)"production"!==n.env.NODE_ENV?O(!1,"bind(): React component methods may only be bound to the component instance. See %s",o):null;else if(!s.length)return"production"!==n.env.NODE_ENV?O(!1,"bind(): You are binding a component method to the component. React does this for you automatically in a high-performance way, so you can safely remove this call. See %s",o):null,r;var l=a.apply(r,arguments);return l.__reactBoundContext=e,l.__reactBoundMethod=t,l.__reactBoundArguments=s,l}}return r}function p(e){for(var t in e.__reactAutoBindMap)if(e.__reactAutoBindMap.hasOwnProperty(t)){var n=e.__reactAutoBindMap[t];e[t]=l(e,m.guard(n,e.constructor.displayName+"."+t))}}var d=e("./ReactComponent"),f=e("./ReactCurrentOwner"),h=e("./ReactElement"),m=e("./ReactErrorUtils"),v=e("./ReactInstanceMap"),y=e("./ReactLifeCycle"),g=e("./ReactPropTypeLocations"),E=e("./ReactPropTypeLocationNames"),b=e("./ReactUpdateQueue"),C=e("./Object.assign"),_=e("./invariant"),R=e("./keyMirror"),N=e("./keyOf"),O=e("./warning"),w=N({mixins:null}),D=R({DEFINE_ONCE:null,DEFINE_MANY:null,OVERRIDE_BASE:null,DEFINE_MANY_MERGED:null}),x=[],P={mixins:D.DEFINE_MANY,statics:D.DEFINE_MANY,propTypes:D.DEFINE_MANY,contextTypes:D.DEFINE_MANY,childContextTypes:D.DEFINE_MANY,getDefaultProps:D.DEFINE_MANY_MERGED,getInitialState:D.DEFINE_MANY_MERGED,getChildContext:D.DEFINE_MANY_MERGED,render:D.DEFINE_ONCE,componentWillMount:D.DEFINE_MANY,componentDidMount:D.DEFINE_MANY,componentWillReceiveProps:D.DEFINE_MANY,shouldComponentUpdate:D.DEFINE_ONCE,componentWillUpdate:D.DEFINE_MANY,componentDidUpdate:D.DEFINE_MANY,componentWillUnmount:D.DEFINE_MANY,updateComponent:D.OVERRIDE_BASE},M={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n";return this._createOpenTagMarkupAndPutListeners(t)+this._createContentMarkup(t,n)+o},_createOpenTagMarkupAndPutListeners:function(e){var t=this._currentElement.props,n="<"+this._tag;for(var r in t)if(t.hasOwnProperty(r)){var a=t[r];if(null!=a)if(R.hasOwnProperty(r))o(this._rootNodeID,r,a,e);else{r===O&&(a&&(a=this._previousStyleCopy=m({},t.style)),a=s.createMarkupForStyles(a));var i=c.createMarkupForProperty(r,a);i&&(n+=" "+i)}}if(e.renderToStaticMarkup)return n+">";var u=c.createMarkupForID(this._rootNodeID);return n+" "+u+">"},_createContentMarkup:function(e,t){var n="";("listing"===this._tag||"pre"===this._tag||"textarea"===this._tag)&&(n="\n");var r=this._currentElement.props,o=r.dangerouslySetInnerHTML;if(null!=o){if(null!=o.__html)return n+o.__html}else{var a=N[typeof r.children]?r.children:null,i=null!=a?null:r.children;if(null!=a)return n+v(a);if(null!=i){var s=this.mountChildren(i,e,t);return n+s.join("")}}return n},receiveComponent:function(e,t,n){var r=this._currentElement;this._currentElement=e,this.updateComponent(t,r,e,n)},updateComponent:function(e,t,n,o){r(this._currentElement.props),this._updateDOMProperties(t.props,e),this._updateDOMChildren(t.props,e,o)},_updateDOMProperties:function(e,t){var n,r,a,i=this._currentElement.props;for(n in e)if(!i.hasOwnProperty(n)&&e.hasOwnProperty(n))if(n===O){var s=this._previousStyleCopy;for(r in s)s.hasOwnProperty(r)&&(a=a||{},a[r]="");this._previousStyleCopy=null}else R.hasOwnProperty(n)?C(this._rootNodeID,n):(u.isStandardName[n]||u.isCustomAttribute(n))&&D.deletePropertyByID(this._rootNodeID,n);for(n in i){var c=i[n],l=n===O?this._previousStyleCopy:e[n];if(i.hasOwnProperty(n)&&c!==l)if(n===O)if(c?c=this._previousStyleCopy=m({},c):this._previousStyleCopy=null,l){for(r in l)!l.hasOwnProperty(r)||c&&c.hasOwnProperty(r)||(a=a||{},a[r]="");for(r in c)c.hasOwnProperty(r)&&l[r]!==c[r]&&(a=a||{},a[r]=c[r])}else a=c;else R.hasOwnProperty(n)?o(this._rootNodeID,n,c,t):(u.isStandardName[n]||u.isCustomAttribute(n))&&D.updatePropertyByID(this._rootNodeID,n,c)}a&&D.updateStylesByID(this._rootNodeID,a)},_updateDOMChildren:function(e,t,n){var r=this._currentElement.props,o=N[typeof e.children]?e.children:null,a=N[typeof r.children]?r.children:null,i=e.dangerouslySetInnerHTML&&e.dangerouslySetInnerHTML.__html,s=r.dangerouslySetInnerHTML&&r.dangerouslySetInnerHTML.__html,u=null!=o?null:e.children,c=null!=a?null:r.children,l=null!=o||null!=i,p=null!=a||null!=s;null!=u&&null==c?this.updateChildren(null,t,n):l&&!p&&this.updateTextContent(""),null!=a?o!==a&&this.updateTextContent(""+a):null!=s?i!==s&&D.updateInnerHTMLByID(this._rootNodeID,s):null!=c&&this.updateChildren(c,t,n)},unmountComponent:function(){this.unmountChildren(),l.deleteAllListeners(this._rootNodeID),p.unmountIDFromEnvironment(this._rootNodeID),this._rootNodeID=null}},h.measureMethods(i,"ReactDOMComponent",{mountComponent:"mountComponent",updateComponent:"updateComponent"}),m(i.prototype,i.Mixin,f.Mixin),i.injection={injectIDOperations:function(e){i.BackendIDOperations=D=e}},t.exports=i}).call(this,e("_process"))},{"./CSSPropertyOperations":57,"./DOMProperty":62,"./DOMPropertyOperations":63,"./Object.assign":79,"./ReactBrowserEventEmitter":83,"./ReactComponentBrowserEnvironment":88,"./ReactMount":123,"./ReactMultiChild":124,"./ReactPerf":128,"./escapeTextContentForBrowser":169,"./invariant":188,"./isEventSupported":189,"./keyOf":194,"./warning":207,_process:14}],96:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./LocalEventTrapMixin"),a=e("./ReactBrowserComponentMixin"),i=e("./ReactClass"),s=e("./ReactElement"),u=s.createFactory("form"),c=i.createClass({displayName:"ReactDOMForm",tagName:"FORM",mixins:[a,o],render:function(){return u(this.props)},componentDidMount:function(){this.trapBubbledEvent(r.topLevelTypes.topReset,"reset"),this.trapBubbledEvent(r.topLevelTypes.topSubmit,"submit")}});t.exports=c},{"./EventConstants":67,"./LocalEventTrapMixin":77,"./ReactBrowserComponentMixin":82,"./ReactClass":86,"./ReactElement":110}],97:[function(e,t,n){(function(n){"use strict";var r=e("./CSSPropertyOperations"),o=e("./DOMChildrenOperations"),a=e("./DOMPropertyOperations"),i=e("./ReactMount"),s=e("./ReactPerf"),u=e("./invariant"),c=e("./setInnerHTML"),l={dangerouslySetInnerHTML:"`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",style:"`style` must be set using `updateStylesByID()`."},p={updatePropertyByID:function(e,t,r){var o=i.getNode(e);"production"!==n.env.NODE_ENV?u(!l.hasOwnProperty(t),"updatePropertyByID(...): %s",l[t]):u(!l.hasOwnProperty(t)),null!=r?a.setValueForProperty(o,t,r):a.deleteValueForProperty(o,t)},deletePropertyByID:function(e,t,r){var o=i.getNode(e);"production"!==n.env.NODE_ENV?u(!l.hasOwnProperty(t),"updatePropertyByID(...): %s",l[t]):u(!l.hasOwnProperty(t)),a.deleteValueForProperty(o,t,r)},updateStylesByID:function(e,t){var n=i.getNode(e);r.setValueForStyles(n,t)},updateInnerHTMLByID:function(e,t){var n=i.getNode(e);c(n,t)},updateTextContentByID:function(e,t){var n=i.getNode(e);o.updateTextContent(n,t)},dangerouslyReplaceNodeWithMarkupByID:function(e,t){var n=i.getNode(e);o.dangerouslyReplaceNodeWithMarkup(n,t)},dangerouslyProcessChildrenUpdates:function(e,t){for(var n=0;nd;d++){var v=c[d];if(v!==s&&v.form===s.form){var y=l.getID(v);"production"!==n.env.NODE_ENV?f(y,"ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported."):f(y);var g=m[y];"production"!==n.env.NODE_ENV?f(g,"ReactDOMInput: Unknown radio button ID %s.",y):f(g),p.asap(r,g)}}}return t}});t.exports=v}).call(this,e("_process"))},{"./AutoFocusMixin":54,"./DOMPropertyOperations":63,"./LinkedValueUtils":76,"./Object.assign":79,"./ReactBrowserComponentMixin":82,"./ReactClass":86,"./ReactElement":110,"./ReactMount":123,"./ReactUpdates":140,"./invariant":188,_process:14}],101:[function(e,t,n){(function(n){"use strict";var r=e("./ReactBrowserComponentMixin"),o=e("./ReactClass"),a=e("./ReactElement"),i=e("./warning"),s=a.createFactory("option"),u=o.createClass({displayName:"ReactDOMOption",tagName:"OPTION",mixins:[r],componentWillMount:function(){"production"!==n.env.NODE_ENV&&("production"!==n.env.NODE_ENV?i(null==this.props.selected,"Use the `defaultValue` or `value` props on "+o+""},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;n!==this._stringText&&(this._stringText=n,a.BackendIDOperations.updateTextContentByID(this._rootNodeID,n))}},unmountComponent:function(){o.unmountIDFromEnvironment(this._rootNodeID)}}),t.exports=u},{"./DOMPropertyOperations":63,"./Object.assign":79,"./ReactComponentBrowserEnvironment":88,"./ReactDOMComponent":95,"./escapeTextContentForBrowser":169}],105:[function(e,t,n){(function(n){"use strict";function r(){this.isMounted()&&this.forceUpdate()}var o=e("./AutoFocusMixin"),a=e("./DOMPropertyOperations"),i=e("./LinkedValueUtils"),s=e("./ReactBrowserComponentMixin"),u=e("./ReactClass"),c=e("./ReactElement"),l=e("./ReactUpdates"),p=e("./Object.assign"),d=e("./invariant"),f=e("./warning"),h=c.createFactory("textarea"),m=u.createClass({displayName:"ReactDOMTextarea",tagName:"TEXTAREA",mixins:[o,i.Mixin,s],getInitialState:function(){var e=this.props.defaultValue,t=this.props.children;null!=t&&("production"!==n.env.NODE_ENV&&("production"!==n.env.NODE_ENV?f(!1,"Use the `defaultValue` or `value` props instead of setting children on