├── .gitignore ├── dist ├── imags │ ├── result.png │ └── pagination.gif ├── view │ └── pagination.html ├── css │ └── pagination.css └── js │ └── vendors.js ├── src ├── pagination.html ├── router │ └── routeConfigOne.js ├── index.js ├── util │ └── mockApi.js ├── css │ └── main.css └── components │ ├── pageComponent.jsx │ └── pagination.jsx ├── .babelrc ├── README.md ├── package.json └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | .idea 3 | .git 4 | .git-credentials -------------------------------------------------------------------------------- /dist/imags/result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Silence11/reactPagination/HEAD/dist/imags/result.png -------------------------------------------------------------------------------- /dist/imags/pagination.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Silence11/reactPagination/HEAD/dist/imags/pagination.gif -------------------------------------------------------------------------------- /src/pagination.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | -------------------------------------------------------------------------------- /src/router/routeConfigOne.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by xiajing on 2016/9/22. 3 | */ 4 | export default{ 5 | childRoutes: [ 6 | { path:'/', 7 | indexRoute:{component:require('../components/pagination.jsx').default}//默认路由 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ "es2015", "stage-0"], 3 | 4 | /* if you want to use babel runtime, uncomment the following line */ 5 | "plugins": ["transform-runtime","react-html-attrs"], 6 | 7 | "env": { 8 | "build": { 9 | "optional": ["optimisation", "minification"] 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # reactPagination 2 | 一款简单的react 组件实现的分页,clone后直接访问dist文件夹下的/view/pagination.html页面就能看到效果。 3 | 4 | ![react分页](https://github.com/Silence11/reactPagination/blob/master/dist/imags/pagination.gif) 5 | ###数据说明 6 | * 因数据是使用mock.js 模拟生成的,可以刷新看不到不同的记录数 7 | * mock 学习文档 http://mockjs.com/ 8 | 9 | ###运行项目 10 | * npm install //初始化下载依赖包 11 | * npm run build //启动程序 12 | -------------------------------------------------------------------------------- /dist/view/pagination.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by xiajing on 2016/9/22. 3 | */ 4 | import React from 'react' 5 | import { Router, Route, Link ,hashHistory, Redirect, IndexRoute } from 'react-router' 6 | import ReactDOM from 'react-dom'; 7 | import routes from './router/routeConfigOne.js'; 8 | import './css/main.css'; 9 | ReactDOM.render(, document.getElementById('paging')) -------------------------------------------------------------------------------- /src/util/mockApi.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by xiajing on 2016/9/23. 3 | */ 4 | import Mock from 'mockjs'; 5 | //首页自定义数据接口 采用array的方式 6 | module.exports = { 7 | getIndexList(){ 8 | var template ={ 9 | "array|1-20":[ 10 | { 11 | 'scoreChinese|+1':[ 12 | '70' 13 | ], 14 | 'scoreMath|+1':[ 15 | '90' 16 | ], 17 | 'scoreEnglish|+1':[ 18 | '80' 19 | ] 20 | } 21 | ] 22 | } 23 | Mock.mock(/\.json/,template) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-router-webpack", 3 | "version": "1.0.0", 4 | "description": "webpack build react-router demo", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "build": "webpack -p --watch" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/Silence11/reactPagination.git" 13 | }, 14 | "keywords": [ 15 | "webpack", 16 | "react-router" 17 | ], 18 | "author": "xiajing", 19 | "license": "ISC", 20 | "bugs": { 21 | "url": "https://github.com/Silence11/reactPagination/issues" 22 | }, 23 | "homepage": "https://github.com/Silence11/reactPagination#readme", 24 | "devDependencies": { 25 | "babel": "^6.5.2", 26 | "babel-cli": "^6.10.1", 27 | "babel-core": "^6.10.4", 28 | "babel-loader": "^6.2.4", 29 | "babel-plugin-react-html-attrs": "^2.0.0", 30 | "babel-plugin-transform-runtime": "^6.9.0", 31 | "babel-preset-es2015": "^6.9.0", 32 | "babel-preset-react": "^6.11.1", 33 | "babel-preset-stage-0": "^6.5.0", 34 | "css-loader": "^0.23.1", 35 | "expose-loader": "^0.7.1", 36 | "extract-text-webpack-plugin": "^1.0.1", 37 | "file-loader": "^0.9.0", 38 | "history": "^3.0.0", 39 | "html-loader": "^0.4.3", 40 | "html-webpack-plugin": "^2.22.0", 41 | "jquery": "^3.1.1", 42 | "mockjs": "^1.0.1-beta2", 43 | "react": "^15.2.1", 44 | "react-dom": "^15.2.1", 45 | "react-router": "^2.6.0", 46 | "style-loader": "^0.13.1", 47 | "url-loader": "^0.5.7", 48 | "webpack": "^1.13.1" 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /dist/css/pagination.css: -------------------------------------------------------------------------------- 1 | body,html{font-family:Helvetica,Microsoft YaHei,Arial,sans-serif}.table-bordered{border:1px solid #ddd}.table{width:100%;max-width:37%;margin-bottom:20px}table{background-color:transparent;border-spacing:0;border-collapse:collapse}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd;text-align:center}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd;text-align:center}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd;text-align:center}.rightDiv{float:left;padding-left:16px;margin-top:1px}.paginationDiv{display:block;margin-top:50px;color:#535353;line-height:29px;text-align:center;margin-left:52px}.paginationDiv a{float:left;width:25px;height:30px;padding:0 7px;vertical-align:middle;text-decoration:none;cursor:pointer}.paginationDiv .next,.paginationDiv .prev{background-color:#f3f4f8;border:1px solid #e5e5e5}.paginationDiv .next:hover,.paginationDiv .prev:hover{background-color:#ddd;border:1px solid #ddd}.paginationDiv .next:before,.paginationDiv .prev:before{content:'<';font-size:14px}.paginationDiv .disable.next,.paginationDiv .prev.disable{background-color:#f3f4f8;border-color:#e5e5e5;cursor:no-drop}.paginationDiv .disable.next:before,.paginationDiv .prev.disable:before{color:#a0a0a0;border-color:#337ab7}.paginationDiv .next:before{content:'>'}.paginationDiv .num{margin-left:-1px;padding:0 7px;border:1px solid #e5e5e5;color:#707070}.paginationDiv .num.current{background-color:#337ab7;border-color:#337ab7;color:#fff}.paginationDiv .num:hover{background-color:#ddd;border-color:#ddd;color:#1a1a1a}.paginationDiv .ellipsis{width:42px;height:30px;color:#707070;line-height:30px}.paginationDiv input{width:44px;height:24px;border:1px solid #eee;text-align:center} -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by xiajing on 2016/9/21. 3 | */ 4 | var path = require('path'); 5 | var webpack = require ('webpack'); 6 | var HtmlWebpackPlugin = require('html-webpack-plugin'); 7 | var ExtractTextPlugin = require("extract-text-webpack-plugin"); 8 | 9 | var config = { 10 | //配置入口 11 | entry:{ 12 | pagination:'./src/index.js',//入口1 13 | vendors:['react','react-router']//抽成公用的可以减少重复打包,当你是多个入库页面时就能体会到其作用 14 | }, 15 | //配置出口你想要输出的地方 16 | output:{ 17 | path: path.join(__dirname,'dist'), 18 | publicPath: '../', 19 | filename:'js/[name].js', 20 | chunkFilename:'require/js/[id].chunk.js'//会将按需加载的生成js存放到的这个文件夹下面 21 | }, 22 | resolve:{ 23 | alias: {} 24 | }, 25 | //加载器 26 | module:{ 27 | noParse: [], 28 | loaders:[ 29 | {test:/\.js[x]?$/,exclude: /node_modules/,loader:'babel', 30 | query: { 31 | presets: ['react', 'es2015'] 32 | } 33 | }, 34 | {test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader")},//把样式独立出来 35 | //加载html 36 | {test: /\.html$/, loader: "html" }, 37 | ] 38 | }, 39 | //插件 40 | plugins:[ 41 | new webpack.optimize.CommonsChunkPlugin('vendors', 'js/vendors.js'),//抽取公用的库或者方法 42 | new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", "window.jQuery": "jquery" }), 43 | new ExtractTextPlugin("css/[name].css"),//生成的css样式文件 44 | new webpack.DefinePlugin({ 45 | 'process.env':{ 46 | 'NODE_ENV': JSON.stringify('production') 47 | } 48 | }), 49 | //将html打包压缩 50 | new HtmlWebpackPlugin({ 51 | filename:'/view/pagination.html',//生成的html存放路径,相对于 path 52 | template:'./src/pagination.html', //html模板路径 53 | chunks:['vendors','pagination'],//区分你想要加载的js,名字要跟entry入口定义的保存一直 54 | inject:true, //允许插件修改哪些内容,包括head与body 55 | hash:true,//为静态资源生成hash值,可以实现缓存 56 | minify:{ 57 | removeComments:true,//移除HTML中的注释 58 | collapseWhitespace:true //删除空白符与换行符 59 | } 60 | }), 61 | ] 62 | } 63 | module.exports = config; -------------------------------------------------------------------------------- /src/css/main.css: -------------------------------------------------------------------------------- 1 | html, body{font-family:Helvetica,"Microsoft YaHei",Arial,sans-serif;} 2 | /*table样式*/ 3 | .table-bordered { border: 1px solid #ddd; } 4 | .table { width: 100%; max-width: 37%; margin-bottom: 20px; } 5 | table { background-color: transparent; } 6 | table { border-spacing: 0; border-collapse: collapse; } 7 | .table-bordered>tbody>tr>td, .table-bordered>tbody>tr>th, .table-bordered>tfoot>tr>td, .table-bordered>tfoot>tr>th, .table-bordered>thead>tr>td, .table-bordered>thead>tr>th { 8 | border: 1px solid #ddd; text-align: center} 9 | .table>thead>tr>th { vertical-align: bottom; border-bottom: 2px solid #ddd; text-align: center} 10 | .table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th { 11 | padding: 8px; line-height: 1.42857143; vertical-align: top; border-top: 1px solid #ddd;text-align: center } 12 | .rightDiv{float: left; float: left; padding-left: 16px; margin-top: 1px;} 13 | .paginationDiv {display: block; margin-top: 50px; color: #535353; line-height: 29px; text-align: center;margin-left: 52px;} 14 | .paginationDiv a {float: left; width: 25px; height: 30px; padding: 0 7px; vertical-align: middle; text-decoration: none; cursor: pointer;} 15 | .paginationDiv .next,.paginationDiv .prev {background-color: #f3f4f8; border: 1px solid #e5e5e5;} 16 | .paginationDiv .next:hover,.paginationDiv .prev:hover {background-color: #ddd; border: 1px solid #ddd;} 17 | .paginationDiv .next:before,.paginationDiv .prev:before {content: '<'; font-size: 14px } 18 | .paginationDiv .disable.next,.paginationDiv .prev.disable {background-color: #f3f4f8; border-color: #e5e5e5; cursor: no-drop;} 19 | .paginationDiv .disable.next:before,.paginationDiv .prev.disable:before {color: #a0a0a0;border-color: #337ab7 } 20 | .paginationDiv .next:before {content: '>'} 21 | .paginationDiv .num {margin-left: -1px; padding: 0 7px; border: 1px solid #e5e5e5; color: #707070 } 22 | .paginationDiv .num.current{background-color: #337ab7; border-color: #337ab7; color: #fff } 23 | .paginationDiv .num:hover {background-color: #ddd; border-color: #ddd; color: #1a1a1a } 24 | .paginationDiv .ellipsis {width: 42px; height: 30px; color: #707070; line-height: 30px } 25 | .paginationDiv input {width: 44px; height: 24px; border: 1px solid #eee; text-align: center } 26 | -------------------------------------------------------------------------------- /src/components/pageComponent.jsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by xiajing on 2016/9/22. 3 | */ 4 | import React, { Component } from 'react'; 5 | class PageComponent extends Component{ 6 | render(){ 7 | let _this = this; 8 | //当前页码 9 | let cur = this.props.current; 10 | //显示分页按钮 11 | let pageNum = []; 12 | let begin; 13 | let len; 14 | if(_this.props.totalPage > 5){ 15 | len = 5; 16 | if(cur >= (_this.props.totalPage-2)){ 17 | begin = _this.props.totalPage - 4; 18 | }else if(cur <= 3){ 19 | begin = 1; 20 | }else{ 21 | begin = cur - 2; 22 | } 23 | }else{ 24 | len = _this.props.totalPage; 25 | begin = 1; 26 | } 27 | //根据返回的总记录数计算当前页显示的数据 28 | for(let i = 0; i < len; i ++){ 29 | let cur = this.props.current; 30 | let showI = begin + i; 31 | if(cur == showI){ 32 | pageNum.push({num : showI, cur : true}); 33 | }else{ 34 | pageNum.push({num : showI, cur : false}); 35 | } 36 | } 37 | return( 38 |
39 |
40 | 41 | 42 | { 43 | pageNum.map(function(curPageNum){ 44 | return( 45 | {curPageNum.num} 46 | ) 47 | }) 48 | } 49 | 50 | 51 |
52 | 总共{_this.props.total}条, 53 | 共 54 | {_this.props.totalPage} 55 | 页,到第 56 | 57 | 页 58 |
59 |
60 |
61 | ) 62 | } 63 | } 64 | export default PageComponent -------------------------------------------------------------------------------- /src/components/pagination.jsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by xiajing on 2016/9/22. 3 | */ 4 | import React, { Component } from 'react'; 5 | import PageComponent from './pageComponent.jsx'; 6 | import Mock from 'mockjs'; 7 | import MockApi from '../util/mockApi.js'; 8 | console.info('React:', React); //这里打印出undefined 9 | class Pagination extends Component{ 10 | constructor(props){ 11 | super(props); 12 | this.state = { 13 | indexList : [], //获取数据的存放数组 14 | totalNum:'',//总记录数 15 | totalData:{}, 16 | current: 1, //当前页码 17 | pageSize:5, //每页显示的条数5条 18 | goValue:'', 19 | totalPage:'',//总页数 20 | } 21 | } 22 | componentWillMount(){ 23 | var _this = this;//如果不定义就会出现作用域的问题this.setState不是一个函数 24 | //使用mock模拟数据 25 | $.ajax({ 26 | url:MockApi.getIndexList()+/\/\.json/, 27 | dataType:'json', 28 | }).done(function(data){ 29 | _this.setState({totalData:data}) 30 | _this.setState({totalNum:data.array.length}) 31 | //计算总页数= 总记录数 / 每页显示的条数 32 | let totalPage =Math.ceil( _this.state.totalNum / _this.state.pageSize); 33 | _this.setState({totalPage:totalPage}) 34 | _this.pageClick(1); 35 | }) 36 | 37 | } 38 | //点击翻页 39 | pageClick(pageNum){ 40 | let _this = this; 41 | if(pageNum != _this.state.current){ 42 | _this.state.current = pageNum 43 | } 44 | _this.state.indexList=[];//清空之前的数据 45 | for(var i = (pageNum - 1) * _this.state.pageSize; i< _this.state.pageSize * pageNum; i++){ 46 | if(_this.state.totalData.array[i]){ 47 | _this.state.indexList.push(_this.state.totalData.array[i]) 48 | } 49 | } 50 | _this.setState({indexList:_this.state.indexList}) 51 | //console.log(_this.state.indexList) 52 | } 53 | //上一步 54 | goPrevClick(){ 55 | var _this = this; 56 | let cur = this.state.current; 57 | if(cur > 1){ 58 | _this.pageClick( cur - 1); 59 | } 60 | } 61 | //下一步 62 | goNext(){ 63 | var _this = this; 64 | let cur = _this.state.current; 65 | //alert(cur+"==="+_this.state.totalPage) 66 | if(cur < _this.state.totalPage){ 67 | _this.pageClick(cur + 1); 68 | } 69 | } 70 | //跳转到指定页 71 | goSwitchChange(e){ 72 | var _this= this; 73 | _this.setState({goValue : e.target.value}) 74 | var value = e.target.value; 75 | //alert(value+"==="+_this.state.totalPage) 76 | if(!/^[1-9]\d*$/.test(value)){ 77 | alert('页码只能输入大于1的正整数'); 78 | }else if(parseInt(value) > parseInt(_this.state.totalPage)){ 79 | alert('没有这么多页'); 80 | }else{ 81 | _this.pageClick(value); 82 | } 83 | } 84 | render(){ 85 | return( 86 |
87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | { 97 | this.state.indexList.map(function(data){ 98 | return( 99 | 100 | 101 | 102 | 103 | 104 | ) 105 | }) 106 | } 107 | 108 |
语文数学英语
{data.scoreChinese}{data.scoreMath}{data.scoreEnglish}
109 | 117 |
118 | ) 119 | } 120 | } 121 | export default Pagination -------------------------------------------------------------------------------- /dist/js/vendors.js: -------------------------------------------------------------------------------- 1 | !function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(u,a){for(var i,s,c=0,l=[];c2?n-2:0),o=2;o1){for(var y=Array(v),m=0;m1){for(var _=Array(g),b=0;b should not have a "'+t+'" prop')}t.__esModule=!0,t.routes=t.route=t.components=t.component=t.history=void 0,t.falsy=r;var o=n(6),u=o.PropTypes.func,a=o.PropTypes.object,i=o.PropTypes.arrayOf,s=o.PropTypes.oneOfType,c=o.PropTypes.element,l=o.PropTypes.shape,f=o.PropTypes.string,p=(t.history=l({listen:u.isRequired,push:u.isRequired,replace:u.isRequired,go:u.isRequired,goBack:u.isRequired,goForward:u.isRequired}),t.component=s([u,f])),d=(t.components=s([p,a]),t.route=s([a,c]));t.routes=s([d,i(d)])},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e){var t=e.match(/^https?:\/\/[^\/]*/);return null==t?e:e.substring(t[0].length)}function u(e){var t=o(e),n="",r="",u=t.indexOf("#");u!==-1&&(r=t.substring(u),t=t.substring(0,u));var a=t.indexOf("?");return a!==-1&&(n=t.substring(a),t=t.substring(0,a)),""===t&&(t="/"),{pathname:t,search:n,hash:r}}t.__esModule=!0,t.extractPath=o,t.parsePath=u;var a=n(12);r(a)},,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function u(e){for(var t="",n=[],r=[],u=void 0,a=0,i=/:([a-zA-Z_$][a-zA-Z0-9_$]*)|\*\*|\*|\(|\)/g;u=i.exec(e);)u.index!==a&&(r.push(e.slice(a,u.index)),t+=o(e.slice(a,u.index))),u[1]?(t+="([^/]+)",n.push(u[1])):"**"===u[0]?(t+="(.*)",n.push("splat")):"*"===u[0]?(t+="(.*?)",n.push("splat")):"("===u[0]?t+="(?:":")"===u[0]&&(t+=")?"),r.push(u[0]),a=i.lastIndex;return a!==e.length&&(r.push(e.slice(a,e.length)),t+=o(e.slice(a,e.length))),{pattern:e,regexpSource:t,paramNames:n,tokens:r}}function a(e){return d[e]||(d[e]=u(e)),d[e]}function i(e,t){"/"!==e.charAt(0)&&(e="/"+e);var n=a(e),r=n.regexpSource,o=n.paramNames,u=n.tokens;"/"!==e.charAt(e.length-1)&&(r+="/?"),"*"===u[u.length-1]&&(r+="$");var i=t.match(new RegExp("^"+r,"i"));if(null==i)return null;var s=i[0],c=t.substr(s.length);if(c){if("/"!==s.charAt(s.length-1))return null;c="/"+c}return{remainingPathname:c,paramNames:o,paramValues:i.slice(1).map(function(e){return e&&decodeURIComponent(e)})}}function s(e){return a(e).paramNames}function c(e,t){var n=i(e,t);if(!n)return null;var r=n.paramNames,o=n.paramValues,u={};return r.forEach(function(e,t){u[e]=o[t]}),u}function l(e,t){t=t||{};for(var n=a(e),r=n.tokens,o=0,u="",i=0,s=void 0,c=void 0,l=void 0,f=0,d=r.length;f0?void 0:(0,p["default"])(!1),null!=l&&(u+=encodeURI(l))):"("===s?o+=1:")"===s?o-=1:":"===s.charAt(0)?(c=s.substring(1),l=t[c],null!=l||o>0?void 0:(0,p["default"])(!1),null!=l&&(u+=encodeURIComponent(l))):u+=s;return u.replace(/\/+/g,"/")}t.__esModule=!0,t.compilePattern=a,t.matchPattern=i,t.getParamNames=s,t.getParams=c,t.formatPattern=l;var f=n(8),p=r(f),d=Object.create(null)},function(e,t){"use strict";t.__esModule=!0;var n="PUSH";t.PUSH=n;var r="REPLACE";t.REPLACE=r;var o="POP";t.POP=o,t["default"]={PUSH:n,REPLACE:r,POP:o}},,,,,,,function(e,t,n){"use strict";var r={};e.exports=r},,,,,,,,,function(e,t,n){"use strict";var r=n(1),o=function(e){var t,n={};e instanceof Object&&!Array.isArray(e)?void 0:r(!1);for(t in e)e.hasOwnProperty(t)&&(n[t]=t);return n};e.exports=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},u=Object.assign||function(e){for(var t=1;t1?r-1:0),u=1;u=e&&s&&(a=!0,n()))}}var u=0,a=!1,i=!1,s=!1,c=void 0;o()}function r(e,t,n){function r(e,t,r){a||(t?(a=!0,n(t)):(u[e]=r,a=++i===o,a&&n(null,u)))}var o=e.length,u=[];if(0===o)return n(null,u);var a=!1,i=0;e.forEach(function(e,n){t(e,n,function(e,t){r(n,e,t)})})}t.__esModule=!0,t.loopAsync=n,t.mapAsync=r},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0,t.router=t.routes=t.route=t.components=t.component=t.location=t.history=t.falsy=t.locationShape=t.routerShape=void 0;var u=n(6),a=n(51),i=(o(a),n(27)),s=r(i),c=n(7),l=(o(c),u.PropTypes.func),f=u.PropTypes.object,p=u.PropTypes.shape,d=u.PropTypes.string,h=t.routerShape=p({push:l.isRequired,replace:l.isRequired,go:l.isRequired,goBack:l.isRequired,goForward:l.isRequired,setRouteLeaveHook:l.isRequired,isActive:l.isRequired}),v=t.locationShape=p({pathname:d.isRequired,search:d.isRequired,state:f,action:d.isRequired,key:d}),y=t.falsy=s.falsy,m=t.history=s.history,g=t.location=v,_=t.component=s.component,b=t.components=s.components,P=t.route=s.route,x=(t.routes=s.routes,t.router=h),O={falsy:y,history:m,location:g,component:_,components:b,route:P,router:x};t["default"]=O},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!0;return!1}function u(e,t){function n(t){var n=!(arguments.length<=1||void 0===arguments[1])&&arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2],o=void 0;return n&&n!==!0||null!==r?(t={pathname:t,query:n},o=r||!1):(t=e.createLocation(t),o=n),(0,p["default"])(t,o,_.location,_.routes,_.params)}function r(e,n){b&&b.location===e?u(b,n):(0,y["default"])(t,e,function(t,r){t?n(t):r?u(a({},r,{location:e}),n):n()})}function u(e,t){function n(n,o){return n||o?r(n,o):void(0,h["default"])(e,function(n,r){n?t(n):t(null,null,_=a({},e,{components:r}))})}function r(e,n){e?t(e):t(null,n)}var o=(0,c["default"])(_,e),u=o.leaveRoutes,i=o.changeRoutes,s=o.enterRoutes;(0,l.runLeaveHooks)(u,_),u.filter(function(e){return s.indexOf(e)===-1}).forEach(v),(0,l.runChangeHooks)(i,_,e,function(t,o){return t||o?r(t,o):void(0,l.runEnterHooks)(s,e,n)})}function i(e){var t=arguments.length<=1||void 0===arguments[1]||arguments[1];return e.__id__||t&&(e.__id__=P++)}function s(e){return e.reduce(function(e,t){return e.push.apply(e,x[i(t)]),e},[])}function f(e,n){(0,y["default"])(t,e,function(t,r){if(null==r)return void n();b=a({},r,{location:e});for(var o=s((0,c["default"])(_,b).leaveRoutes),u=void 0,i=0,l=o.length;null==u&&i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function u(e){return 0===e.button}function a(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function i(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function s(e,t){var n=t.query,r=t.hash,o=t.state;return n||r||o?{pathname:e,query:n,hash:r,state:o}:e}t.__esModule=!0;var c=Object.assign||function(e){for(var t=1;t=0;r--){var o=e[r],u=o.path||"";if(n=u.replace(/\/*$/,"/")+n,0===u.indexOf("/"))break}return"/"+n}},propTypes:{path:p,from:p,to:p.isRequired,query:d,state:d,onEnter:l.falsy,children:l.falsy},render:function(){(0,i["default"])(!1)}});t["default"]=h,e.exports=t["default"]},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){return a({},e,{setRouteLeaveHook:t.listenBeforeLeavingRoute,isActive:t.isActive})}function u(e,t){return e=a({},e,t)}t.__esModule=!0;var a=Object.assign||function(e){for(var t=1;t=0&&0===window.sessionStorage.length)return;throw n}}function a(e){var t=void 0;try{t=window.sessionStorage.getItem(o(e))}catch(n){if(n.name===l)return null}if(t)try{return JSON.parse(t)}catch(n){}return null}t.__esModule=!0,t.saveState=u,t.readState=a;var i=n(12),s=(r(i),"@@History/"),c=["QuotaExceededError","QUOTA_EXCEEDED_ERR"],l="SecurityError"},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e){function t(e){return s.canUseDOM?void 0:i["default"](!1),n.listen(e)}var n=f["default"](u({getUserConfirmation:c.getUserConfirmation},e,{go:c.go}));return u({},n,{listen:t})}t.__esModule=!0;var u=Object.assign||function(e){for(var t=1;t1?t-1:0),u=1;u>"),M={array:a("array"),bool:a("boolean"),func:a("function"),number:a("number"),object:a("object"),string:a("string"),symbol:a("symbol"),any:i(),arrayOf:s,element:c(),instanceOf:l,node:h(),objectOf:p,oneOf:f,oneOfType:d,shape:v};o.prototype=Error.prototype,e.exports=M},function(e,t){"use strict";e.exports="15.3.2"},,,function(e,t,n){"use strict";var r=!1;e.exports=r},,,function(e,t){"use strict";function n(e){var t=e&&(r&&e[r]||e[o]);if("function"==typeof t)return t}var r="function"==typeof Symbol&&Symbol.iterator,o="@@iterator";e.exports=n},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){function r(e){return null===e||void 0===e}function o(e){return!(!e||"object"!=typeof e||"number"!=typeof e.length)&&("function"==typeof e.copy&&"function"==typeof e.slice&&!(e.length>0&&"number"!=typeof e[0]))}function u(e,t,n){var u,l;if(r(e)||r(t))return!1;if(e.prototype!==t.prototype)return!1;if(s(e))return!!s(t)&&(e=a.call(e),t=a.call(t),c(e,t,n));if(o(e)){if(!o(t))return!1;if(e.length!==t.length)return!1;for(u=0;u=0;u--)if(f[u]!=p[u])return!1;for(u=f.length-1;u>=0;u--)if(l=f[u],!c(e[l],t[l],n))return!1;return typeof e==typeof t}var a=Array.prototype.slice,i=n(211),s=n(210),c=e.exports=function(e,t,n){return n||(n={}),e===t||(e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():!e||!t||"object"!=typeof e&&"object"!=typeof t?n.strict?e===t:e==t:u(e,t,n))}},function(e,t){function n(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function r(e){return e&&"object"==typeof e&&"number"==typeof e.length&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();t=e.exports=o?n:r,t.supported=n,t.unsupported=r},function(e,t){function n(e){var t=[];for(var n in e)t.push(n);return t}t=e.exports="function"==typeof Object.keys?Object.keys:n,t.shim=n},,,,,,,,,,,,,,function(e,t){"use strict";var n={childContextTypes:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,mixins:!0,propTypes:!0,type:!0},r={name:!0,length:!0,prototype:!0,caller:!0,arguments:!0,arity:!0},o="function"==typeof Object.getOwnPropertySymbols;e.exports=function(e,t,u){if("string"!=typeof t){var a=Object.getOwnPropertyNames(t);o&&(a=a.concat(Object.getOwnPropertySymbols(t)));for(var i=0;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function u(e){return!e||!e.__v2_compatible__}function a(e){return e&&e.getCurrentLocation}t.__esModule=!0;var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function u(e,t){var n=e.history,r=e.routes,u=e.location,s=o(e,["history","routes","location"]);n||u?void 0:(0,c["default"])(!1),n=n?n:(0,f["default"])(s);var l=(0,d["default"])(n,(0,h.createRoutes)(r)),p=void 0;u?u=n.createLocation(u):p=n.listen(function(e){u=e});var y=(0,v.createRouterObject)(n,l);n=(0,v.createRoutingHistory)(n,l),l.match(u,function(e,r,o){t(e,r&&y.createLocation(r,i.REPLACE),o&&a({},o,{history:n,router:y,matchContext:{history:n,transitionManager:l,router:y}})),p&&p()})}t.__esModule=!0;var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function u(e){return function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=t.routes,r=o(t,["routes"]),u=(0,s["default"])(e)(r),i=(0,l["default"])(u,n);return a({},u,i)}}t.__esModule=!0;var a=Object.assign||function(e){for(var t=1;t=e&&c&&(i=!0,n()))}}var a=0,i=!1,s=!1,c=!1,l=void 0;u()}t.__esModule=!0;var r=Array.prototype.slice;t.loopAsync=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(){function e(e){try{e=e||window.history.state||{}}catch(t){e={}}var n=f.getWindowPath(),r=e,o=r.key,a=void 0;o?a=p.readState(o):(a=null,o=_.createKey(),m&&window.history.replaceState(u({},e,{key:o}),null));var i=c.parsePath(n);return _.createLocation(u({},i,{state:a}),void 0,o)}function t(t){function n(t){void 0!==t.state&&r(e(t.state))}var r=t.transitionTo;return f.addEventListener(window,"popstate",n),function(){f.removeEventListener(window,"popstate",n)}}function n(e){var t=e.basename,n=e.pathname,r=e.search,o=e.hash,u=e.state,a=e.action,i=e.key;if(a!==s.POP){p.saveState(i,u);var c=(t||"")+n+r+o,l={key:i};if(a===s.PUSH){if(g)return window.location.href=c,!1;window.history.pushState(l,null,c)}else{if(g)return window.location.replace(c),!1;window.history.replaceState(l,null,c)}}}function r(e){1===++b&&(P=t(_));var n=_.listenBefore(e);return function(){n(),0===--b&&P()}}function o(e){1===++b&&(P=t(_));var n=_.listen(e);return function(){n(),0===--b&&P()}}function a(e){1===++b&&(P=t(_)),_.registerTransitionHook(e)}function d(e){_.unregisterTransitionHook(e),0===--b&&P()}var v=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];l.canUseDOM?void 0:i["default"](!1);var y=v.forceRefresh,m=f.supportsHistory(),g=!m||y,_=h["default"](u({},v,{getCurrentLocation:e,finishTransition:n,saveState:p.saveState})),b=0,P=void 0;return u({},_,{listenBefore:r,listen:o,registerTransitionHook:a,unregisterTransitionHook:d})}t.__esModule=!0;var u=Object.assign||function(e){for(var t=1;t=0&&t=0&&y